コード例 #1
0
ファイル: PX2Terrain.cpp プロジェクト: manyxu/Phoenix3D_2.0
//----------------------------------------------------------------------------
AVector Terrain::GetNormal (float x, float y) const
{
	float xp = x + mSpacing;
	float xm = x - mSpacing;
	float yp = y + mSpacing;
	float ym = y - mSpacing;

	TerrainPage* page = GetCurrentPage(xp, y);
	float xtmp = xp - page->LocalTransform.GetTranslate().X();
	float ytmp = y - page->LocalTransform.GetTranslate().Y();
	float hpz = page->GetHeight(xtmp,ytmp);

	page = GetCurrentPage(xm, y);
	xtmp = xm - page->LocalTransform.GetTranslate().X();
	ytmp = y - page->LocalTransform.GetTranslate().Y();
	float hmz = page->GetHeight(xtmp,ytmp);

	page = GetCurrentPage(x, yp);
	xtmp = x - page->LocalTransform.GetTranslate().X();
	ytmp = yp - page->LocalTransform.GetTranslate().Y();
	float hzp = page->GetHeight(xtmp,ytmp);

	page = GetCurrentPage(x, ym);
	xtmp = x - page->LocalTransform.GetTranslate().X();
	ytmp = ym - page->LocalTransform.GetTranslate().Y();
	float hzm = page->GetHeight(xtmp,ytmp);

	AVector normal(hmz - hpz, hzm - hzp, 1.0f);
	normal.Normalize();
	return normal;
}
コード例 #2
0
ファイル: PX2Terrain.cpp プロジェクト: manyxu/Phoenix3D_2.0
//----------------------------------------------------------------------------
float Terrain::GetHeight (float x, float y) const
{
	TerrainPage* page = GetCurrentPage(x,y);

	x -= page->LocalTransform.GetTranslate().X();
	y -= page->LocalTransform.GetTranslate().Y();

	return page->GetHeight(x, y);
}
コード例 #3
0
ファイル: Wm5Terrain.cpp プロジェクト: bhlzlx/WildMagic
//----------------------------------------------------------------------------
float Terrain::GetHeight (float x, float y) const
{
	TerrainPage* page = GetCurrentPage(x,y);

	// Subtract off the translation due to wrap-around.
	x -= page->LocalTransform.GetTranslate().X();
	y -= page->LocalTransform.GetTranslate().Y();

	return page->GetHeight(x, y);
}