Probleme mit Normalisierung von Vector.
-
Hallo zusammen.
Ich habe folgendes Problem.
Ich brauche den Normalisierten Vector von einem Punkt(Camerafocus) zu KameraPos.Ich meine noch so wie ich das mal gelernte zu haben scheine müsste das folgendermasen funktionieren.
//CamPos=(6.0,5.0,0.0) CamFocus=(2.0, 2.0, -5.0) // Kameravector ermitteln Pos - Focus weill die Richtung von Focus zu Pos benötigt wird. glm::vec3 CamDirection = (CamPos-CamFocus ); // Jetzt ist CamDirection=(4.0, 3.0, 5.0) float zErg = sqrt((CamDirection.x*CamDirection.x)+ (CamDirection.y*CamDirection.y) + (CamDirection.z*CamDirection.z)); // zErg=7.07106781 CamDirection /= zErg; // CamDirection=(0.565685451, 0.424264073, 0.707106769) // CamDirection muss normalisiert sein .Ist es aber nicht.
Ich weis nicht, was ich da falsch mache.
Vieleicht kann mir jemand auf die Sprünge helfen ?
Danke !
-
Wie stellst du fest, dass das Ergebnis nicht stimmt?
-
Weill die 3 Koordinaten in CamDirection miteinander addiert nicht 1 sondern >1
Ist 1.697056293
-
Andi0310 schrieb:
Weill die 3 Koordinaten in CamDirection miteinander addiert nicht 1 sondern >1
Ist 1.697056293
Das entspricht nicht der Definition eines normierten Vektors.
Ein Vektor ist genau dann normiert, wenn seine Länge 1 ist, und das ist bei deinem Ergebnis der Fall:... wenn man mal von den Rundungsfehlern absieht, die man im Umgang mit Fließkommazahlen immer mit drin hat.