在两次偏航中保持偏航

时间:2015-12-05 08:47:42

标签: java math rotation

我试图阻止用户向左或向右转得太远,但是在YAW从0转到360时有时会出现问题。

我有一个主要的YAW,我想阻止用户从主偏航中更换他们的YAW 60 / -60。主偏航是动态的,并且完全随机地变化。

以下是我目前正在使用的代码(不能正常工作)

float playeryaw = passenger.yaw; //The user

float right = car.yaw + 60;
float left = car.yaw - 60;

if (right > 360) { //Some checks to insure the YAW isn't negitive or too high
    right -= 360;
} else if (right < 0) {
    right += 360;
}

if (left > 360) {
    left -= 360;
} else if (right < 0) {
    left += 360;
}

if (playeryaw < left) {
    playeryaw = left; 
} else if (playeryaw > right) {
    playeryaw = right;
}

基本上我想防止汽车驾驶员向右或向左看太远。

1 个答案:

答案 0 :(得分:0)

您需要确保right > left。所以你不能只更新一个绑定。无论如何,我建议修改playeryaw

float playeryaw = passenger.yaw; //The user

//put playeryaw in the neighborhood of car.yaw
while(car.yaw - playeryaw > 180)
    playeryaw += 360;
while(car.yaw - playeryaw < -180)
    playeryaw -= 360;

float right = car.yaw + 60;
float left = car.yaw - 60;

if (playeryaw < left) {
    playeryaw = left; 
} else if (playeryaw > right) {
    playeryaw = right;
}

//put playeryaw in the desired range
while(playeryaw < 0)
    playeryaw += 360;
while(playeryaw > 360)
    playeryaw -= 360;

根据您使用的值,while语句可以切换为if(如果您可以确保这些值最多相差360°)。