Вычисление перпендикулярной плоскости к треугольнику в трехмерном пространстве
У меня есть треугольник в трехмерном пространстве, определяемый его 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.