游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1859|回复: 4

如何测定一个点在平面正面还是背面

[复制链接]

51

主题

134

帖子

140

积分

注册会员

Rank: 2

积分
140
发表于 2007-2-8 22:24:00 | 显示全部楼层 |阅读模式
同上

149

主题

4981

帖子

5033

积分

论坛元老

Rank: 8Rank: 8

积分
5033
QQ
发表于 2007-2-8 23:03:00 | 显示全部楼层

Re:如何测定一个点在平面正面还是背面

算出平面的法线,然后计算从这个法线起点指向目标点的向量与法线的夹角……

9

主题

688

帖子

688

积分

高级会员

Rank: 4

积分
688
发表于 2007-2-8 23:08:00 | 显示全部楼层

Re:如何测定一个点在平面正面还是背面

设平面方程为Ax+By+Cz+D=0.(该平面法向量为(A,B,C))
令f(x,y,z)=Ax+By+Cz+D;
则f(x,y,z)>0时点(x,y,z)在平面正面,=0则点在平面上,<0则点在平面背面

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
发表于 2007-2-10 14:07:00 | 显示全部楼层

Re:如何测定一个点在平面正面还是背面

用 点  p 点乘 平面的 normal 如果等于 屏面的d分量表示在平面上,小于d表示在平面的后面,大于d表示在平面的前面

0

主题

4

帖子

10

积分

新手上路

Rank: 1

积分
10
QQ
发表于 2007-2-12 16:22:00 | 显示全部楼层

Re: 如何测定一个点在平面正面还是背面

一般我们通过一个法向量n和常数d来描述一个平面(n,d)。
typedef struct D3DXPLANE
{
    ……
    float a,b,c,d
}
这里a,b,c是平面法向量的成员,d就是那个常数。
对于平面 (n,d)上所有的点p,满足n * p + d = 0,
假如n * p + d > 0,那么p在平面的前面且在平面的正半空间;
假如n * p + d < 0,那么p在平面的后面且在平面的负半空间;

在Direct3D9中,可以利用D3DXPlaneDotCoord来判断点和平面的关系,具体参考MSDN。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-26 10:40

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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