游戏开发论坛

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: mv

请问怎么判断一个点是否在多边形之内?

[复制链接]

15

主题

248

帖子

248

积分

中级会员

Rank: 3Rank: 3

积分
248
发表于 2005-7-27 02:23:00 | 显示全部楼层

Re:请问怎么判断一个点是否在多边形之内?

那写段代码出来看看啊!!

我大概想过一下,
首先,射线法需要“产生”一条射线,这条射线在3D空间中并不能向任意方向延伸,这样就要计算一次平面的法向量,然后沿法向量垂直方向平移该点。

其次,平移不能是无限远的,需要有距离限制,最简单的方法是计算该点与平面各点间的距离,然后取最大值作为该点的平移距离。这样就要计算N次。

还有就是,需要计算射线与各边的相交情况,这还需要计算N次。

然后就是要避免在凹多边形中,射线与“凹点”相切的情况。这样需要 一次计算和一次判断,不过这个似乎可以避免。

这样看来,需要计算2N次,简化到3角形就是需要计算6次,然后3次比较。而且,对于射线法来说,这些计算和比较都是必不可少的。而我的算法还可以简化,在最少的情况下,对于一个3角形只需要3次计算+2次比较,而且不用计算平面法向量。

当然,以上各点只不过是我临时想的,“射线法”这种经典算法当然会有改进的方法。还有我说这些并不是想动摇“射线法”的权威,只不过,我觉得,对于不同的情况来说,算法未必是一成不变的。

最后,最关键的一点,我上面写的算法根本就是错误的,呵呵,可惜都没有人看出来,不过稍微改一下就正确了……至于怎么改嘛,时间太久,忘了……

4

主题

8

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2006-3-31 10:41:00 | 显示全部楼层

Re:请问怎么判断一个点是否在多边形之内?

在VC++下有一个函数就可以判断,只要给定多边形的顶点,就可以判断。当然是二维的啦。具体的名称我不记得了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-24 01:13

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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