TL:DR?
Математика и линейная алгебра
Таким образом, плоскости в трехмерном пространстве можно определить как двумерный бесконечный прямоугольник, который падает на 3 точки (что вы знаете).
Его также можно определить перпендикулярным (нормальным) вектором и константой того, насколько далеко от начала координат находится плоскость.
Three.js берет вектор нормали (вектор, который перпендикулярен плоскости, которую вы хотите) и в основном применяет линейную алгебру, чтобы найти плоскость, а затем перемещает ее на постоянное расстояние от начала координат.
Объяснение математического расчета: если у нас есть вектор A и B, которые ортогональны (перпендикулярны), то их скалярное произведение равно 0. Таким образом, если мы используем этот принцип, мы можем фактически взять известный вектор X и найти 2 ортогональных вектора Y и Z, которые будут копланарными (из-за свойств ортогональности) путем обратного решения X (точка) Y = 0 и X (точка) Z = 0. Теперь у нас есть 2 копланарных вектора, чтобы сделать нашу плоскость, которую мы устанавливаем на расстоянии константы от источник
(подумайте, как у векторов есть начало и конец. Если копланарные векторы имеют общее начало, то у нас есть 3 точки: 2 конца и 1 начало, то есть 3 точки для создания плоскости.)
Математическая теория. Объяснение того, почему это работает:
Я не умею хорошо рисовать (без ручки и бумаги), но в основном думаю о векторе в трехмерном пространстве. Теперь подумай обо всех векторах, которые могут быть к нему перпендикулярны. По сути, это создает бесконечное количество перпендикулярных векторов, вращающихся по кругу перпендикулярно оригиналу, и если мы будем соединять их бесконечно, мы создадим плоскость.
Если у вас когда-нибудь будет возможность пройти курс линейной алгебры, я очень рекомендую это сделать. Это чрезвычайно интересно, очень связано с компьютерной графикой и объясняет много математики 3D-пространства, которую использует THREEjs.
person
Rush2112
schedule
29.07.2016