Процесс
На Рисунке 1 я подписал различные возможности, играющие роль в этом примере так чтобы было легче объяснить процесс и код. Ниже приведены шаги для построения inside/outside тестера:
Даны три вектора положения pA, pB, и pC, представляющие точки на поверхности плоскости, мы можем воспользоваться вычитанием векторов для создания двух векторов (vectorA и vectorB), чья величина и направление задают плоскость в 3D пространстве. С помощью этих двух векторов (vectorA and vectorB) мы будем применять векторное произведение для нахождения нормали к плоскости, которую мы назовем myNormal. Мы в основном заинтересованы в направлении myNormal, поэтому мы нормализуем его. Следующая операция -- использовать вычитание векторов для образования вектора от любой точки, лежащей на плоскости к точке, чье положение мы пытаемся определить. Давайте назовем его dVector. Он нас интересует только как вектор направления, поэтому мы нормализуем dVector также. Вычислим скалярное произведение myNormal и dVector -- образуется myNormal.dot(dVector). Так как оба этих вектора нормализованы, скалярное произведение будет косинусом угла между ними двумя. Если скалярное произведение равно нулю, то точка находится на плоскости. Если скалярное произведение больше нуля, то точка находится на стороне плоскости, противоположной направлению нормали. Если скалярное произведение меньше нуля, то точка лежит на стороне плоскости с той же стороны, куда направлена нормаль.
Содержание раздела