本文整理汇总了C++中Matrix4::TransformCoord方法的典型用法代码示例。如果您正苦于以下问题:C++ Matrix4::TransformCoord方法的具体用法?C++ Matrix4::TransformCoord怎么用?C++ Matrix4::TransformCoord使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Matrix4
的用法示例。
在下文中一共展示了Matrix4::TransformCoord方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: CheckOutsideFrustum
bool BoundingBox::CheckOutsideFrustum( const Frustum& f, const Matrix4& mat ) const
{
Halia::Vector3 v[] =
{
mat.TransformCoord( Halia::Vector3( min.x, min.y, min.z ) ),
mat.TransformCoord( Halia::Vector3( max.x, min.y, min.z ) ),
mat.TransformCoord( Halia::Vector3( min.x, max.y, min.z ) ),
mat.TransformCoord( Halia::Vector3( min.x, min.y, max.z ) ),
mat.TransformCoord( Halia::Vector3( max.x, max.y, min.z ) ),
mat.TransformCoord( Halia::Vector3( max.x, min.y, max.z ) ),
mat.TransformCoord( Halia::Vector3( min.x, max.y, max.z ) ),
mat.TransformCoord( Halia::Vector3( max.x, max.y, max.z ) )
};
for( int i = 0; i < 6; ++i )
{
int out = 0;
int in = 0;
for( int j = 0; j < 8; ++j )
{
if( f.p[i].DotProductCoord( v[j] ) < -2.0f )
out++;
else
in++;
}
if( !in )
return true;
else if( out )
return false;
}
return false;
};
示例2: AddTransformedBB
void BoundingBox::AddTransformedBB( const BoundingBox& b, const Matrix4& mat )
{
AddPoint( mat.TransformCoord( Vector3( b.min.x, b.min.y, b.min.z ) ) );
AddPoint( mat.TransformCoord( Vector3( b.min.x, b.max.y, b.min.z ) ) );
AddPoint( mat.TransformCoord( Vector3( b.max.x, b.min.y, b.min.z ) ) );
AddPoint( mat.TransformCoord( Vector3( b.min.x, b.min.y, b.max.z ) ) );
AddPoint( mat.TransformCoord( Vector3( b.max.x, b.max.y, b.min.z ) ) );
AddPoint( mat.TransformCoord( Vector3( b.max.x, b.min.y, b.max.z ) ) );
AddPoint( mat.TransformCoord( Vector3( b.min.x, b.max.y, b.max.z ) ) );
AddPoint( mat.TransformCoord( Vector3( b.max.x, b.max.y, b.max.z ) ) );
};
示例3: CheckOutsideFrustum
bool BoundingSphere::CheckOutsideFrustum( const Frustum& f, const Matrix4& mat ) const
{
Halia::Vector3 realcenter = mat.TransformCoord( center );
for( int i = 0; i < 6; ++i )
{
if( f.p[i].DotProductCoord( realcenter ) < -radius )
return true;
}
return false;
};