1 van 1

Grafiek tekenen in opengl met c

Geplaatst: do 15 mei 2008, 17:15
door Jeroen
De opdracht was een differentiaalvergelijking nummeriek op te lossen door een programma te schrijven dat de resulterende functie in een grafiek plot.

Nu heb ik mijn nummerieke punten in een array staan, nu moet ik het alleen nog in een mooie grafiek zien te krijgen.

Ik heb dit geprobeerd:

Code: Selecteer alles

 

for (i=1;i<nr_steps;i++){

 drawLine(t,x[i-1],t+delta,x[i]);

 t+=delta;

}


delta is een klein stapje langs de t as, x[] is de array met de datapunten.

Het probleem is dat ik nu al die stukjes lijn die hij tekent bovenelkaar langs de y-as krijg. Als ze aanelkaar geplakt zouden worden, heads-to-tail, dan zou de grafiek goed zijn (zo aan de lijnstukjes te zien).

Hoe krijg ik dit voorelkaar, wat doe ik hier fout?

Re: Grafiek tekenen in opengl met c

Geplaatst: do 15 mei 2008, 17:20
door jhnbk
for (i=1;i<nr_steps;i++){

drawLine(t-delta,x[i-1],t,x);

t+=delta;

}

Het lijkt mij dat je t-delta moet doen om je logische reeks verder te zetten. Lost dit je probleem op?

Re: Grafiek tekenen in opengl met c

Geplaatst: do 15 mei 2008, 17:32
door Jeroen
Helaas, nu krijg al die lijnstukjes gewoon links van y-as, alsof ik er een spiegel tegenaan gelegd heb...

Re: Grafiek tekenen in opengl met c

Geplaatst: do 15 mei 2008, 17:51
door jhnbk
Is het niet simpeler om twee arrays te maken: één voor de x en de andere voor de y coördinaat? Dan zou het zeker geen probleem mogen vormen. Dan heb je voor elke index het juiste punt.

Ik zie echter niet wat er fout loopt. Mogelijk iets met die t omdat de stukjes boven elkaar worden geplot. Kan je meer code posten?

Re: Grafiek tekenen in opengl met c

Geplaatst: do 15 mei 2008, 22:31
door Jeroen
Het was een beetje een domme fout van mij, ik had t als integer en delta als float. Het programma weet dan blijbaar niet wat hij daarvan moet maken als ik die bijelkaar optel. Het werkt nu helemaal. :D

Re: Grafiek tekenen in opengl met c

Geplaatst: vr 16 mei 2008, 08:32
door jhnbk
Ahzo dat kon ik niet zien vanuit de code die je post.

int t;

float delta;

t+=delta telt dan een float bij een integer op dus zal de float moeten geconverteerd worden naar int. Als delta<0 dan is je waarde in int waarschijnlijk 0.

Re: Grafiek tekenen in opengl met c

Geplaatst: vr 16 mei 2008, 12:48
door Jeroen
Had je inderdaad niet kunnen zien nee, mijn fout. Ik had er ook niet aan gedacht dat het buiten dit stukje code fout was, vandaar dat ik niet meer gepost had :D .