本文整理匯總了C++中Box2D::Contains方法的典型用法代碼示例。如果您正苦於以下問題:C++ Box2D::Contains方法的具體用法?C++ Box2D::Contains怎麽用?C++ Box2D::Contains使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類Box2D
的用法示例。
在下文中一共展示了Box2D::Contains方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的C++代碼示例。
示例1: Max
bool Segment2D::Intersects( const Box2D& Box, CollisionInfo2D* const pInfo /*= NULL*/ ) const
{
if( Box.Contains( m_Start ) )
{
if( pInfo )
{
pInfo->m_Collision = true;
pInfo->m_EHitNormal = CollisionInfo2D::EHN_None;
pInfo->m_HitNormal = Vector2();
pInfo->m_HitT = 0.0f;
pInfo->m_Intersection = m_Start;
}
return true;
}
float MinT = 0.0f;
float MaxT = FLT_MAX;
CollisionInfo2D::EHitNormal EnumHitNormal = CollisionInfo2D::EHN_None;
Vector2 HitNormal;
Vector2 Offset = m_End - m_Start;
if( Abs( Offset.x ) < SMALLER_EPSILON )
{
if( m_Start.x < Box.m_Min.x || m_Start.x > Box.m_Max.x )
{
return false;
}
}
else
{
float InvOffsetX = 1.0f / Offset.x;
float T1 = ( Box.m_Min.x - m_Start.x ) * InvOffsetX;
float T2 = ( Box.m_Max.x - m_Start.x ) * InvOffsetX;
if( T1 > T2 )
{
Swap( T1, T2 );
}
MinT = Max( MinT, T1 );
MaxT = Min( MaxT, T2 );
if( MinT > MaxT )
{
return false;
}
if( MinT == T1 )
{
EnumHitNormal = ( Offset.x > 0.0f ) ? CollisionInfo2D::EHN_Left : CollisionInfo2D::EHN_Right;
HitNormal.x = Sign( Offset.x );
}
}
if( Abs( Offset.y ) < SMALLER_EPSILON )
{
if( m_Start.y < Box.m_Min.y || m_Start.y > Box.m_Max.y )
{
return false;
}
}
else
{
float InvOffsetY = 1.0f / Offset.y;
float T1 = ( Box.m_Min.y - m_Start.y ) * InvOffsetY;
float T2 = ( Box.m_Max.y - m_Start.y ) * InvOffsetY;
if( T1 > T2 )
{
Swap( T1, T2 );
}
MinT = Max( MinT, T1 );
MaxT = Min( MaxT, T2 );
if( MinT > MaxT )
{
return false;
}
if( MinT == T1 )
{
EnumHitNormal = ( Offset.y > 0.0f ) ? CollisionInfo2D::EHN_Up : CollisionInfo2D::EHN_Down;
HitNormal.y = Sign( Offset.y );
}
}
if( MinT > 1.0f )
{
return false;
}
ASSERT( EnumHitNormal != CollisionInfo2D::EHN_None );
if( pInfo )
{
pInfo->m_Collision = true;
pInfo->m_EHitNormal = EnumHitNormal;
pInfo->m_HitNormal = HitNormal;
pInfo->m_HitT = MinT;
pInfo->m_Intersection = m_Start + Offset * MinT;
}
return true;
}