[Orxonox-commit 5085] r9749 - code/branches/radarDreiD/src/libraries/util

wroennin at orxonox.net wroennin at orxonox.net
Mon Nov 4 16:32:44 CET 2013


Author: wroennin
Date: 2013-11-04 16:32:43 +0100 (Mon, 04 Nov 2013)
New Revision: 9749

Modified:
   code/branches/radarDreiD/src/libraries/util/Math.cc
Log:
Math.cc:get3DProjection: transformation changed

Modified: code/branches/radarDreiD/src/libraries/util/Math.cc
===================================================================
--- code/branches/radarDreiD/src/libraries/util/Math.cc	2013-11-04 15:16:32 UTC (rev 9748)
+++ code/branches/radarDreiD/src/libraries/util/Math.cc	2013-11-04 15:32:43 UTC (rev 9749)
@@ -210,26 +210,28 @@
     	orxonox::Vector3 distance = otherposition - myposition;
 
     	// new coordinate system base y_coordinate
-    	orxonox::Vector3 myside = -mydirection.crossProduct(myorthonormal);
+    	orxonox::Vector3 myside = mydirection.crossProduct(-myorthonormal);
 
     	// inverse of the transform matrix
     	float determinant = +mydirection.x * (myside.y*myorthonormal.z - myorthonormal.y*myside.z)
     						-mydirection.y * (myside.x*myorthonormal.z - myside.z*myorthonormal.x)
     						+mydirection.z * (myside.x*myorthonormal.y - myside.y*myorthonormal.x);
     	float invdet = 1/determinant;
+
+    	// transform matrix
     	orxonox::Vector3 xinvtransform;
     	orxonox::Vector3 yinvtransform;
     	orxonox::Vector3 zinvtransform;
 
-    	xinvtransform.x =  (myside.y      * myorthonormal.z - myorthonormal.y * myside.z       )*invdet;
-    	yinvtransform.x = -(mydirection.y * myorthonormal.z - mydirection.z   * myorthonormal.y)*invdet;
-    	zinvtransform.x =  (mydirection.y * myside.z        - mydirection.z   * myside.y       )*invdet;
-    	xinvtransform.y = -(myside.x      * myorthonormal.z - myside.z        * myorthonormal.x)*invdet;
-    	yinvtransform.y =  (mydirection.x * myorthonormal.z - mydirection.z   * myorthonormal.x)*invdet;
-    	zinvtransform.y = -(mydirection.x * myside.z        - myside.x        * mydirection.z  )*invdet;
-    	xinvtransform.z =  (myside.x      * myorthonormal.y - myorthonormal.x * myside.y       )*invdet;
-    	yinvtransform.z = -(mydirection.x * myorthonormal.y - myorthonormal.x * mydirection.y  )*invdet;
-    	zinvtransform.z =  (mydirection.x * myside.y        - myside.x        * mydirection.x  )*invdet;
+    	xinvtransform.x = (myside.y        * myorthonormal.z - myorthonormal.y * myside.z       )*invdet;
+    	xinvtransform.y = (mydirection.z   * myorthonormal.y - mydirection.y   * myorthonormal.z)*invdet;
+    	xinvtransform.z = (mydirection.y   * myside.z        - mydirection.z   * myside.y       )*invdet;
+    	yinvtransform.x = (myside.z        * myorthonormal.x - myside.x        * myorthonormal.z)*invdet;
+    	yinvtransform.y = (mydirection.x   * myorthonormal.z - mydirection.z   * myorthonormal.x)*invdet;
+    	yinvtransform.z = (myside.x        * mydirection.z   - mydirection.x   * myside.z       )*invdet;
+    	zinvtransform.x = (myside.x        * myorthonormal.y - myorthonormal.x * myside.y       )*invdet;
+    	zinvtransform.y = (myorthonormal.x * mydirection.y   - mydirection.x   * myorthonormal.y)*invdet;
+    	zinvtransform.z = (mydirection.x   * myside.y        - myside.x        * mydirection.y  )*invdet;
 
     	// coordinate transformation
     	distance.x = (xinvtransform.x + yinvtransform.x + zinvtransform.x) * distance.x;
@@ -237,14 +239,14 @@
     	distance.z = (xinvtransform.z + yinvtransform.z + zinvtransform.z) * distance.z;
 
     	// cap vector for map
-    	distance.x = clamp<float>(distance.x, -detectionlimit/5, detectionlimit/5);
-    	distance.y = clamp<float>(distance.y, -detectionlimit/5, detectionlimit/5);
-    	distance.z = clamp<float>(distance.z, -detectionlimit/5, detectionlimit/5);
-    	float distancelength = distance.length();
-    	distance = distance / distancelength;
+    	//distance.x = clamp<float>(distance.x, -detectionlimit/5, detectionlimit/5);
+    	//distance.y = clamp<float>(distance.y, -detectionlimit/5, detectionlimit/5);
+    	//distance.z = clamp<float>(distance.z, -detectionlimit/5, detectionlimit/5);
+    	//float distancelength = distance.length();
+    	distance = 5 * distance / detectionlimit;
 
     	// project vector for the rotated 3DMap on screen
-    	float xcoordinate = distance.y;
+    	float xcoordinate = -distance.y; // -; cause in room myside points to the left, on screen x to the right
     	float ycoordinate = (distance.x*sin(mapangle)+distance.z*cos(mapangle));
     	return orxonox::Vector2(xcoordinate , ycoordinate);
     }




More information about the Orxonox-commit mailing list