Я понятия не имею, как бы я поступил по этому поводу, кто-нибудь знает, как я могу вращать x, y и z с помощью рыскания, тангажа и крена ?, Я могу только сделать 2D-вращение, но это не такчто я ищуЭто текущий код, который у меня есть.
Тяга и тангаж и крен должны быть в градусах.Не радианы.
class Vector3
{//
public:
float x, y, z;
void rotate(float yaw, float pitch, float roll) {
}
};
Приветствуется решение, которое не требует внешней библиотеки.
edit:
void rotate(float yaw, float pitch, float roll) { //X Y Z Rotation
float cosa = cos_r(yaw); float cosb = cos_r(pitch); float cosc = cos_r(roll);
float sina = sin_r(yaw); float sinb = sin_r(pitch); float sinc = sin_r(roll);
float Axx = cosa * cosb;
float Axy = cosa * sinb * sinc - sina * cosc;
float Axz = cosa * sinb * cosc + sina * sinc;
float Ayx = sina * cosb;
float Ayy = sina * sinb * sinc + cosa * cosc;
float Ayz = sina * sinb * cosc - cosa * sinc;
float Azx = -sinb;
float Azy = cosb * sinc;
float Azz = cosb * cosc;
float px = x; float py = y; float pz = z;
x = Axx * px + Axy * py + Axz * pz;
y = Ayx * px + Ayy * py + Ayz * pz;
z = Azx * px + Azy * py + Azz * pz;
}
Я пробовал это, но это не такработай.cos_r и sin_r - это функции, которые принимают градусы.