本文整理汇总了C++中Poly::AddPoly方法的典型用法代码示例。如果您正苦于以下问题:C++ Poly::AddPoly方法的具体用法?C++ Poly::AddPoly怎么用?C++ Poly::AddPoly使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Poly
的用法示例。
在下文中一共展示了Poly::AddPoly方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: sizeof
Poly *Poly::CopyList ( ) const
{
Poly *pPoly = new Poly;
pPoly->TextureID = TextureID;
pPoly->m_iNumberOfVertices = m_iNumberOfVertices;
pPoly->plane = plane;
pPoly->verts = new Vertex[ m_iNumberOfVertices ];
memcpy ( pPoly->verts, verts, sizeof ( Vertex ) * m_iNumberOfVertices );
if ( !IsLast ( ) )
{
pPoly->AddPoly ( m_pNext->CopyList ( ) );
}
return pPoly;
}
示例2: ClassifyPoly
Poly *Poly::ClipToList ( Poly *pPoly_, bool bClipOnPlane_ )
{
switch ( ClassifyPoly ( pPoly_ ) )
{
case eCP::FRONT:
{
return pPoly_->CopyPoly ( );
} break;
case eCP::BACK:
{
if ( IsLast ( ) )
{
return NULL;
}
return m_pNext->ClipToList ( pPoly_, bClipOnPlane_ );
} break;
case eCP::ONPLANE:
{
double Angle = plane.n.Dot ( pPoly_->plane.n ) - 1;
if ( ( Angle < epsilon ) && ( Angle > -epsilon ) )
{
if ( !bClipOnPlane_ )
{
return pPoly_->CopyPoly ( );
}
}
if ( IsLast ( ) )
{
return NULL;
}
return m_pNext->ClipToList ( pPoly_, bClipOnPlane_ );
} break;
case eCP::SPLIT:
{
Poly *pFront = NULL;
Poly *pBack = NULL;
SplitPoly ( pPoly_, &pFront, &pBack );
if ( IsLast ( ) )
{
delete pBack;
return pFront;
}
Poly *pBackFrags = m_pNext->ClipToList ( pBack, bClipOnPlane_ );
if ( pBackFrags == NULL )
{
delete pBack;
return pFront;
}
if ( *pBackFrags == *pBack )
{
delete pFront;
delete pBack;
delete pBackFrags;
return pPoly_->CopyPoly ( );
}
delete pBack;
pFront->AddPoly ( pBackFrags );
return pFront;
} break;
}
return NULL;
}