找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 748|回复: 4

[ARX函数]:点在曲线内的判断问题

[复制链接]
发表于 2002-10-12 21:35:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
XD,我测试过点在曲线内的ARX代码,绝大部分情况都是正确的,
但极个别情况好象有问题,例如:

有一条多义线,多义线含有一条水平线段,当检测点与该水平线段在同一水平线上时点的位置判断出现问题。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-10-12 23:16:25 | 显示全部楼层

Re: [ARX函数]:点在曲线内的判断问题

最初由 夜语 发布
[B]XD,我测试过点在曲线内的ARX代码,绝大部分情况都是正确的,
但极个别情况好象有问题,例如:

有一条多义线,多义线含有一条水平线段,当检测点与该水平线段在同一水平线上时点的位置判断出现问题。 [/B]


点和一个水平线段的位置关系:你说的同一水平线段,不好理解,怎么个同一水平线段法?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-10-13 10:48:13 | 显示全部楼层
多义线中含有一水平线段(该段起点和终点的Y坐标相同),当需要检测点和该线段刚好水平(纵坐标完全相同,例如点在该线段的左侧或右侧,见下),点的位置判断好象出现问题。

              。 —————————
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-10-13 10:59:52 | 显示全部楼层
问题见样图内。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-10-15 09:32:06 | 显示全部楼层
  以点P为端点,向左方作射线L,由于多边形是有界的,所以射线L的左端一定在多边形外,考虑沿着L从无穷远处开始自左向右移动,遇到和多边形的第一个交点的时候,进入到了多边形的内部,遇到第二个交点的时候,离开了多边形,……所以很容易看出当L和多边形的交点数目C是奇数的时候,P在多边形内,是偶数的话P在多边形外。如图2(a),(b)所示。
但是有些特殊情况要加以考虑,如图2(c) (d) (e) (f)所示。在图2的(c) 中,L和多边形的顶点相交,这时候交点只能计算一个;在图2 (d) 中,L和多边形顶点的交点不应被计算;在图2 (e) 和 (f) 中,L和多边形的一条边重合,这条边应该被忽略不计。为了统一起见,我们在计算射线L和多边形的交点的时候,1。对于多边形的水平边不作考虑;2。对于多边形的顶点和L相交的情况,如果该顶点是其所属的边上纵坐标较大的顶点,则计数,否则忽略;3。对于P在多边形边上的情形,直接可判断P属于多边行。由此得出算法的伪代码如下:

count = 0;
以P为端点,作从右向左的射线L;
for ( 多边形的每条边side ) {
if ( P 在边 side 上 ) return true;
if ( side 是水平的 ) continue;
if ( side 的一个端点在L上且该端点是side两端点中纵坐标较大的端点 ) {
count++;
} else if ( side 和 L 相交 ) {
count++;
}
}
return ( count % 2 == 1 );
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-15 19:44 , Processed in 0.397324 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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