Grafik/Integration

Tutorials.at
Verfügbare Informationen zu "Grafik/Integration"

  • Qualität des Beitrags: 0 Sterne
  • Beteiligte Poster: Olli - Dragorad - Moritz - wirthi
  • Forum: Tutorials.at
  • Forenbeschreibung: Programmierforum
  • aus dem Unterforum: Pascal
  • Antworten: 11
  • Forum gestartet am: Mittwoch 19.04.2006
  • Sprache: deutsch
  • Link zum Originaltopic: Grafik/Integration
  • Letzte Antwort: vor 16 Jahren, 2 Monaten, 24 Tagen, 7 Stunden, 8 Minuten
  • Alle Beiträge und Antworten zu "Grafik/Integration"

    Re: Grafik/Integration

    Olli - 27.01.2008, 00:06

    Grafik/Integration
    Hallo, da wir uns in der Schule ind en Fächern Mathe und Physik seit längerem mit dem Thema der Integralrechnung beschäftigen wollte ich mir ein Programm schrieben, das dies anschaulich darstellt.

    Die Flächen ausrechnen klappt mit einem Programm problemlos, es hängt bloß noch etwas an der grafischen Ausgabe.

    Wenn man das Programm startet werden die waagerechten Balken i-wie verkehrt gesetzt, also nicht so wie ich es will. Ein anderes Problem ist, das der Grafikmodus in Pascal leider nur integer-variablen zulässt, und wenn man dann seien eigene Intervallänge eingibt kann diese halt nur eine gerade Zahl, also aus integer sein. Dieses Problem habe ich versucht zu umgehen indem ich alle x Werte um den Faktor 10 erweiterte, jedeoch kann ich so immer noch keine balken zwischen den Werten 1 und 2 angeben, es wird halt nur übersichtlicher, jeodch nicht genauer.

    Würde mich über Hilfe sehr freuen. MfG Olli

    Hier das Programm
    Code:
    program grafik;
    uses crt, graph;
    var
    x , y, index, treiber, modus, min, max, abst, il : integer;

    begin
    writeln('Startwert, endwert und Intervall„nge:   ');
    readln(min);
    readln(max);
    readln(il);
    detectgraph(treiber, modus);
    initgraph(treiber, modus, 'C:\Turbo\BGI');
    line(500,0,500,1000);
    line(0,500,1000,500);
    for index := -20 to 20 do
    begin
    x := index;
    y := x * x ;
    x := x * 10;
    x := (500 - x)  ;
    y := (500 - y)  ;
    putpixel(x,y,4);
    end;

    x := min;
    for index := -30 to 30 do
    begin
    x := index;
    y := x * x;
    x := x * 10;
    x := (500-x);
    y := (500-y);
    line(x,500,x,y);
    delay(100);
    x := x + 10;
    line(x,500,x,y);
    delay(100);
    end;
    readln;
    closegraph;
    end.



    Re: Grafik/Integration

    Dragorad - 27.01.2008, 00:41


    Zitat: for index:= -20 to 20 do
    begin
    x:=index;
    y:=x*x;
    x:=x*10;
    x:=(500-x);
    y:=(500-y);
    putpixel(x,y,4);
    end;


    Kannst du diesen Abschnitt mal näher erläutern, was genau in der schleife passiert?



    Re: Grafik/Integration

    Olli - 27.01.2008, 02:00


    Also eigentlich wollte ich die ingabe der Funktion dem Benutzer überlassen aber hier habe ich das intervall und die Funktion (x^2) schon vorgegeben.

    for index:= -20 to 20 do
    begin
    x:=index;
    y:=x*x;
    x:=x*10;
    x:=(500-x);
    y:=(500-y);
    putpixel(x,y,4);
    end;

    Für die x Werte -20 bis 20 berechne ich die y werte. x := index hab ich benutzt, da ich index als variable nicht verändern kann. x * x steht also für die fktion x^2.

    x * 10 ist einfach nur der streckfaktor damit es übersichtlicher aussieht.

    500 - x/y musste ich verwenden, da der grafikmodus so aufgeteilt ist das oben links der punkt (0/0) und unten rechts der punkt (1000/1000) ist.

    Meine koordinatenachsen hab ich ja vorher schon so gelegt:

    line(500,0,500,1000);
    line(0,500,1000,500);

    und durch meien rechnung ( 500 -x bzw y ) kann ich davon ausgehen das ich ein normales Koordinatensystem vor mir hab.

    Mittlerwieel hab ich eine kleine veränderung in mein programm eingebaut so dass die linke seite jetzt richtig dargestellt wird:

    for index := -30 to 30 do
    begin
    x := index;
    y := x * x;
    x := x * 10;
    x := (500-x);
    y := (500-y);
    line(x,500,x,y);
    delay(100);
    x := x + 10;
    line(x,500,x,y);
    wambo := x + 10;
    if x > 500 then
    begin
    wambo := x + 10;
    line(x,y,wambo,y);
    end
    else
    begin
    wambo := x -10;
    line(x,y,wambo,y);
    end;

    delay(100);
    end;

    mein Problem ist jetzt, das ich die Intervallänge nur als ganez zahl angeben kann. Würde ich als intervallänge z.B. o,5 nehmen müsste ich f(0,5) = 2,5 berechnen. Dies ist aber leider keien Integer variable und somit nicht möglich

    MfG Olli



    Re: Grafik/Integration

    Moritz - 27.01.2008, 21:22


    gab es da nicht mal so eine trunc-function??



    Re: Grafik/Integration

    Dragorad - 28.01.2008, 21:41


    So ganz spontan würde ich einfach mal sagen, dass du die Intervalllänge als Realzahl deklarierst ... (:?:)



    Re: Grafik/Integration

    Olli - 31.01.2008, 17:03


    Ja, so ganz spontan würd ich das auch sagen aber wenn ich dann maln bisschen weiter denk komm ich drauf das man im Grafikmodus nur integer variblen verwenden kann^^



    Re: Grafik/Integration

    Dragorad - 31.01.2008, 22:22


    Das ist ja ein doofer Grafikmodus :)

    Dann würde ich versuchen, ein Pixel als eine Einheit zu definieren, vlt geht das brsser ...



    Re: Grafik/Integration

    Olli - 02.02.2008, 01:52


    Hmm, wie genau stellst du dir das vor, ich steh gard aufm schlauch xD

    Ich hab mir nur garde gedacht ich könnte einafch jede Zahl mit 10 multiplizieren, dann würde ich keien kommazahlen mehr bekommen aber ich bin nicht so sicher ob da sauch klappt, ich probiers eianfch mal.

    Hasu vllt nen Compiler, bei dem im Grafikmodus auch Kommazahlen funktionieren, und der sich gut eignet solche mathematischen Sachen zu programmieren?

    MfG Olli



    Re: Grafik/Integration

    wirthi - 02.02.2008, 11:28


    Die letztendliche Anzeige am Bildschirm wird immer nur Ganzzahlen unterstützten, da gängige Displays halt auf Pixel aufbauen und eine gewisse Auflösung haben.

    Was du möglicherweise willst, ist sowas wie "Anti-Aliasing" - also dass eine schwarze Linie auf weißem Grund nicht wie eine gerade, aber pixelige Treppe ausschaut, sondern dass links und rechts von der Stufe auch Grauwerte angezeigt werden (guckst du). Derartiges werden dir Grafiklibraries schon leisten können, und die verlangen dann auch oft Kommazahlen als Eingabe. Du brauchst sowas aber vermutlich nicht auf Linien-sondern auf Pixel-Basis; da dürfte es schon schwieriger werden ...



    Re: Grafik/Integration

    Olli - 02.02.2008, 14:04


    Hmm, hättest du dann ein Programm, das ich benutzen könnte. Mein Programm zum berechnen der Fläche sieht folgendermaßen aus:

    program integral;
    var
    min , max, flache, il, y, x : real;
    index, i, ia : integer;
    aw : char;
    r, l : integer;

    begin
    writeln('Waehlen sie bitte eine Funktion aus: ');
    writeln(' 1 ---> x^2');
    readln(aw);
    writeln('Geben sie die Intervalllaenge an: ');
    readln(il);

    case aw of
    '1' :
    begin
    writeln('Ihr Startwert: ');
    readln(min);
    writeln('Ihr Endwert: ');
    readln(max);
    flache := 0;
    x := min + il; {Ab hier das wesentliche}
    while x <= max do
    begin
    y := x * x;
    x := x + il;
    flache := flache + ( il * y);
    x := (x + il); {bis hier das wesentliche}
    r := round(x);
    l := round(y);
    writeln('x,y',x:5:2,y:5:2);
    writeln('r,l',r,l);
    end;
    writeln(flache:4:2);
    end;
    end;
    readln;
    end.

    Das ganze were theoretisch so einfach: Ich müsste einfach nur von (x/0) - (x/ y) eine linie ziehen, dann noch eien von (x+il/0) - (x+il/y), das wären die senkrechten. Und dann noch eien Linie von (x/y) - (x+il/y). Wenn ein Grafikmodus das könnte, wer ich sehr zufrieden^^

    MfG Olli



    Re: Grafik/Integration

    wirthi - 02.02.2008, 14:20


    Dein Grafikmodus kann "das" prinzipiell schon. Du musst nur die Punkte halt vor dem Zeichnen auf ganze Zahlen runden. Was der Grafikmodus nicht kann, ist anti-aliasing. Das macht das Bild schöner, aber nicht inhaltlich besser.

    "Genauer" wie du in deinem ersten Posting schreibst kann es aber ohnehin nicht werden. Der Bildschirm besteht halt nun mal aus Pixel, und du kannst nicht halbe Pixel zeichnen.



    Mit folgendem Code, können Sie den Beitrag ganz bequem auf ihrer Homepage verlinken



    Weitere Beiträge aus dem Forum Tutorials.at

    Umrechner Arabische in Römische Zahlen - gepostet von Walgo am Donnerstag 19.07.2007
    Programmierung einer Schliessung - gepostet von ChillerT am Dienstag 06.02.2007
    OpenGl Tutorial - gepostet von c# am Dienstag 26.06.2007
    Was spielt ihr so? - gepostet von ggspp am Montag 30.04.2007
    Volumenrechner [Erledigt] - gepostet von AQE89 am Sonntag 28.05.2006
    C-Programm aus C-Programm starten ??? - gepostet von Stevox am Mittwoch 13.12.2006
    @DrPhil_Guth und andere Linux User - gepostet von vpascal am Montag 28.05.2007
    Mp3 Tag lesen ? - gepostet von exbs am Dienstag 09.01.2007



    Ähnliche Beiträge wie "Grafik/Integration"

    Grafik - bourn91 (Dienstag 05.12.2006)
    grafik - Voodo (Mittwoch 21.02.2007)
    GRAFIK KOMISCH - YugoMafia (Donnerstag 02.03.2006)
    Wie wollt ihr die Grafik von G3 haben? - Anonymous (Donnerstag 03.02.2005)
    Grafik - Harun (Dienstag 19.12.2006)
    Monstersgame: Neue Grafik - Dark (Montag 30.01.2006)
    Probleme mit der Grafik? Hehehe! XD Ich weiß was! :D - D-Kopanitsak (Samstag 09.12.2006)
    Grafik-Design | Panzer | PowerUp (Prototyp) - Lukas (Montag 18.12.2006)
    Grafik - elmariachi (Freitag 05.01.2007)
    C und Grafik ?? - Dirty Oerty (Donnerstag 04.01.2007)