Updates to Shape support.
This commit is contained in:
@@ -41,3 +41,41 @@ void Grid::populateGrid(float minValue,float maxValue)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Vec3 HeightField::getNormal(unsigned int c,unsigned int r) const
|
||||
{
|
||||
// four point normal generation.
|
||||
|
||||
float dz_dx;
|
||||
if (c==0)
|
||||
{
|
||||
dz_dx = (getHeight(c+1,r)-getHeight(c,r))/getXInterval();
|
||||
}
|
||||
else if (c==getNumColumns()-1)
|
||||
{
|
||||
dz_dx = (getHeight(c,r)-getHeight(c-1,r))/getXInterval();
|
||||
}
|
||||
else // assume 0<c<_numColumns-1
|
||||
{
|
||||
dz_dx = 0.5f*(getHeight(c+1,r)-getHeight(c-1,r))/getXInterval();
|
||||
}
|
||||
|
||||
float dz_dy;
|
||||
if (r==0)
|
||||
{
|
||||
dz_dy = (getHeight(c,r+1)-getHeight(c,r))/getYInterval();
|
||||
}
|
||||
else if (r==getNumRows()-1)
|
||||
{
|
||||
dz_dy = (getHeight(c,r)-getHeight(c,r-1))/getYInterval();
|
||||
}
|
||||
else // assume 0<r<_numRows-1
|
||||
{
|
||||
dz_dy = 0.5f*(getHeight(c,r+1)-getHeight(c,r-1))/getYInterval();
|
||||
}
|
||||
|
||||
Vec3 normal(-dz_dx,-dz_dy,1.0f);
|
||||
normal.normalize();
|
||||
|
||||
return normal;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user