How to find triangle which consists (x,z)

Started by
-1 comments, last by anders211 10 years, 9 months ago

As we know terrain might be rendered from heightmap (some raw data prepared with the aid of photoshop) and from mesh which You for example prepare in some 3D tool like Blender. I am actually using the second way of terrain. I have rendered terrain with the aid of mesh. And I have object located at (x,z) and now I have to calculate height of the object location - coordinate y. So I have to find triangle from my terrain mesh which consists (x,z). I have problem with "if" condition. Could You help me to fulfill all the possibilities of "if" condition?


vector< D3DXVECTOR > terrainVerts;  //each entry has 3 floats (x,y,z) of vertex
vector< vector<u32> > terrainFace;   //each entry has 3 DWORD vertex indices


void Object::updateHeightForObject(D3DXVECTOR3& entry);
{
float x = entry.x; //x coordinate of my object
float y = entry.y; //y coordinate of my object which I need update 
float z = entry.z; //z coordinate of my object

u32 numFaces = static_cast<u32>(terrainFace.size());

for(u32 i=0; i<numFaces; ++i)
{
float x1 = terrainVerts[ terrainFace[i][0] ].x;
float x2 = terrainVerts[ terrainFace[i][1] ].x;
float x3 = terrainVerts[ terrainFace[i][2] ].x;
float y1 = terrainVerts[ terrainFace[i][0] ].y;
float y2 = terrainVerts[ terrainFace[i][1] ].y;
float y3 = terrainVerts[ terrainFace[i][2] ].y;
float z1 = terrainVerts[ terrainFace[i][0] ].z;
float z2 = terrainVerts[ terrainFace[i][1] ].z;
float z3 = terrainVerts[ terrainFace[i][2] ].z;

if(x > x1 && x < x2 ????   //there must be some complex if
{
      //triangle found
      //when I find triangle then I have to use some algorithm which I have in my heightmap class in order to get calculate height offset value
, however this is easy for me, because I have implementation}

}
}

This topic is closed to new replies.

Advertisement