Fix:Core:Fixed transformation with ENABLE_ROLL off
authormartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>
Fri, 2 Jan 2009 17:46:07 +0000 (17:46 +0000)
committermartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>
Fri, 2 Jan 2009 17:46:07 +0000 (17:46 +0000)
git-svn-id: https://navit.svn.sourceforge.net/svnroot/navit/trunk@1880 ffa7fe5e-494d-0410-b361-a75ebd5db220

navit/navit/transform.c
navit/navit/transform.h

index 850886c..22acc1c 100644 (file)
@@ -108,11 +108,11 @@ transform_setup_matrix(struct transformation *t)
        t->m22=pitchc*rollc*fac;
 #else
         t->m00=yawc*fac;
-        t->m01=-yaws*fac;
-       t->m10=-pitchc*yaws*fac;
-       t->m11=-pitchc*yawc*fac;
+        t->m01=yaws*fac;
+       t->m10=(-pitchc*yaws)*(-fac);
+       t->m11=pitchc*yawc*(-fac);
        t->m20=pitchs*yaws*fac;
-       t->m21=pitchs*yawc*fac;
+       t->m21=(-pitchs*yawc)*fac;
 #endif
        t->offz=0;
        t->xyscale=1;
@@ -142,7 +142,7 @@ transform_setup_matrix(struct transformation *t)
        t->im21=(t->m01*t->m20-t->m00*t->m21)/det;
        t->im22=(t->m00*t->m11-t->m01*t->m10)/det;
 #else
-       det=((double)t->m00*(double)t->m11-(double)t->m01*(double)t->m10)*t->xyscale;
+       det=((double)t->m00*(double)t->m11-(double)t->m01*(double)t->m10);
        t->im00=t->m11/det;
        t->im01=-t->m01/det;
        t->im10=-t->m10/det;
@@ -530,7 +530,7 @@ transform_set_roll(struct transformation *this_,int roll)
        transform_setup_matrix(this_);
 }
 
-void
+int
 transform_get_roll(struct transformation *this_)
 {
        return this_->roll;
index b9528c7..250443a 100644 (file)
@@ -54,10 +54,8 @@ void transform_set_yaw(struct transformation *t,int yaw);
 int transform_get_yaw(struct transformation *this_);
 void transform_set_pitch(struct transformation *this_,int pitch);
 int transform_get_pitch(struct transformation *this_);
-#ifdef ENABLE_ROLL
 void transform_set_roll(struct transformation *this_,int roll);
 void transform_get_roll(struct transformation *this_);
-#endif
 void transform_set_distance(struct transformation *this_,int distance);
 int transform_get_distance(struct transformation *this_);
 struct map_selection *transform_get_selection(struct transformation *this_, enum projection pro, int order);