Расстояние Мёллера – Трумбора отличается от расстояния между точками и плоскостями, когда луч проходит вдоль нормали - PullRequest
0 голосов
/ 20 февраля 2020

Учитывая это:

Vector3 p_a = (-8720, 1105, -5249)
Vector3 p_b = (-13149, 1124, -5249)
Vector3 p_c = (-13330, 1103, -3404) //p_a p_b, p_c are the points of the triangle
Vector3 p_q = (-11737, 1071, -4678)
Vector3 normal = new Vector3(0.0000000, 0.9999285, 0.0119620) //(0, 4096, 49) normalized

Если я вычислю расстояние от точки p_q до плоскости, созданной треугольником, используя Vector3.Dot((p_q - p_a), normal) Результат будет 27,16

Однако, если я выбрасываю луч из p_q вдоль нормали и нахожу расстояние, используя алгоритм Мёллера-Трумбора ( эта реализация для уточнения, хотя я пробовал с другими и получил тот же результат ) Я получаю, что расстояние до пересечения составляет 40,2

Поскольку луч с использованием Мёллера-Трумбора проходит по нормали, если я получаю пересечение, разве я не должен получить такое же расстояние? Я, должно быть, упускаю что-то очевидное, но не могу понять, что.

...