有没有简洁的方法将实数范围内的角度映射到180到-180度内,例如:361=1;-361=-1

例:270=-90;-270=90;
即在一二象限的角度为0-180,在三四象限的角度为-180到0度。
我用的方法是
角度n=n%360
if(n>180)n-360;
else if(n<-180)n+360;
有没有更简洁的方法~

2个回答

以下我的方法

  n = n%360;              // 消除周期  正实数落在0~360 负实数落在-360~0
  n = n - n/180*360;      // 分段反转  将 180~360反转为-180~0 ,将 -360~-180反转成0~180
Azy759
Azy759 还好啦
4 年多之前 回复

n = 180 - (180 - n) % 360;

gsxab
gsxab 第二句n - 360。。。不小心反了
4 年多之前 回复
gsxab
gsxab 我好像确实不对啊,不好意思。。。。
4 年多之前 回复
gsxab
gsxab 评论里改了。。。
4 年多之前 回复
Azy759
Azy759 你的方法不tuo啊,当输入n=270时,结果是90,应为-90
4 年多之前 回复
gsxab
gsxab 打错了第一句和原来一样
4 年多之前 回复
gsxab
gsxab ……还有负的啊,没仔细看抱歉…… 那么应该是, n = n - (180 - n) % 360; n = n > 180 ? 360 - n : n;
4 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐