Verfügbare Informationen zu "Grafik/Integration"
Qualität des Beitrags: 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:06Grafik/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)