游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4979|回复: 8

请问,如何判断空间中 一个点在一个矩形之内?

[复制链接]

35

主题

105

帖子

119

积分

注册会员

Rank: 2

积分
119
发表于 2004-2-16 10:09:00 | 显示全部楼层 |阅读模式
~

5

主题

17

帖子

19

积分

新手上路

Rank: 1

积分
19
发表于 2004-2-17 17:29:00 | 显示全部楼层

Re: 请问,如何判断空间中 一个点在一个矩形之内?

我记得GDI中有个Inrect函数把

35

主题

105

帖子

119

积分

注册会员

Rank: 2

积分
119
 楼主| 发表于 2004-2-17 19:27:00 | 显示全部楼层

哦,我发现ms的东西不太可靠

~

45

主题

286

帖子

314

积分

中级会员

自由游戏制作人

Rank: 3Rank: 3

积分
314
QQ
发表于 2004-2-18 07:16:00 | 显示全部楼层

Re:请问,如何判断空间中 一个点在一个矩形之内?

最简单的方法

BOOL IsInRect(LPRECT rtDes, POINT ptSrc)
{
     if( ptSrc.x >= rcDes->left && ptSrc.x <= rcDes->right && ptSrc.y >= rcDes->top && ptSrc.y <= rcDes->bottom )
     {
          return TRUE;
     }
     return FALSE;
}

35

主题

105

帖子

119

积分

注册会员

Rank: 2

积分
119
 楼主| 发表于 2004-2-18 10:10:00 | 显示全部楼层

空间点

~~ [em7]

7

主题

24

帖子

28

积分

注册会员

Rank: 2

积分
28
发表于 2004-2-18 11:37:00 | 显示全部楼层

Re:请问,如何判断空间中 一个点在一个矩形之内?

先得到空间点在平面的投影点,
如果投影点不是空间点本身,则不在平面内
如果是,在判断点是否在矩形内

7

主题

24

帖子

28

积分

注册会员

Rank: 2

积分
28
发表于 2004-2-18 11:49:00 | 显示全部楼层

Re:请问,如何判断空间中 一个点在一个矩形之内?

刚才说说错了
由矩形的点可以得到平面方程
假设p为平面的一点,v为法线。p1为空间的一点
float h=(p1-p).dot(v)
if(h == 0)
则p1在平面内
之后,由于矩形有四条边,在平面内求出每条边的法线,
假设法线指向矩形外
假设矩形中有一条边为AB,AB的法线为n
if (p1-A).n<0 继续判断下一条边
当四条边都满足时,则p1在矩形内


7

主题

24

帖子

28

积分

注册会员

Rank: 2

积分
28
发表于 2004-2-18 11:57:00 | 显示全部楼层

Re:请问,如何判断空间中 一个点在一个矩形之内?

又找了一些资料,发现还是错了
正确的方法应该是
1.先判断点是否在平面内,如果在继续
2.求出点和每条边的夹角
3.如果夹角的和等于360,则点在多边形内

23

主题

53

帖子

53

积分

注册会员

Rank: 2

积分
53
发表于 2004-2-18 22:08:00 | 显示全部楼层

Re: 请问,如何判断空间中 一个点在一个矩形之内?

to bushhelen:
1.先判断点是否在平面内,如果在继续
2。判断点投影是否在矩形投影内。若是则点在矩形内。

我想这样会更快吧。第二步:矩形和点可以向x/y/z其中一个平面投影(相当于省去其中一个坐标)。这样就相当于在2维空间里判断点是否在矩形内一样。

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

本版积分规则

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

GMT+8, 2025-5-14 19:43

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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