【发布时间】:2019-10-15 07:04:20
【问题描述】:
我正在模拟具有三个运动轴(横滚、俯仰和偏航)的飞机。 我有横滚角(机翼围绕飞机机头尾轴倾斜的度数)、俯仰角(机头和地平线之间的角度)和偏航角(飞机的罗盘航向)。
我要确定的是升力的单位矢量(即从飞机“向上”的矢量) - 即。当飞机平直且水平时,升力矢量应指向正上方,当飞机机头笔直向上时,升力矢量由180 - roll_angle 给出,等等。
通过简单地采用新点的球面坐标并转换为笛卡尔并采用合成向量给出的平面的法线,我仅在两个角度(例如滚动和偏航)方面取得了部分进展。但是,我不确定如何考虑第三个角度(音高)。
我想要实现的是一个接受三个角度(滚动、俯仰和偏航)并给出升力单位矢量的函数。
function get_lift_vector()
{
var lift_vector_heading = 0;
var lift_vector_elevation = 90;
// Adjust to range (-180, 180]
roll_angle %= 360;
if(roll_angle > 180)
{
roll_angle = 180 - roll_angle;
}
// Roll
if(roll_angle > 0)
{
lift_vector_heading = 90;
lift_vector_elevation = 90 - roll_angle;
}
else if(roll_angle < 0)
{
lift_vector_heading = 270;
lift_vector_elevation = 90 - roll_angle;
}
// Yaw
lift_vector_heading += aircraft_compass_heading;
lift_vector_heading %= 360;
// Pitch
}
【问题讨论】:
标签: javascript vector 3d game-physics