|
From: <axl...@us...> - 2010-04-22 00:01:43
|
Revision: 693
http://hgengine.svn.sourceforge.net/hgengine/?rev=693&view=rev
Author: axlecrusher
Date: 2010-04-22 00:01:37 +0000 (Thu, 22 Apr 2010)
Log Message:
-----------
construct can construct bounding boxes around triangles
can be used for terrain collision
Modified Paths:
--------------
Mercury2/src/DataTypes/MTriangle.cpp
Mercury2/src/DataTypes/MTriangle.h
Modified: Mercury2/src/DataTypes/MTriangle.cpp
===================================================================
--- Mercury2/src/DataTypes/MTriangle.cpp 2010-04-20 15:47:42 UTC (rev 692)
+++ Mercury2/src/DataTypes/MTriangle.cpp 2010-04-22 00:01:37 UTC (rev 693)
@@ -14,7 +14,6 @@
m_verts[0] = t.m_verts[0];
m_verts[1] = t.m_verts[1];
m_verts[2] = t.m_verts[2];
-
}
MTriangle::MTriangle(const MercuryVertex& a, const MercuryVertex& b, const MercuryVertex& c)
@@ -89,6 +88,32 @@
return true;
}
+BoundingBox MTriangle::MakeBoundingBox()
+{
+ float minX, minY, minZ;
+ float maxX, maxY, maxZ;
+ minX=minY=minZ = 9999999999999;
+ maxX=maxY=maxZ = -9999999999999;
+
+ for (uint8_t i = 0; i<3; ++i)
+ {
+ minX = MIN<float>(minX,m_verts[i].GetX());
+ minY = MIN<float>(minY,m_verts[i].GetY());
+ minZ = MIN<float>(minZ,m_verts[i].GetZ());
+ maxX = MAX<float>(maxX,m_verts[i].GetX());
+ maxY = MAX<float>(maxY,m_verts[i].GetY());
+ maxZ = MAX<float>(maxZ,m_verts[i].GetZ());
+ }
+
+ //compute center
+ MercuryVertex center( (maxX+minX)/2.0f, (maxY+minY)/2.0f, (maxZ+minZ)/2.0f );
+
+ //extends
+ MercuryVertex extend( (maxX-minX)/2.0, (maxY-minY)/2.0, (maxZ-minZ)/2.0 );
+
+ return BoundingBox(center, extend);
+}
+
/****************************************************************************
* Copyright (C) 2009 by Joshua Allen *
* *
Modified: Mercury2/src/DataTypes/MTriangle.h
===================================================================
--- Mercury2/src/DataTypes/MTriangle.h 2010-04-20 15:47:42 UTC (rev 692)
+++ Mercury2/src/DataTypes/MTriangle.h 2010-04-22 00:01:37 UTC (rev 693)
@@ -2,6 +2,7 @@
#define MTRIANGLE_H
#include <MercuryVertex.h>
+#include <BoundingBox.h>
class MTriangle
{
@@ -17,6 +18,8 @@
MercuryVertex InterpolatePosition(const MercuryVertex& barycentric);
bool operator == (const MTriangle& rhs) const;
+
+ BoundingBox MakeBoundingBox();
// private:
MercuryVertex m_verts[3];
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|