// we need separate matrixes to implement the roll channel (mixed with yaw)
// engine 1 matrixes
Ym_mix = min(1, max(-1, Ylvl + Rlvl));
Rm_mix = min(1, max(-1, Ylvl + -Rlvl));
MATRIX3 matrix_x_eng1 = {
1, 0, 0,
0, cos(GIMBAL_ANGLE*-Plvl),-sin(GIMBAL_ANGLE*-Plvl),
0, sin(GIMBAL_ANGLE*-Plvl), cos(GIMBAL_ANGLE*-Plvl)
};
MATRIX3 matrix_y_eng1 = {
cos(GIMBAL_ANGLE*Rm_mix),0,sin(GIMBAL_ANGLE*Rm_mix),
0,1,0,
-sin(GIMBAL_ANGLE*Rm_mix),0,cos(GIMBAL_ANGLE*Rm_mix),
};
MATRIX3 matrix_xy_eng1 = mul(matrix_x_eng1, matrix_y_eng1);
VECTOR3 output_vec_eng1 = tmul(matrix_xy_eng1, YF77_dir);
SetThrusterDir(th_YF77[0], output_vec_eng1);
// engine 2 matrixes
MATRIX3 matrix_x_eng2 = {
1, 0, 0,
0, cos(GIMBAL_ANGLE*-Plvl),-sin(GIMBAL_ANGLE*-Plvl),
0, sin(GIMBAL_ANGLE*-Plvl), cos(GIMBAL_ANGLE*-Plvl)
};
MATRIX3 matrix_y_eng2 = {
cos(GIMBAL_ANGLE*Ym_mix),0,sin(GIMBAL_ANGLE*Ym_mix),
0,1,0,
-sin(GIMBAL_ANGLE*Ym_mix),0,cos(GIMBAL_ANGLE*Ym_mix),
};
MATRIX3 matrix_xy_eng2 = mul(matrix_x_eng2, matrix_y_eng2);
VECTOR3 output_vec_eng2 = tmul(matrix_xy_eng2, YF77_dir);
SetThrusterDir(th_YF77[1], output_vec_eng2);
sprintf(oapiDebugString(), "Y: %.3f ||R: %.3f", Ym_mix, Rm_mix);