簡體   English   中英

如何在matlab中從4個角點創建一個平面?

[英]how to create a plane from 4 corner points in matlab?

我正在嘗試制作一個位於飛機角落的 4 個點的飛機。 我使用了 Patch 函數來顯示這個平面,但我需要這個平面的方程。 有沒有辦法在matlab中做到這一點? 實際上,我想計算一組點與此頁面的距離。 這也可以使用 Patch 功能嗎? 在此處輸入圖片說明

我懷疑 MATLAB 的圖形對象是否內置了很多數學功能。 我認為達​​到最終目標的最佳方法是自己進行算術運算。

您應該記住的一個數學屬性是,唯一地定義一個平面只需要 3 個點。 平面上的第 4 個點不是必需的。

方法的快速總結:

  • 給定平面上的點 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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM