乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 235|回复: 14

边界内还是边界外?如何发现?

[复制链接]

14

主题

78

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
134
发表于 2006-6-3 19:38:08 | 显示全部楼层 |阅读模式
让我们假设你有一个绘图层,它有一堆闭合的(有时是部分重叠的)实体,如闭合的2D折线、圆弧等。现在,您要找出给定的XY坐标是否在至少一个绘图图元的包围区内。
你们中有谁能想出一种方法来执行此任务(这种方法将在大量坐标中重复,因此最好是快速的)?

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2006-6-4 11:05:44 | 显示全部楼层
请参阅http://softsurfer.com/Archive/algorithm_0103/algorithm_0103.htm,以获得不使用射线方法的充分理由。公式包含在C++中,因此转换并不总是那么简单。
回复

使用道具 举报

14

主题

78

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
134
发表于 2006-6-4 12:12:33 | 显示全部楼层
谢谢布莱科。我想到了一种射线法。首先,找到图层上所有几何体的边界框,然后,用水平/垂直线或光线扫描此边界框区域,并使用intersectwith查找几何体边界的位置。当然可以使用这种方法,但速度很慢。当扫描射线击中实体的边缘并因此仅返回一次命中(或奇数次命中)时。
回复

使用道具 举报

12

主题

150

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
198
发表于 2006-6-6 20:45:34 | 显示全部楼层
仅供参考,
我在编码方面有点笨拙……好吧,一个非常糟糕的黑客,但无论如何,我也遇到过类似的问题
在处理复杂的展开三维实体时,我发现了一种解决方案:
获取底部区域
在xy平面上多次剖切实体
向下移动所有区域
,将它们全部合并
分解新区域
运行pedit
回复

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2006-6-6 20:58:06 | 显示全部楼层
对algo的一个非常基本的描述,但您也可以尝试循环通过每个多边形边,计算该点是在左侧(-)还是右侧(+)
如果您的闭合多边形环是顺时针的,并且您的点“在”内部,则所有检查都将返回正数
对于边缘上或非常接近边缘的点,这也需要模糊因子。该算法也适用于凹多边形
另一种选择是使用托管包装器并使用内置有这些函数的几何体类(想到曲面)。
回复

使用道具 举报

14

主题

78

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
134
发表于 2006-6-6 22:28:11 | 显示全部楼层
请在ARX论坛中查看这里。
回复

使用道具 举报

116

主题

996

帖子

9

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1466
发表于 2006-6-7 07:35:09 | 显示全部楼层
哈瓦诺
检查此示例。
它不是VBA解决方案,而是LISP。有一些限制,但工作速度很快。
回复

使用道具 举报

14

主题

78

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
134
发表于 2006-6-9 22:29:47 | 显示全部楼层
谢谢Menzi先生,但我发誓永远不会使用Lisp。
Thx LE。这超出了我的智力范围。
谢谢MickD,但对于某些Pline形状,您的假设是不正确的。以形如工字钢横截面的Pline为例。工字钢中心的一点并不总是在贡献PL边缘的同一侧,尽管它在形状内。
Thx DaveW,这可能有助于解决方案。
回复

使用道具 举报

32

主题

142

帖子

5

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
270
发表于 2006-6-9 23:02:59 | 显示全部楼层

哇!...再说一遍。?
回复

使用道具 举报

14

主题

78

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
134
发表于 2006-6-10 04:29:10 | 显示全部楼层
没有必要使用LISP。您可以使用proggi背后的想法...
干杯
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-5 18:40 , Processed in 0.780061 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表