- UID
- 281852
- 积分
- 62
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2005-6-22
- 最后登录
- 1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
BOOL C###::ptInRegion(AcGePoint3dArray ptArray, AcGePoint3d armPt)
{
int start = 0;
AcGeVector3d currentVector, previosVector, contrVector, refVector;
int count = 0, countDir = 1;
AcGePoint3d point;
previosVector = ptArray.first() - armPt;
for (int j=start + 1; j<=ptArray.length(); j++)
{
if ( j==ptArray.length()) j = start;
point = ptArray.at(j);
currentVector = point - armPt;
if (contrVector.isZeroLength() && !previosVector.isEqualTo(currentVector))
contrVector = previosVector + currentVector;
refVector = previosVector.crossProduct(currentVector);
if (previosVector.angleTo(contrVector, refVector) < previosVector.angleTo(currentVector, refVector))
{
count += countDir;
countDir *= -1;
}
previosVector = currentVector;
if (j == start) break;
}
if (count)
return (true); // point is included to the polygon
else
return (false); // point is not included to the polygon
} |
|