[Orxonox-commit 5122] r9787 - in code/branches/radarDreiD/src: libraries/util modules/overlays/hud

wroennin at orxonox.net wroennin at orxonox.net
Mon Nov 18 13:54:41 CET 2013


Author: wroennin
Date: 2013-11-18 13:54:40 +0100 (Mon, 18 Nov 2013)
New Revision: 9787

Modified:
   code/branches/radarDreiD/src/libraries/util/Math.cc
   code/branches/radarDreiD/src/modules/overlays/hud/HUDRadar.cc
Log:
Math.cc: fixed Transformation; HUDRadar.cc: added transparence setting

Modified: code/branches/radarDreiD/src/libraries/util/Math.cc
===================================================================
--- code/branches/radarDreiD/src/libraries/util/Math.cc	2013-11-14 14:46:05 UTC (rev 9786)
+++ code/branches/radarDreiD/src/libraries/util/Math.cc	2013-11-18 12:54:40 UTC (rev 9787)
@@ -212,16 +212,16 @@
     	// new coordinate system:	x_axsis:	mydirection		(points front)
     	//							y_axsis:	myorthonormal	(points up)
     	//							z_axsis:	myside			(points right)
-    	orxonox::Vector3 myside = mydirection.crossProduct(myorthonormal);
-    	orxout() << "mydirection " << mydirection << endl;
-    	orxout() << "mydirection.lenght " << mydirection.length() << endl;
-    	orxout() << "myorthonormal " << myorthonormal << endl;
-    	orxout() << "myorthonormal.lenght " << myorthonormal.length() << endl;
-    	orxout() << "myside " << myside << endl;
-    	orxout() << "myside.lenght " << myside.length() << endl;
 
-    	distance = 5 * distance / detectionlimit; // shrink vector on map
+    	orxonox::Vector3 myside = mydirection.crossProduct(myorthonormal); // get vector from Ship to object
 
+    	distance = 4*distance / detectionlimit; // shrink vector on map
+    	if(distance.length() > 1.0f) // if object would wander outside of the map
+    	    	{
+    	    	distance = distance / distance.length();
+    	   		}
+
+
     	// inverse of the transform matrix
     	float determinant = +mydirection.x * (myorthonormal.y*myside.z - myside.y*myorthonormal.z)
     						-mydirection.y * (myorthonormal.x*myside.z - myorthonormal.z*myside.x)
@@ -244,11 +244,12 @@
     	zinvtransform.z = (mydirection.x   * myorthonormal.y - myorthonormal.x * mydirection.y  )*invdet;
 
     	// coordinate transformation
-    	distance.x = xinvtransform.x * distance.x + yinvtransform.x * distance.y + zinvtransform.x * distance.z;
-    	distance.y = xinvtransform.y * distance.x + yinvtransform.y * distance.y + zinvtransform.y * distance.z;
-    	distance.z = xinvtransform.z * distance.x + yinvtransform.z * distance.y + zinvtransform.z * distance.z;
+    	orxonox::Vector3 distanceShip;
+    	distanceShip.x = xinvtransform.x * distance.x + yinvtransform.x * distance.y + zinvtransform.x * distance.z;
+    	distanceShip.y = xinvtransform.y * distance.x + yinvtransform.y * distance.y + zinvtransform.y * distance.z;
+    	distanceShip.z = xinvtransform.z * distance.x + yinvtransform.z * distance.y + zinvtransform.z * distance.z;
 
-    	// cap vector for map
+    	// cap vector for map if its to long
     	//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);
@@ -256,11 +257,11 @@
 
 
     	// project vector for the rotated 3DMap on screen
-    	float xcoordinate = distance.z;
-    	float ycoordinate = distance.y;
+    	//float xcoordinate = distance.z;
+    	//float ycoordinate = distance.y;
 
-    	//float xcoordinate = distance.z; // z; cause z direction is to the side
-    	//float ycoordinate = distance.x*sin(mapangle)+distance.y*cos(mapangle);// -; cause on screen y coordinate points down
+    	float xcoordinate = distanceShip.z; // z; cause z direction is to the side
+    	float ycoordinate = distanceShip.x*sin(mapangle)+distanceShip.y*cos(mapangle);// -; cause on screen y coordinate points down
     	return orxonox::Vector2(xcoordinate , ycoordinate);
     }
 

Modified: code/branches/radarDreiD/src/modules/overlays/hud/HUDRadar.cc
===================================================================
--- code/branches/radarDreiD/src/modules/overlays/hud/HUDRadar.cc	2013-11-14 14:46:05 UTC (rev 9786)
+++ code/branches/radarDreiD/src/modules/overlays/hud/HUDRadar.cc	2013-11-18 12:54:40 UTC (rev 9787)
@@ -170,6 +170,13 @@
             // calc position on radar...
             //Vector2 coord = get2DViewcoordinates(this->owner_->getPosition(), this->owner_->getOrientation() * WorldEntity::FRONT, this->owner_->getOrientation() * WorldEntity::UP, wePointer->getWorldPosition());
             Vector2 coord = get3DProjection(this->owner_->getPosition(), this->owner_->getOrientation() * WorldEntity::FRONT, this->owner_->getOrientation() * WorldEntity::UP, wePointer->getWorldPosition(), 0.6435011, detectionLimit_);
+            if(coord.y < 0)
+            	{
+            	orxonox::ColourValue color = it->second->getColour();
+            	color.a = 0.5f;
+            	it->second->setColour(color);
+            	}
+
             coord *= math::pi / 3.5f; // small adjustment to make it fit the texture
             it->second->setPosition((1.0f + coord.x - size) * 0.5f, (1.0f - coord.y - size) * 0.5f);
 




More information about the Orxonox-commit mailing list