本文整理汇总了C++中ON_Curve::AreaMassProperties方法的典型用法代码示例。如果您正苦于以下问题:C++ ON_Curve::AreaMassProperties方法的具体用法?C++ ON_Curve::AreaMassProperties怎么用?C++ ON_Curve::AreaMassProperties使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ON_Curve
的用法示例。
在下文中一共展示了ON_Curve::AreaMassProperties方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ON_Hatch_AreaMassProperties
RH_C_FUNCTION ON_MassProperties* ON_Hatch_AreaMassProperties(const ON_Hatch* pConstHatch, double rel_tol, double abs_tol)
{
ON_MassProperties* rc = NULL;
if( pConstHatch )
{
ON_BoundingBox bbox = pConstHatch->BoundingBox();
ON_3dPoint basepoint = bbox.Center();
basepoint = pConstHatch->Plane().ClosestPointTo(basepoint);
ON_ClassArray<ON_MassProperties> list;
for( int i=0; i<pConstHatch->LoopCount(); i++ )
{
const ON_HatchLoop* pLoop = pConstHatch->Loop(i);
if( NULL==pLoop )
continue;
ON_Curve* pCurve = pConstHatch->LoopCurve3d(i);
if( NULL==pCurve )
continue;
ON_MassProperties mp;
if( pCurve->AreaMassProperties(basepoint, pConstHatch->Plane().Normal(), mp, true, true, true, true, rel_tol, abs_tol) )
{
mp.m_mass = fabs(mp.m_mass);
if( pLoop->Type() == ON_HatchLoop::ltInner )
mp.m_mass = -mp.m_mass;
list.Append(mp);
}
delete pCurve;
}
if( list.Count()==1 )
{
rc = new ON_MassProperties();
*rc = list[0];
}
else if( list.Count()>1 )
{
int count = list.Count();
const ON_MassProperties* pieces = list.Array();
rc = new ON_MassProperties();
if( !rc->Sum(count, pieces) )
{
delete rc;
rc = NULL;
}
}
}
return rc;
}