将点投影到与多边形相同的平面上

gre*_*ghz 3 3d geometry

我很难掌握如何做到这一点.我有一个由三个点定义的多边形.我在太空的某个地方也有一个观点.我想将空间中的某点移动到与多边形相同的平面上.据我所知,众所周知如何做到这一点.但是,我并不为人所熟知.

我找不到任何直接的算法或如何做到这一点的可靠解释.

我一直在看这个:http://www.odeion.org/pythagoras/pythag3d.html

但这会给我距离而不是顶点的距离.我可以看到,如果多边形限制为2d,那将是多么有用,但在我的情况下,它可能有任何方向.

不幸的是,我的数学相当薄弱,但我更愿意学习.

Dav*_*ber 10

第一个有用的概念步骤是确定一个点是否与描述平面的多边形中的三个点位于同一平面上.这样做的一种方法是计算平面的法向量 - 称之为n - 并使用n和三个点中的一个(称为点r 0)来定义平面.

计算平面的法向量可以通过多种方式完成(参见此处).对于这种情况,最方便的方法是获取平面中两个矢量之间的叉积(使用定义多边形中的点找到两个矢量).

一旦你知道了n,你就可以测试点r是否位于n和矢量之间的点积(r 0 - r)的平面中.请参阅此处以获取更多解释

然后,您可以在任何点上使用正交投影来获得平面上的新点.

假设我有三点:

  • 1:[1,1,1]
  • 2:[1.5,6,3]
  • 3:[2,-1,5].

让我们首先创建一个与这些点创建的平面垂直的向量.让

  • v 1 = p 1 - p 2 = [-0.5,-5,-2]
  • v 2 = p 1 - p 3 = [ - 1,2,-4].

那么这两个的法向量就是

  • n = v 1 x v 2 = [24,0,-6].

为方便起见,让我们对n进行归一化,所以现在n = [0.9701425,0,-0.24253563].

现在我们用n定义平面,让r 0 = p 1.

让我们介绍一个不在平面上的新点r(你可以通过取n和(r 0 - r)的点积来验证:

  • r = [4,4,4]

r "移动" 在平面上的一种方法是将其"滑动"到法线向量下,直到它在平面上(这是正交投影).这是通过确定多少做Ñ是在矢量v 3 =([R 0 - - [R (被呼叫)的标量投影).在这种情况下的标量投影产生新的向量v 3m = [-0.88235294,-3,-3.52941176].这是通过计算v 3 - ñ*点(Ñ,v 3).您可以验证它是否在平面中,因为它与n正交.

我们现在可以恢复这一点:

  • ř = - [R 0 - v 3米 = [1.88235294,4,4.52941176].

你可以验证这一点确实在飞机上:

  • 点(r 0 - r m,n)= 0.

  • 最好检查一下你的三个点是不是共线的.否则很棒的答案! (2认同)