本文整理汇总了C++中hkvVec3::getDistanceToSquared方法的典型用法代码示例。如果您正苦于以下问题:C++ hkvVec3::getDistanceToSquared方法的具体用法?C++ hkvVec3::getDistanceToSquared怎么用?C++ hkvVec3::getDistanceToSquared使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类hkvVec3
的用法示例。
在下文中一共展示了hkvVec3::getDistanceToSquared方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GetDistanceToPlane
/// \brief
/// Helper function to retrieve current distance to a given plane
///
/// \param vCameraPos
/// Camera position to test the distance against
/// \param fLODScaleSqr
/// Square of the LOD scaling factor
/// \param fPlane
/// Reference plane distance, will be subtracted from final result
///
/// \returns
/// Relative distance from object to given plane
inline float GetDistanceToPlane(const hkvVec3& vCameraPos, float fLODScaleSqr=1.f, float fPlane=0.f) const
{
int iLODMode = m_iPerformTestFlags&VIS_PERFORM_LODTEST;
float fDistSqr;
switch (iLODMode)
{
case VIS_LOD_TEST_NONE:
fDistSqr = 0.0f;
break;
case VIS_LOD_TEST_CLIPPOSITION:
fDistSqr = vCameraPos.getDistanceToSquared(m_vClipReference);
break;
case VIS_LOD_TEST_CLIPPOSITION|VIS_LOD_TEST_APPLYLODSCALING:
fDistSqr = vCameraPos.getDistanceToSquared(m_vClipReference)*fLODScaleSqr;
break;
case VIS_LOD_TEST_BOUNDINGBOX:
fDistSqr = m_BoundingBox.getDistanceToSquared(vCameraPos);
break;
case VIS_LOD_TEST_BOUNDINGBOX|VIS_LOD_TEST_APPLYLODSCALING:
fDistSqr = m_BoundingBox.getDistanceToSquared(vCameraPos)*fLODScaleSqr;
break;
default:
VASSERT_MSG(false,"Invalid combination of LOD flags");
return false;
}
return hkvMath::sqrt(fDistSqr) - fPlane;
}
示例2: IsNearOrFarClipped
/// \brief
/// Helper function for visibility loop implementations
///
/// \param vCameraPos
/// Camera position to test LOD clipping
/// \param fLODScaleSqr
/// Square of the LOD scaling factor
///
/// \returns
/// true if the object is clipped either by near of far clip distance (if specified)
inline bool IsNearOrFarClipped(const hkvVec3& vCameraPos, float fLODScaleSqr=1.f) const
{
// changes in this function have to be reflected in SPU version IsNearOrFarClipped
int iLODMode = m_iPerformTestFlags&VIS_PERFORM_LODTEST;
float fDistSqr;
switch (iLODMode)
{
case VIS_LOD_TEST_NONE:
return false;
case VIS_LOD_TEST_CLIPPOSITION:
fDistSqr = vCameraPos.getDistanceToSquared(m_vClipReference);
break;
case VIS_LOD_TEST_CLIPPOSITION|VIS_LOD_TEST_APPLYLODSCALING:
fDistSqr = vCameraPos.getDistanceToSquared(m_vClipReference)*fLODScaleSqr;
break;
case VIS_LOD_TEST_BOUNDINGBOX:
fDistSqr = m_BoundingBox.getDistanceToSquared(vCameraPos);
break;
case VIS_LOD_TEST_BOUNDINGBOX|VIS_LOD_TEST_APPLYLODSCALING:
fDistSqr = m_BoundingBox.getDistanceToSquared(vCameraPos)*fLODScaleSqr;
break;
default:
VASSERT_MSG(false,"Invalid combination of LOD flags");
return false;
}
return ((m_fNearClipDistance>0.f) && (fDistSqr<(m_fNearClipDistance*m_fNearClipDistance)))
|| ((m_fFarClipDistance>0.f) && (fDistSqr>=(m_fFarClipDistance*m_fFarClipDistance)));
}