Вычисление перпендикулярной плоскости к треугольнику в трехмерном пространстве

У меня есть треугольник в трехмерном пространстве, определяемый его 3 вершинами, p0, p1 и p2.

Я хочу вычислить плоскость в этом трехмерном пространстве, которая лежит вдоль p0 и p1 и обращена к третьей точке, p2.

Эта плоскость должна определяться положением и нормализованным направлением /

Помимо того, что он лежит вдоль p0 и p1 и обращен к p2, плоскость также должна быть перпендикулярна плоскости, созданной p0, p1 и p2

Я боролся с этим довольно долго, и любая помощь, которую кто-либо может предложить, очень ценится.

2 ответа

Решение

Ваш вопрос некорректен. Для любой плоскости, лежащей на p0 и p1, на этой плоскости будет некоторая точка, которая "смотрит" на точку p2. Таким образом, все, что осталось вычислить, это некоторая плоскость вдоль p0 и p1.

normal = normalize(cross(p1-p0, pX-p0))  //pX is anything except p1
planePoint = p0

РЕДАКТИРОВАТЬ: см. Комментарии

вот пример моего комментария объяснения

октава:14> р0
p0 =

0 0 0

октава:15> р1
p1 =

0 0 5

октава:16> р2
p2 =

5 0 0

октава:17> крест (p1-p0, крест (p1-p0,p2-p0))
ANS =

-125 0 0

Вы заметите, что знак неправильный, поиграйтесь с порядком параметров в перекрестном произведении, чтобы получить правильную ориентацию. Также не забудьте нормализовать... но это не повлияет на направление. Также убедитесь, что норма после каждого перекрестного произведения не близка к 0, иначе нет уникального ответа.. (треугольник образует линию)

Если я не пойму, о чем вы спрашиваете, вектор от линии до p2 будет нормалью к плоскости, которую вы пытаетесь определить. По сути, вы строите линию под прямым углом к ​​линии p0-p1, проходящей через p2.

Другие вопросы по тегам