Positions bestimmung Kugel
-
Guten tag,
ich bin gerade dabei ein projekt in opengl zu realisieren und habe da probleme bei der bestimmung der punkte der kugel
Ich hab einen Kanonenturm mit rohr und will den end punkt des rohres bestimmen.
das funktioniert mit meinen code aber nur in der ebene und ich bin schon ewig am überlegen was ich falschgemacht hab.
canontowerrotate - drehwinkel in der ebene von 0-360
canonpiperotate - drehwinkel im raum von 0 - 45winkel = (2*M_PI)/360; kugelx = 2.9*sin((canontowerrotate+90)*winkel)*cos(canonpiperotate*winkel)+1 ; kugely = 2.9*sin((canontowerrotate+90)*winkel)*sin(canonpiperotate*winkel)+2; kugelz = 2.9*cos((canontowerrotate+90)*winkel);
wär echt sehr freundlich wenn mir da jemand helfen könnte
falls ich hier im falschen forum bin bitte verschieben
schon mal danke im vorraus
-
Dieser Thread wurde von Moderator/in volkard aus dem Forum C++ (auch C++0x und C++11) in das Forum Mathematik und Physik verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Woher weißt du denn, dass dein Ergebnis falsch ist?
-
Mals dir auf und schau genau nach wo welche Winkel benötigt werden um die Kordinaten x,y,z zu berechnen.
Vllt hilft: http://de.wikipedia.org/wiki/Kugelkoordinaten
Achte auf die Orientierung der Winkel, es zwingt dich natürlich niemand das so zu machen wie hier in dem Wiki Artikel.Ich sag nur soviel: die Verteilung der sin's und cos's sehen stimmig aus, aber die Winkel die du einsetzt ... hm ... schau dir das nochma an
-
das seh ich daran das ich eine kugel mit den positionen zeichnen lass und diese nicht mit der des ende des kanonenturms übereinstimmt.
um das problem noch mal zu konretisieren
winkel = (2*M_PI)/360; kugelx = 2.9*sin((canontowerrotate+90)*winkel)+1; kugely = 2.9*sin(canonpiperotate*winkel)+2; kugelz = 2.9*cos((canontowerrotate+90)*winkel);
dieser code berechnet die pos. von x und z wenn canonpiperotate=0 korrekt.
der y wert wird beim ändern von canonpiperotate auch korrekt.
bloß weiss ich es nicht wie ich es anstelle das der x/z wert auch korrekt werden wenn canonpiperotate != 0.
-
Ich versuch's mal zweistufig.
//lauf ist 2.9 Meter lang und dreht sich um den Ursprung
//zuerst den Lauf ansteilen
kugelx = 2.9*cos((canonpiperotate+90)*winkel);
kugelz = 2.9*sin((canonpiperotate+90)*winkel);//So, kugelz ist richtig und bleibt so.
//kugelx muss noch verdreht werden.
waagerechteLauflaenge=kugelx;
kugelx = waagerechteLauflaenge*cos((canontowerrotate+90)*winkel);
kugely = waagerechteLauflaenge*sin((canontowerrotate+90)*winkel);
-
Boar super im großen und ganzen klappt alles
vielen vielen Dank
ich bin daran schon fast wahsinning geworden^^
-
Bevor irgendjemand hier eine sinnvolle Antwort auf dein Problem geben kann, müssen wir erstmal klären, wie dein Koordinatensystem genau aussieht. Linkshändig oder rechtshändig? Zeigt z nach oben oder nach hinten oder nach vorne? ...
Edit: Ok, gut wenn es jetzt zufällig jemand erraten hat und nun alles klappt. Aber beim nächsten Mal dann bitte mehr Infos...
-
Hat sich erldigt dot, er hats abgetippelt aber wahrscheinlich nix gelernt dabei ...