From c833b8177b73d5d90c2e8745578a415c1e6ca65c Mon Sep 17 00:00:00 2001 From: docentYT <63965954+docentYT@users.noreply.github.com> Date: Tue, 5 May 2026 23:02:16 +0200 Subject: [PATCH] Use glm::dvec3 for Camera LookAt/init Update Init(...) parameters to glm::dvec3, change LookAt to glm::dvec3 and adjust Camera.cpp to remove redundant glm::dvec3 casts (lookAt call and vector subtraction). These changes improve precision for camera lookAt vector in world coordinates above 4 digits --- vehicle/Camera.cpp | 6 +++--- vehicle/Camera.h | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/vehicle/Camera.cpp b/vehicle/Camera.cpp index d5216930..0b6f127d 100644 --- a/vehicle/Camera.cpp +++ b/vehicle/Camera.cpp @@ -21,7 +21,7 @@ http://mozilla.org/MPL/2.0/. //--------------------------------------------------------------------------- -void TCamera::Init(glm::vec3 const &NPos, glm::vec3 const &NAngle /*, TCameraType const NType*/, TDynamicObject *Owner) +void TCamera::Init(glm::dvec3 const &NPos, glm::dvec3 const &NAngle /*, TCameraType const NType*/, TDynamicObject *Owner) { vUp = { 0, 1, 0 }; @@ -209,7 +209,7 @@ bool TCamera::SetMatrix( glm::dmat4 &Matrix ) { if( ( m_owner != nullptr ) && ( false == DebugCameraFlag ) ) { - Matrix *= glm::lookAt(Pos, glm::dvec3{ LookAt }, glm::dvec3{ vUp } ); + Matrix *= glm::lookAt(Pos, LookAt, glm::dvec3{ vUp } ); } else { Matrix = glm::translate( Matrix, -Pos ); // nie zmienia kierunku patrzenia @@ -220,7 +220,7 @@ bool TCamera::SetMatrix( glm::dmat4 &Matrix ) { void TCamera::RaLook() { // zmiana kierunku patrzenia - przelicza Yaw - auto where = glm::dvec3(LookAt )- Pos /*+ Math3D::vector3(0, 3, 0)*/; // trochę w górę od szyn + auto where = LookAt - Pos /*+ Math3D::vector3(0, 3, 0)*/; // trochę w górę od szyn if( ( where.x != 0.0 ) || ( where.z != 0.0 ) ) { Angle.y = atan2( -where.x, -where.z ); // kąt horyzontalny m_rotationoffsets.y = 0.0; diff --git a/vehicle/Camera.h b/vehicle/Camera.h index 9498c349..4b91caf2 100644 --- a/vehicle/Camera.h +++ b/vehicle/Camera.h @@ -17,7 +17,7 @@ http://mozilla.org/MPL/2.0/. class TCamera { public: // McZapkie: potrzebuje do kiwania na boki - void Init(glm::vec3 const &Location, glm::vec3 const &Angle, TDynamicObject *Owner); + void Init(glm::dvec3 const &Location, glm::dvec3 const &Angle, TDynamicObject *Owner); void Reset(); void OnCursorMove(double const x, double const y); bool OnCommand( command_data const &Command ); @@ -27,7 +27,7 @@ class TCamera { glm::vec3 Angle; // pitch, yaw, roll glm::dvec3 Pos; // współrzędne obserwatora - glm::vec3 LookAt; // współrzędne punktu, na który ma patrzeć + glm::dvec3 LookAt; // Idealnie gdyby był to znormalizowany kierunek, ale obecnie są to współrzędne punktu, na który ma patrzeć glm::vec3 vUp; glm::dvec3 Velocity;