给定A:一个点,B:一个已知存在于平面P上的点,C:平面P的法线。我可以通过(A - B)和C之间的点积的结果来确定A是否位于P上零?(或者在一定的精度范围内,我可能会使用 0.0001f)
我可能只是遗漏了一些明显的数学缺陷,但这似乎比将点转换为三角形的坐标空间更简单和更快a.la检查点是否在平面段内的答案
所以其次我猜; 如果这是一个有效的检查,如果我只想查看该点是否在平面上,它会比使用矩阵变换在计算上更快吗?(而不是它是否位于所述平面上的多边形内,我可能会继续使用矩阵变换)
给定A:一个点,B:一个已知存在于平面P上的点,C:平面P的法线。我可以通过(A - B)和C之间的点积的结果来确定A是否位于P上零?(或者在一定的精度范围内,我可能会使用 0.0001f)
我可能只是遗漏了一些明显的数学缺陷,但这似乎比将点转换为三角形的坐标空间更简单和更快a.la检查点是否在平面段内的答案
所以其次我猜; 如果这是一个有效的检查,如果我只想查看该点是否在平面上,它会比使用矩阵变换在计算上更快吗?(而不是它是否位于所述平面上的多边形内,我可能会继续使用矩阵变换)
当且仅当 dotProduct(AB,P) = 0 时,B 位于通过 A 且具有法线 P 的平面上是正确的。
要估计这类事情的速度,你几乎可以只计算乘法。这个公式只有三个乘法,所以它比几乎任何与矩阵有关的东西都要快。
上述答案更接近证明,但还不够。应该直观的是,仅使用两个向量是不够的,因为对于一个,点 P 可以在平面上方,并且从它绘制到平面的垂直线仍然会与平面上的任何单个向量生成零点积,就像它会在平面上的一个点P。充分必要条件是,如果可以在平面上找到两个向量,则实际平面由两个向量的叉积明确表示,即 w = u x v。根据定义,w是面积矢量,它始终垂直于平面。
然后,对于有问题的点 P,从u或v构造第三个向量s应该通过点积 st针对w进行测试
w。小号=| w || s |cos(90)=0 意味着点 P 位于由w描述的平面上,而 w 又由向量u和v描述。