Если я правильно понял, вы хотите проецировать точки на 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 - вектор, параллельный линии.
- Понимание того, что ближайший путь между точкой и плоскостью будет параллелен нормали к плоскости
Если вы поняли вышеизложенные понятия, вычисление проекции будет простым:
Вычислить вектор нормали целевой плоскости. Начиная с точки, которую вы хотите проецировать, двигайтесь параллельно вычисленному вектору нормали, пока не достигнете плоскости.