使用点积来确定点是否位于平面上

时间:2013-06-21 03:15:21

标签: math 3d geometry vector-graphics

给定A:a点,B:已知存在于平面P上的点,C:平面P的法线。我可以通过(A - B)之间的点积的结果确定A是否位于P上和C为零? (或在一定精度范围内,我可能会使用0.0001f)

我可能只是缺少一些明显的数学缺陷,但这似乎比将点转换为三角形的坐标空间更简单快捷a.la Check if a point is inside a plane segment的答案

所以其次我猜;如果这是一个有效的检查,它是否比使用矩阵变换在计算上更快,如果我想要的是看点是否在平面上? (而不是它是否位于所述平面上的多边形内,我可能会继续使用矩阵变换)

2 个答案:

答案 0 :(得分:7)

你是正确的,当且仅当dotProduct(A-B,P)= 0时,B通过A和普通P位于平面上。

为了估计这种事情的速度,你几乎可以计算乘法。这个公式只有三次乘法,所以它比几何与矩阵有关的速度要快。

答案 1 :(得分:0)

上述答案更接近证据,但还不够。应该直观地说,仅使用两个矢量是不够的,因为对于一个,点P可以在平面上方,并且从它绘制到平面的垂直线仍将生成零点积,任何单个矢量位于平面上,就像这将是飞机上的P点。必要和充分的条件是,如果在平面上找到两个矢量,那么实际平面由两个矢量的叉积明确表示,即 的瓦特 = <强>û X <强> v 即可。根据定义, w 是区域向量,始终垂直于平面。

然后,对于有问题的点P,应该从 u v 构建第三个向量 s ,并对进行测试w 由点积,st

w s = | w || s | cos(90)= 0意味着点P位于由 w 描述的平面上,而这又由矢量 u v 描述。