在垂直于另一条线的中间的线上找到一个点

时间:2015-03-11 17:59:42

标签: matlab vector 3d computational-geometry angle

在下图中

  • 所有点都在3D空间(x,y,z)并且位于同一平面
  • BC定义了一个中点为A
  • 的向量
  • PA应垂直于BC,但我不知道如何找到P
  • 我需要确定OA和PA之间的角度

你知道如何解决这个问题吗?很高兴在需要时提供额外的信息。

enter image description here

1 个答案:

答案 0 :(得分:3)

它是交叉产品和标量产品的简单使用:

首先找到这些点所跨越的平面的法线向量N。这是通过B-AO-A的叉积来完成的。 然后,可以找到方向向量AP作为NB-A的叉积。为了找到角度,我们采用标准化向量APAO的标量积,应用acos并转换为度数。

%// Example data
A = [0,0,0];
B = [-1,0,0];
C = [1,0,0];
O = [-1,-1,0];
%// Computation
normalize = @(X) X/norm(X);
N = normalize(cross(B-A,O-A));
AP = cross(N,B-A);
phi = (180/pi)*acos(dot(normalize(AP),normalize(O-A)))