Как создать плоскость из 4 угловых точек в Matlab? - PullRequest
0 голосов
/ 22 февраля 2020

Я пытаюсь создать плоскость из 4 точек, которые находятся в углах плоскости. Я использовал функцию Patch для отображения этой плоскости, но мне нужно уравнение этой плоскости. Есть ли способ сделать это в Matlab? На самом деле, я хочу рассчитать расстояние набора точек от этой страницы. Возможно ли это также с помощью функции Patch? enter image description here

1 Ответ

0 голосов
/ 22 февраля 2020

Я сомневаюсь, что графические объекты MATLAB имеют много математических возможностей. Я думаю, что лучший способ достичь конечной цели - выполнить арифметику c самостоятельно.

Математическое свойство, которое вы должны иметь в виду, состоит в том, что для уникального определения плоскости необходимы только 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)
...