Math Y轴上的反射角

Math Y轴上的反射角,math,trigonometry,angle,Math,Trigonometry,Angle,我现在要用“π-角度”在Y轴上反射一个角度。我使用的角度系统以弧度为单位,0表示东,-Pi/2表示北,Pi/2表示南,+/-Pi表示西,当我尝试使用上述方法反射角度时,它经常返回大于Pi的值,超出范围。我怎样才能防止这种情况发生 谢谢 DLiKS关于x轴的反射:只需使用-角度 关于y轴的反射:使用 if (angle >= 0) return pi - angle else return -pi - angle 这将在0:3°处创建分支切割,映射到17

我现在要用“π-角度”在Y轴上反射一个角度。我使用的角度系统以弧度为单位,0表示东,-Pi/2表示北,Pi/2表示南,+/-Pi表示西,当我尝试使用上述方法反射角度时,它经常返回大于Pi的值,超出范围。我怎样才能防止这种情况发生

谢谢


DLiKS

关于x轴的反射:只需使用
-角度

关于y轴的反射:使用

   if (angle >= 0)
      return pi - angle
   else
      return -pi - angle
这将在0:3°处创建分支切割,映射到177°,而-3°映射到-177°。0映射到pi。(如果需要[-pi,pi)间隔中排除+pi的角度,请将“>=”更改为“>”


这还假设输入角度在[-pi,pi]范围内,正如您的问题陈述所示。如果不在范围内,则需要使用对称模2*pi(其中
smod(x,M)=mod(x+M/2,M)-M/2
)进行规格化首先。

因为整圆是2*pi,所以总是可以减去2*pi,使角度回到范围内。

首先将初始角度模除以pi。因此,在C语言中:

angle = fmod(angle, 2*Pi);
if (angle < -Pi)
    angle = angle + 2*Pi;

float inverted = Pi - angle;
angle=fmod(角度,2*Pi);
如果(角度<-Pi)
角度=角度+2*Pi;
浮点数=π-角度;

问题是,在进一步处理之前,始终要将输入标准化。

究竟为什么选择北为-Pi/2。它打破了单位圆上所有默认的类似sin(angle)=y坐标的stuf


但是为了回答你的问题,你可以把k*2Pi加到所有的角度上(其中k是任意整数)在你们投票之前,请检查我的数学;-)如果输入和输出角度被标准化为介于-pi和+pi之间,则更早的编辑在技术上是正确的。否则,你是正确的。不正确。你需要考虑角度为2×π,而不是模π。我确实这样做了,但是你可能想删除“C语言”。位,因为“%”是整数模运算符,而不是浮点运算符;请改用fmod()。North是-Pi/2,因为我使用的坐标系位于左上角的位置(0,0),角度是相对于x轴测量的。它是atan2返回的默认角度系。