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

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

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

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

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

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


person Fascia    schedule 10.03.2010    source источник


Ответы (2)


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

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

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

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

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

0 0 0

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

0 0 5

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

5 0 0

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

-125 0 0

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

person Chris H    schedule 10.03.2010
comment
Ах да, я должен был уточнить. Мои извинения. В дополнение к тому, что она лежит вдоль p0 и p1 и обращена к p2, плоскость также должна быть перпендикулярна плоскости, созданной точками p0, p1 и p2. - person Fascia; 10.03.2010
comment
затем normal = normalize(cross(p1-p0, normalize(cross(p1-p0,p2-p0))))) и planePoint по-прежнему p0. - person Chris H; 10.03.2010
comment
Это сработало очень хорошо, спасибо за вашу помощь. Это кажется почти очевидным теперь, когда вы разъяснили это для меня. - person Fascia; 10.03.2010

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

person Jerry Coffin    schedule 10.03.2010