【问题标题】:Keep a yaw within two yaws将偏航保持在两个偏航范围内
【发布时间】:2015-12-05 08:47:42
【问题描述】:

我试图阻止用户向左或向右转太远,但在放弃我的检查时,有时 YAW 从 0 变为 360 时遇到问题。

我有一个主偏航角,我想阻止用户从主偏航角改变他们的 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;
}

基本上,我想防止汽车司机看得太远。

【问题讨论】:

    标签: java math rotation


    【解决方案1】:

    您需要确保right &gt; 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°)。

    【讨论】:

    • 完美运行!谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-29
    • 2011-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-25
    • 2016-05-04
    相关资源
    最近更新 更多