Это действительно легко, все, что вам нужно сделать, это найти перпендикулярное (здесь сокращение |_
) расстояние от точки P
до плоскости, затем перевести P
назад по перпендикулярному расстоянию в направлении нормали плоскости . В результате получается перевод P
в плоскости.
Возьмем простой пример (который мы можем проверить путем проверки):
Установить n = (0,1,0) и P = (10,20, -5).
Прогнозируемая точка должна быть (10,10, -5). Из проверки вы можете видеть, что Pproj находится в 10 единицах перпендикулярно плоскости, и если бы она была в плоскости, она имела бы y = 10.
Так как мы можем найти это аналитически?
Плоское уравнение: Ax + By + Cz + d = 0. Это уравнение означает "для того, чтобы точка (x, y, z) находилась на плоскости, она должна удовлетворять Ax + By + Cz + d = 0" .
Что такое уравнение Ax + By + Cz + d = 0 для плоскости, нарисованной выше?
Самолет имеет нормальное n = (0,1,0). Для определения d просто используйте контрольную точку , уже находящуюся в плоскости :
(0)x + (1)y + (0)z + d = 0
Точка (0,10,0) находится на плоскости. Подключив выше, находим, d = -10. Тогда уравнение плоскости будет 0x + 1y + 0z - 10 = 0 (если вы упростите, вы получите y = 10).
Хорошая интерпретация d
состоит в том, что она говорит о перпендикулярном расстоянии , которое вам потребуется для перемещения плоскости вдоль ее нормали, чтобы плоскость проходила через начало координат .
В любом случае, когда у нас есть d
, мы можем найти расстояние _ _ любой точки до плоскости по следующему уравнению:
Существует 3 возможных класса результатов для | _ расстояния до плоскости:
- 0: НА САМОЛЕТЕ ТОЧНО (почти никогда не бывает с ошибками с плавающей запятой)
- + 1:> 0: ВПЕРЕД плоскости (на нормальной стороне)
- -1: <0: позади самолета (на противоположной стороне нормального) </li>
Во всяком случае,
Что вы можете проверить на правильность путем проверки на диаграмме выше