如何在matlab中从4个角点创建平面?

如何在matlab中从4个角点创建平面?,matlab,plane,Matlab,Plane,我试着做一个由四个点组成的平面,这些点在平面的角上。我用面片函数来显示这个平面,但我需要这个平面的方程。有没有一种方法可以在matlab中实现这一点? 事实上,我想计算一组点与本页的距离。使用修补程序功能也可以这样做吗 我怀疑MATLAB的图形对象是否具有内置的数学功能。我认为达到最终目标的最好方法是自己做算术 您应该记住的一个数学特性是,唯一定义平面只需要3个点。平面上的第四点不是必需的 快速总结该方法: 给定平面上的点x1,x2,x3,我们可以定义向量v1=x2-x1,v2=x3-x1 然

我试着做一个由四个点组成的平面,这些点在平面的角上。我用面片函数来显示这个平面,但我需要这个平面的方程。有没有一种方法可以在matlab中实现这一点?
事实上,我想计算一组点与本页的距离。使用修补程序功能也可以这样做吗

我怀疑MATLAB的图形对象是否具有内置的数学功能。我认为达到最终目标的最好方法是自己做算术

您应该记住的一个数学特性是,唯一定义平面只需要3个点。平面上的第四点不是必需的

快速总结该方法:

  • 给定平面上的点x1,x2,x3,我们可以定义向量v1=x2-x1,v2=x3-x1
  • 然后我们计算法向量n=v1 x v2(这里的叉积)
  • 然后对法向量n_hat=n/norm(n,2)进行归一化
  • 对于某些任意点x,其到平面的距离仅为x.n_hat(此处为点积)
示例代码:

x = [35.625, 35.7 , 35.825, 35.75];
y = [56.25 , 56.25, 59.25 , 59.25];

% This example assumes vectors are column vectors
% Must be 3 element vectors to perform cross product
v1 = [x(2)-x(1)
      y(2)-y(1)
      0];
v2 = [x(3)-x(1)
      y(3)-y(1)
      0];

n = cross(v1, v2);
n_hat = n / norm(n, 2);

% the unused 4th point should have zero distance to the plane, so d4=0
p4 = [x(4); y(4); 0];
d4 = dot(n_hat, p4)

% the point d5=[0,0,2] is 2 units above the plane, so d5=0
p5 = [0; 0; 2];
d5 = dot(n_hat, p5)

这假定平面穿过原点。您缺少一个减法运算,以获得与法线相当的向量。您是正确的。但是OP的例子是2D,在这种情况下,假设通过原点的平面是可以的。