本文整理汇总了C++中USRect::GetIntersection方法的典型用法代码示例。如果您正苦于以下问题:C++ USRect::GetIntersection方法的具体用法?C++ USRect::GetIntersection怎么用?C++ USRect::GetIntersection使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类USRect
的用法示例。
在下文中一共展示了USRect::GetIntersection方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: DrawRay
//----------------------------------------------------------------//
void MOAIDraw::DrawRay ( float x, float y, float dx, float dy ) {
USVec2D loc ( x, y );
USVec2D vec ( dx, dy );
USMatrix4x4 mtx = MOAIGfxDevice::Get ().GetViewProjMtx ();
USMatrix4x4 invMtx;
invMtx.Inverse ( mtx );
mtx.Transform ( loc );
mtx.TransformVec ( vec );
USRect viewRect;
viewRect.Init ( -1.0f, -1.0f, 1.0f, 1.0f );
USVec2D p0;
USVec2D p1;
if ( viewRect.GetIntersection ( loc, vec, p0, p1 )) {
invMtx.Transform ( p0 );
invMtx.Transform ( p1 );
MOAIGfxDevice& gfxDevice = MOAIGfxDevice::Get ();
gfxDevice.BeginPrim ( GL_LINES );
gfxDevice.WriteVtx ( p0.mX, p0.mY, 0.0f );
gfxDevice.WriteFinalColor4b ();
gfxDevice.WriteVtx ( p1.mX, p1.mY, 0.0f );
gfxDevice.WriteFinalColor4b ();
gfxDevice.EndPrim ();
}
}
示例2: DrawAxisGrid
//----------------------------------------------------------------//
void MOAIDraw::DrawAxisGrid ( USVec2D loc, USVec2D vec, float size ) {
USMatrix4x4 mtx = MOAIGfxDevice::Get ().GetViewProjMtx ();
USMatrix4x4 invMtx;
invMtx.Inverse ( mtx );
// Set the axis to the grid length so we can get the length back post-transform
vec.SetLength ( size );
mtx.Transform ( loc );
mtx.TransformVec ( vec );
// Get the axis unit vector
USVec2D norm = vec;
size = norm.NormSafe ();
// Get the axis normal
USVec2D perpNorm ( norm.mY, -norm.mX );
// Project the corners of the viewport onto the axis to get the mix/max bounds
float dot;
float min;
float max;
USVec2D corner;
// left, top
corner.Init ( -1.0f, 1.0f );
corner.Sub ( loc );
dot = norm.Dot ( corner );
min = dot;
max = dot;
// right, top
corner.Init ( 1.0f, 1.0f );
corner.Sub ( loc );
dot = norm.Dot ( corner );
min = ( dot < min ) ? dot : min;
max = ( dot > max ) ? dot : max;
// right, bottom
corner.Init ( 1.0f, -1.0f );
corner.Sub ( loc );
dot = norm.Dot ( corner );
min = ( dot < min ) ? dot : min;
max = ( dot > max ) ? dot : max;
// left, bottom
corner.Init ( -1.0f, -1.0f );
corner.Sub ( loc );
dot = norm.Dot ( corner );
min = ( dot < min ) ? dot : min;
max = ( dot > max ) ? dot : max;
// Get the start andstop grids
s32 start = ( s32 )( min / size ) - 1;
s32 stop = ( s32 )( max / size ) + 1;
// Set the pen to the first...
USVec2D pen = norm;
pen.Scale (( float )start * size );
pen.Add ( loc );
// Step along the axis to draw perpendicular grid lines
USRect viewRect;
viewRect.Init ( -1.0f, -1.0f, 1.0f, 1.0f );
for ( ; start < stop; ++start ) {
USVec2D p0;
USVec2D p1;
if ( viewRect.GetIntersection ( pen, perpNorm, p0, p1 )) {
invMtx.Transform ( p0 );
invMtx.Transform ( p1 );
MOAIDraw::DrawLine ( p0, p1 );
}
pen.Add ( vec );
}
}