Это то, что вы спрашиваете?
Преобразовать простую плоскость, подобную плоскости xy, в вашу плоскость довольно просто:
ваша плоскость Ax + By + Cz + D = 0
плоскость xy - это просто z = 0.т.е. A = B = D = 0, а C = все, что вы хотите.Для простоты мы скажем 1.
Когда у вас есть плоскость в этой форме, нормаль плоскости определяется вектором (A, B, C)
, так что вы хотитевращение, которое приведет вас от (0,0,1) к (A, B, C) *
* Обратите внимание, что это будет работать, только если {A, B, C} является унитарным.поэтому вам, возможно, придется разделить AB и C на sqrt (A ^ 2 + B ^ 2 + C ^ 2).
вращение вокруг только двух осей может привести вас из любого направления в любое другое направление,поэтому мы выберем x и y;
здесь - матрицы вращения для вращений на a вокруг оси x и b вокруг оси y.
Rx: = {{1, 0, 0}, {0, Cos [a], Sin [a]}, {0, -Sin [a], Cos [a]}}
Ry: = {{Cos [b], 0, -Sin [b]}, {0, 1, 0}, {Sin [b], 0, Cos [b]}}
, если мы делаем вращение вокруг x с последующим вращением вокруг yвектора вектора, нормального к плоскости xy, (0,0,1), получаем:
Ry.Rx. {0,0,1} = {-Cos [a] Sin [b],Sin [a], Cos [a] Cos [b]}
, которые являются вашими значениями ABC.
т.е.
A = -Cos [a] Sin [b]
B = Sin [a]
C = Cos [a] Cos [b]
Отсюда все просто.
a = aSin [B]
, поэтому теперь A = -Cos [aSin [B]] Sin [b]
Cos [aSin [x]] = sqrt (1-x ^ 2) так:
A = -Sqrt [1-B ^ 2] * Sin [b]
b = aSin [-A / sqrt [1-B ^ 2]]
a = aSin [B] (вращение вокруг оси x)
b = aSin [-A / sqrt [1-B ^ 2]] (вращение вокруг оси y)
Итак, мытеперь у нас есть углы вокруг осей x и y, на которые нам нужно повернуться.
После этого вам просто нужно сместить самолет вверх или вниз, пока он не совпадет с тем, который у вас уже есть.
Плоскость, которую вы имеете в данный момент (после этих двух поворотов), будет Ax + By + Cz = 0.
нужная вам плоскость Ax + Bx + Cz + D = 0.Чтобы узнать d, мы увидим, где ось z пересекает вашу плоскость.
т.е. Cz + D = 0 -> z = -D / C
Таким образом, мы преобразуем ваш z в Ax +На + Cz = 0 на -D / C, чтобы получить:
Ax + By + C (z + D / C) = Ax + By + Cz + D = 0.О, если бы вы посмотрели на это!
Оказывается, вам не нужно делать никаких дополнительных вычислений, если у вас есть углы поворота на!
Два угла дадут вам A, Bи C. Чтобы получить D, просто скопируйте его из того, что у вас было.
Надеюсь, что это поможет, хотя я не совсем уверен, как вы планируете на самом деле рисовать самолет, хотя ...
Отредактировано, чтобы исправить ужасное форматирование.надеюсь, теперь лучше.