找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 135|回复: 0

点在区域内的判断

[复制链接]

1

主题

0

回帖

37

积分

管理员

积分
37
发表于 2024-5-4 19:19:33 | 显示全部楼层 |阅读模式
  1. BOOL PointIsInPolygon(AcGePoint3d pt, AcGePoint3dArray ptArr)
  2. {
  3.         int ptNum, i, interNum;
  4.         AcGePoint3d ptA, ptB;
  5.         ads采用point pt0, pt1, pt2, ptIns, ptX;
  6.         interNum = 0;
  7.         pt0[X] = 0.0;
  8.         pt0[Y] = 0.0;
  9.         pt0[Z] = 0.0;
  10.         ptX[X] = pt.x;
  11.         ptX[Y] = pt.y;
  12.         ptX[Z] = pt.z;
  13.         ptNum = ptArr.length();
  14.         for (i = 0;i < ptNum - 1;i++) {
  15.                 ptA = ptArr.at(i);
  16.                 ptB = ptArr.at(i + 1);
  17.                 pt1[X] = ptA.x;
  18.                 pt1[Y] = ptA.y;
  19.                 pt1[Z] = 0.0;
  20.                 pt2[X] = ptB.x;
  21.                 pt2[Y] = ptB.y;
  22.                 pt2[Z] = 0.0;
  23.                 if(acdbInters(ptX, pt0, pt1, pt2, 1, ptIns) == RTNORM) {
  24.                         interNum++;
  25.                 }
  26.         }
  27.         if (interNum % 2 == 0) {
  28.                 return false;
  29.         }
  30.         else {
  31.                 return true;
  32.         }
  33. }
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|膜结构网

GMT+8, 2025-1-6 15:33 , Processed in 0.107262 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表