如何确定角度A或B是否更接近角度C?

时间:2017-09-14 03:18:41

标签: algorithm

我想计算角度A或B是否更接近角度C.我确定这很容易但是角度在360处返回0的方式反之亦然让我感到困惑的是我是怎样的。我应该比较一下。

现在我正在做这样的事情,但这是错误的:

    similarity1 := degree - targetAngle1
    if (similarity1 > 360){
        similarty1 := 360 - similarity1
    }
    similarity2 := degree - targetAngle2
    if (similarity2 > 360){
        similarty2 := 360 - similarity2
    }
    if (similarity1 < similarity2){
        degree := similarity1
    } else {
        degree := similarity2
    }

答案必须非常简单,但由于某种原因,问题让我感到困惑。

2 个答案:

答案 0 :(得分:0)

如果你使用-180到180范围内的数字,你可以简单地比较绝对值,看看哪个更少。

要将数字输入-180到180范围,您必须认识到从角度添加或减去360并不会改变它。

similarity1 := degree - targetAngle1
if (similarity1 > 180){
    similarty1 := similarity1 - 360
}
else if (similarity1 < -180){
    similarity1 := similarity1 + 360
}
similarity2 := degree - targetAngle2
if (similarity2 > 180){
    similarty2 := similarity2 - 360
}
else if (similarity2 < -180){
    similarity2 := similarity2 + 360
}
if (abs(similarity1) <= abs(similarity2)){
    degree := similarity1
} else {
    degree := similarity2
}

答案 1 :(得分:0)

没有多个条件的方法,但使用三角函数调用:

if Cos(C-A) > Cos(C-B) then
    A closer to C