Springen naar inhoud

Grafiek tekenen in opengl met c


  • Log in om te kunnen reageren

#1

Jeroen

    Jeroen


  • >250 berichten
  • 351 berichten
  • Ervaren gebruiker

Geplaatst op 15 mei 2008 - 16:15

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:


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?
Nothing to see here, move along...

Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2

jhnbk

    jhnbk


  • >5k berichten
  • 6905 berichten
  • VIP

Geplaatst op 15 mei 2008 - 16:20

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

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

}

Het lijkt mij dat je t-delta moet doen om je logische reeks verder te zetten. Lost dit je probleem op?
Het vel van de beer kunnen verkopen vraagt moeite tenzij deze dood voor je neervalt. Die kans is echter klein dus moeten we zelf moeite doen.

#3

Jeroen

    Jeroen


  • >250 berichten
  • 351 berichten
  • Ervaren gebruiker

Geplaatst op 15 mei 2008 - 16:32

Helaas, nu krijg al die lijnstukjes gewoon links van y-as, alsof ik er een spiegel tegenaan gelegd heb...
Nothing to see here, move along...

#4

jhnbk

    jhnbk


  • >5k berichten
  • 6905 berichten
  • VIP

Geplaatst op 15 mei 2008 - 16:51

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?
Het vel van de beer kunnen verkopen vraagt moeite tenzij deze dood voor je neervalt. Die kans is echter klein dus moeten we zelf moeite doen.

#5

Jeroen

    Jeroen


  • >250 berichten
  • 351 berichten
  • Ervaren gebruiker

Geplaatst op 15 mei 2008 - 21:31

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
Nothing to see here, move along...

#6

jhnbk

    jhnbk


  • >5k berichten
  • 6905 berichten
  • VIP

Geplaatst op 16 mei 2008 - 07:32

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.
Het vel van de beer kunnen verkopen vraagt moeite tenzij deze dood voor je neervalt. Die kans is echter klein dus moeten we zelf moeite doen.

#7

Jeroen

    Jeroen


  • >250 berichten
  • 351 berichten
  • Ervaren gebruiker

Geplaatst op 16 mei 2008 - 11:48

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.
Nothing to see here, move along...





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures