Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Ich glaube, ich schrieb bereits, dass du den Winkel noch von Grad in Radiant umrechnen musst!
Außerdem würdest du den Punkt somit auf absolute 360° drehen, was dann nicht wieder dem Ausgangsbild entspricht, da dein Ausgangsbild keinen Winkel von 0° verwendet. Nach dem Drehen darfst auch nicht vergessen, den Positionsvektor wieder hinzuzuaddieren.
Edit: Ich empfehle immer noch, eine Matrix zu setzen und den Punkt dann mit D3DXVec3TransformCoord zu transformieren...
Zu deinem Edit: Ich will sie nicht um ihre rotieren sondern um meine Also so wie sie jetzt schaut einfach im kreis nach links drehen lassen.
@defaultplayer: Die ganz normale Kamera matrix Transformieren oder wie?
Nein, nehmen wir an, du schaust standardmäßig von Position (0/0/-10) in positive z-Richtung, also Richtung Ursprung (0/0/0). Weil die Länge nicht wirklich zählt, wählen wir für die Richtung, in die geschaut wird (0/0/1). Diese Richtung müssen wir jetzt drehen und schließlich zur Kameraposition hinzuaddieren:
1. Rotationsmatrix erstellen, damit wir den Punkt transformieren können:
Zu deinem Beispiel.
pAt(-1|-16|0)
Camera(-1|-40|-5)
Du willst die Kamera um die y-Achse deines Koordinatensystems drehen. Also brauchst du eigentlich nur den Abstand auf der x/z-Ebene von der Kamera zu deinem Punkt.
Der beträgt also 5. Wenn du nun auf 360 Grad drehst (also nicht UM 360 Grad), rechnest dir den sinuns und cosinus Wert aus.
sin(360) = 0
cos(360) = 1
Danach einfach mit der Länge multipliziert und zur Kameraposition dazu gerechnet.
pAt' = (-1 + 0 * 5|-16|-5 + 1 * 5) = (-1|-16|0)
Genau die gleichen Werte wie zu Beginn. Auch nicht weiter verwunderlich, weil du genau auf 0 grad bist, wenn du also auf 360 drehst, dann ändert sich nichts.
Du musst dir nur bewusst sein, dass du nicht UM 360 drehst, sondern AUF 360. Ich hoff, du verstehst den Unterschied.
EDIT: Ups, da war ich wohl wieder langsamer!
defaultplayer hat dir also nun auch einen Lösungsweg gezeicht, hab ihn mir aber nicht genauer angeschaut. Kannts ja mal beides ausprobieren.
EDIT2: Hier noch die Skizze, damit du nachvollziehen kannst, was ich mir dabei gedacht hab.
Ich hab mir ein kleines Pogramm geschrieben das mir sinus und cosinus auswirft aber der sagt mit das
sin(360) = 0.95896 --- 1
und
cos(360) = -0.283691 --- 0
also genau umgekehrt?
und bei anderen Zahlen wirds dann immer ungenauer
Hiermit schreibe ich dir jetzt zum dritten Mal, dass du den Winkel für sin und cos im Bogenmaß angeben musst!
bogen = grad / 180° * PI
bogen = 360° / 180° * PI = 2 * PI --> lass sin(2 * PI) berechnen und erhalte 0.00000 http://de.wikipedia.org/wiki/Bogenma%C3%9F
Edit: Wenn man -0.283691 auf 0 runden muss, sollte man aber auch misstrauisch werden
Hast eigentlich meine Lösung mit D3DXVec3TransformCoord getestet?