Как получить плоскость из произвольного набора точек?

StackOverflow https://stackoverflow.com/questions/1686858

  •  18-09-2019
  •  | 
  •  

Вопрос

У меня есть произвольный набор трехмерных точек, я знаю, что они копланарны, но как мне вычислить эту плоскость?

Это было полезно?

Решение

Возьмите любые три различные точки и сформируйте треугольник ненулевой площади.Вычислите перекрестное произведение двух сторон треугольника.Это дает вам нормаль плоскости, и вы можете использовать общую точку как точку на плоскости.

Точка на плоскости плюс нормаль определяет плоскость.

Другие советы

Если они не все плоские, вычислите коэффициенты плоскости, используя метод наименьших квадратов.

Уравнение плоскости: Ax + By + Cz = D, поэтому подставьте свои точки и найдите четыре неизвестных коэффициента.

ОБНОВЛЯТЬ:Просто любопытно - откуда ты "знаешь", что все точки лежат в одной плоскости?Что дает вам такую ​​уверенность?

Предполагая, что они копланарны, выберите три точки и попробуйте следующее:

http://www.jtaylor1142001.net/calcjat/Solutions/VPlanes/VP3Pts.htm

Поскольку любые три неколлинеарные точки определяют плоскость, возможный ответ:

Просто возьмите первые три точки, которые не лежат на одной прямой.

Другой способ определить плоскость — это функция от двух параметров до точки.Если у вас есть три точки A,B,C, то функция f(i,j) = A + (B-A)i + (C-A)j охватывает все точки плоскости.

В зависимости от вашего приложения может быть полезно нормализовать b = (B-A) и c = (C-A) векторы должны быть перпендикулярны и иметь единичную длину.Длина единицы легко.

Чтобы сделать их перпендикулярными, сначала нормализуйте b, затем возьмите скалярное произведение b и c.Это величина, на которую вектор c указывает в том же направлении, что и b, поэтому вычтите это из c. c = c - (b.c)b Наконец, нормализуйте c (т.е.разделите на длину)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top