在 Y 轴上反射角度
我目前正在使用“Pi - 角度”反映 Y 轴上的角度。我使用的角度系统以弧度为单位,0 表示东,-Pi/2 表示北,Pi/2 表示南,+/- Pi 表示西,当我尝试使用上述方法来反映角度时,它经常出现返回高于 Pi 且超出范围的值。我怎样才能防止这种情况发生?
谢谢,
DLiKS
I'm currently to reflect an angle in the Y axis using 'Pi - angle'. The angle system I'm using is in radians, with 0 being east, -Pi/2 being north, Pi/2 being south and +/- Pi being west and when I try using the above method to reflect an angle, it frequently returns values above Pi, outside the range. How can I prevent this from happening?
Thanks,
DLiKS
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
关于 x 轴的反射:只需使用
-angle
即可。关于 y 轴的反射:使用
这会在 0 处创建分支切割:3° 映射到 177°,而 -3° 映射到 -177°。 0 映射到 pi。 (如果您需要 [-pi,pi)区间内的角度(不包括 +pi),请将“>=”更改为“>”。
正如您的问题陈述所暗示的那样,这还假设输入角度在 [-pi,pi] 范围内。如果不是,您需要首先使用对称模 2*pi(其中 smod(x,M) = mod(x+M/2,M) - M/2)进行标准化。
Reflection about the x-axis: just use
-angle
.Reflection about the y-axis: use
This creates a branch cut at 0: 3° maps to 177°, whereas -3° maps to -177°. 0 maps to pi. (If you require angles in the [-pi,pi) interval that excludes +pi, change the ">=" to ">".
This also assumes that the input angle is within the [-pi,pi] range, as your problem statement suggests. If not, you need to normalize using a symmetric modulo 2*pi (where
smod(x,M) = mod(x+M/2,M) - M/2
) first.首先将初始角度除以 Pi。因此,在 C 语言中:
问题是在进一步处理之前始终规范您的输入。
By first having your initial angle modulo-divided by Pi. So, in C language:
The thing is to always normalize your input before further processing.
由于整圆为 2*pi,因此您始终可以减去 2*pi 并使角度回到范围内。
Since full circle is 2*pi, you ca always subtract 2*pi and have the angle back in range.
你到底为什么选择北为-Pi/2。它打破了单位圆上所有默认的东西,比如 sin(angle) = y 坐标。
但要回答你的问题,你可以将 k*2Pi 添加到所有角度(其中 k 是任何整数),并且角度将保持不变。
Why on earth whould you choose north to be -Pi/2. It breaks all default stuf like sin(angle) = y coordinate on the unit circle.
But to answer your question you can add k*2Pi to all your angles (where k is any integer number) and the angle will stay the same.