[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