вычислительная геометрия - проекция 2D-точки на плоскость для определения ее 3D-местоположения - PullRequest
1 голос
/ 02 апреля 2012

Вот что я пытаюсь выяснить.

Вопрос. Объясните, как можно спроецировать 2D-точку на плоскость для создания 3D-точки.

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

Кто-нибудь может указать мне правильное направление?

1 Ответ

2 голосов
/ 02 апреля 2012

Если я правильно понял, вы хотите проецировать точки на 2D-плоскости на плоскость с другой ориентацией. Я также собираюсь предположить, что вы ищете ортогональную проекцию (то есть все точки из плоскости xy должны проецироваться на ближайшую точку на плоскости цели).

Итак, у нас есть уравнения двух плоскостей и точки, которую мы хотим спроецировать:

Исходная 2D-плоскость : z = 0 с вектором нормали n1 = (0, 0, 1)

Целевая плоскость : ax + by + cz + d = 0 с вектором нормали n2 = (a, b, c)

Точка P : (e, f, 0), которая, очевидно, лежит в плоскости xy

Теперь мы хотим двигаться из точки P в направлении нормали к целевой плоскости (потому что это даст нам самую близкую точку на целевой плоскости). Следовательно, мы формируем уравнение для линии, которая начинается в точке P и параллельна вектору нормали к целевой плоскости.

Строка L: (x, y, z) = (e, f, 0) + t (a, b, c) = (e + ta, f + tb, tc), где t - действительный параметр

Далее мы хотим найти точку на линии L, которая также лежит на целевой плоскости. Следовательно, мы вставляем линейное уравнение в уравнение для целевой плоскости и получаем:

a (e + ta) + b (f + tb) + c * tc + d = 0

ae + bf + d + t (a 2 + b 2 + c 2 ) = 0

t = - (ae + bf + d) / (a ​​ 2 + b 2 + c 2 )

Следовательно, прогнозируемая точка будет:

P прогнозируется = (e + ka, f + kb, kc) , где k = - (ae + bf + d) / (a ​​ 2 + b 2 + c 2 )


Учитывая все переменные в решении, может быть немного трудно понять, если вы новичок в этой области. Но на самом деле все довольно просто. Вещи, которые вы должны выучить:

  • Стандартное уравнение для плоскости: ax + by + cz + d = 0
  • Как извлечь вектор нормали из уравнения плоскости
  • Что такое вектор нормали (вектор, который перпендикулярен всем векторам положения на плоскости)
  • Параметрическое представление линии: (x, y, z) = u + t * v *, где u - точка, которая лежит на линии t - действительный параметр, а v - вектор, параллельный линии.
  • Понимание того, что ближайший путь между точкой и плоскостью будет параллелен нормали к плоскости

Если вы поняли вышеизложенные понятия, вычисление проекции будет простым:

Вычислить вектор нормали целевой плоскости. Начиная с точки, которую вы хотите проецировать, двигайтесь параллельно вычисленному вектору нормали, пока не достигнете плоскости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...