我想计算角度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
}
答案必须非常简单,但由于某种原因,问题让我感到困惑。
答案 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