3D Wellen darstellen, Performance...
-
Hi,
Ich versuch mich im Moment an 3D-Wellendarstellungen, hab das jetzt alles mit OpenGL hinbekommen nur jetzt hab ich ganz einfach mal wieder riesige Performance Probleme... Im Moment stelle ich die Wellen als "2D"-Kreise dar, die in der (x,z)-Ebene liegen und bei denen ich somit nur die y-Werte ändere, um Berge und Täler darzustellen.
Hier mein Code:for(xsin=0;xsin<0.4f;xsin+=0.001) //Welle bis 0.4m zeichnen { ysin=0.01*sin(150*(t-(xsin-0.01))); //Hier wird die Höhe der Welle und somit des "Wellen"-Kreises berechnet, der dann einen Teilring der Welle formt //t wird im Moment noch vernachlässigt (=0), weils bei der Berechnung schon viel zu lange dauert... An Animation ist im Moment also noch nicht zu denken r=xsin; //Radius if(ysin>=0.005) //Nur Wellenberge zeichnen, spart gut die Hälfte der Kreise { for(alpha=0;alpha<=2*Pi;alpha+=0.001) //Kreis zeichnen, mit der Höhe ysin, was den y-Wert der Welle an der Stelle xsin darstellt { cz=r*sin(alpha); cx=r*cos(alpha); glVertex3f(cx,ysin,cz); //Koordinaten an denen der Punkt gesetzt werden soll } } }
Das hier scheint allerdings ein ziemlich schlechter Weg zu sein, obwohl das bisher der einzige war, der mir auf Anhieb eingefallen ist... Also, wie macht man das "richtig"?
-
hmm... vielleicht kann man da einiges vorberechnen. Wenn die Wellen zeitunabhängig sind kannst du dir ja ein Dreiecksnetz generieren, welches dann angezeigt wird. Bei Zeitabhängigkeit kann man ja vielleicht die Periodizität ausnutzen. Zum Beispiel ein Wellental / -berg linear vom Ursprung wegbewegen.
-
Habs jetzt mal durchgerechnet, das sind 2370 Schleifendurchläufe mit folgenden Abstrichen:
- Es werden nur Wellenberge gezeichnet
- Und nur Halbkreise (eigt. nur 1/4 Kreise, der andere 1/4 Kreis lässt sich ja dann ohne Winkelfkt. ausrechnen, also ohne erneuten Schleifendurchlauf)
-
Kannst Du Dich bitte für ein Forum entscheiden, in dem Du diese Frage diskutieren möchtest? -- Ich mache hier mal zu.
Das Crossposting gibt's hier: http://www.c-plusplus.net/forum/viewtopic-var-p-is-1392576.html#1392576