Нахождение «подножия» высоты треугольника в трехмерном пространстве - PullRequest
1 голос
/ 10 марта 2010

Небольшая предыстория, в настоящее время я работаю над реализацией системы рендеринга треугольников в Expression2 для создания моделей .obj.

Одно из ограничений, с которыми я сейчас сталкиваюсь, заключается в том, что я не могу создавать полигоны старомодным способом, скорее, мне приходится создавать равнобедренные треугольники и отрезать их часть.

Моя текущая проблема заключается в том, что я работаю над тем, как и где разместить равнобедренный треугольник. (У меня все остальное как угол уже разобрано)

http://img22.imageshack.us/img22/3251/trianglem.png (Игнорировать синий треугольник)

v0, v1 и v2 - это 3 координаты в трехмерном пространстве, которые составляют желаемый треугольник.

Красная линия - это линия, которая идет от v1 и встречает гипотенузу под прямым углом вдоль плоскости треугольника. Я хочу вычислить p1, который, по сути, является точкой, находящейся точно на полпути между v1 и где высота соответствует гипотенузе, то есть «ноге».

Моя текущая попытка не работает, как никогда:

Dot =   (v0-v1):dot(v0-v2)
P1 = v0 + Dot*((v0-v2):normalized())

Я ценю любую помощь. Спасибо.

1 Ответ

0 голосов
/ 10 марта 2010

Я не имею понятия о языке, который вы используете. Что я недооценил, так это то, что у вас есть определенный треугольник с этими определенными линиями где-то в пространстве, и вы хотите точное положение определенной точки.

Если это то, что вы хотите, я думаю, что хороший подход будет (на несуществующем языке ..):

p.x = v0.x - v1.x
p.y = v0.y + v1.y / 2
p.z = v0.z + v1.z / 2

Надеюсь, это поможет .. извините за публикацию ответа на вопрос, о котором я абсолютно не знаю, просто пытаюсь помочь =)

...