спроецированный вектор нормали к поверхности на плоскость xy

у меня есть плоскость, уравнение которой ax+by-z+d=0. следовательно, его нормальный вектор (a,b-1). Теперь мне нужно спроецировать мой вектор на плоскость xy, чтобы вычислить его направление от оси севера (я думаю, здесь это ось Y. Пожалуйста, помогите мне получить спроецированный вектор. спасибо.


person niro    schedule 05.02.2011    source источник
comment
Мне непонятно. Вы хотите спроецировать на плоскость World XY? X: (1,0,0) Y: (0,1,0) Z:(0,0,1) или вы хотите проецировать на произвольную плоскость?   -  person santiagoIT    schedule 05.02.2011
comment
@ santiagoIT=› у меня есть трехмерная плоскость, и ее уравнение равно ax+by-z+d=0. для этой плоскости я вычислил вектор нормали. Я думаю, что вектор нормали находится в 3D. теперь мне нужно спроецировать это на мировую плоскость XY. лучше, если я смогу спроецировать вектор на произвольную плоскость, проходящую через точку моей плоскости. Но, я думаю, я могу получить аналогичный результат, даже если я работаю с мировой плоскостью XY.   -  person niro    schedule 05.02.2011


Ответы (1)


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

// generic code, actual code depends on your engine.
// BasePlane.GetNormal() would equal to (0,0,1) for the X/Y plane
float dir = YourPlane.GetNormal().Dot(BasePlane.GetNormal());

Если оно равно 1, ваша плоскость обращена в том же направлении, что и плоскость, с которой вы тестируете. Если он равен -1, он обращен к плоскости. Приравнивание к 0 будет означать, что плоскость стоит ортогонально тестируемой плоскости. Надеюсь это поможет.

person Xeo    schedule 05.02.2011
comment
@ xeo; спасибо за ответ. Извините, что смущаю вас. Но на самом деле мне нужно получить спроецированный вектор нормали. я не знаю, как спроецировать мой трехмерный вектор (т. е. a, b, -1) на плоскость xy. затем он становится двумерным вектором. Надежда, теперь понятно. [г_ниро] - person niro; 05.02.2011