Java 2D游戏中关于角度和方向的约定是什么?
我正在使用Java制作一个简单的类似小行星的游戏,其中涉及角度,但我不确定如何设置各种对象的角度和方向 我有三个主要问题:Java 2D游戏中关于角度和方向的约定是什么?,java,conventions,angle,Java,Conventions,Angle,我正在使用Java制作一个简单的类似小行星的游戏,其中涉及角度,但我不确定如何设置各种对象的角度和方向 我有三个主要问题: 0弧度应该在哪里?(是否指向上方、是否指向右侧等) 顺时针旋转应该增加还是减少该值 值的范围应该是从0到(2*pi)还是从-pi到pi 一般来说,在任何语言中,你都应该遵循关于角度的相同约定,因为角度实际上比计算机相关概念更具数学性,而且数学是通用的(例如,在任何合理的语言中,与角度相关的数学函数都应该,而且在我的经验中,它们的行为方式是相同的) 因此,这些约定并不是jav
一般来说,在任何语言中,你都应该遵循关于角度的相同约定,因为角度实际上比计算机相关概念更具数学性,而且数学是通用的(例如,在任何合理的语言中,与角度相关的数学函数都应该,而且在我的经验中,它们的行为方式是相同的) 因此,这些约定并不是java独有的,因为无论何时处理角度,它们都是一组很好的规则:
- 0弧度在右边
- 增加角度意味着逆时针移动,因此
弧度向上,pi向左,等等pi/2
[0,2pi]
,这就是我喜欢使用角度的方式。一般来说,这会使事情变得更简单,但是一些java函数似乎使用了另一种方法。主要的三角函数sin
、cos
和tan
可以接受任何数字作为输入(例如sin(pi)
=sin(3pi)
),就像数学中这些函数的域都是实数一样。这些函数的范围与pi无关。但是,逆三角函数(asin
、acos
和atan
,而不是atan2
)具有javadoc中定义的有限范围:
the returned angle is in the range -pi/2 through pi/2.
这也与数学一致。因此:
- 大多数情况下,您应该使用
。它更容易阅读和操作[0,2pi]
- 在处理逆三角函数时,请记住它们的范围是
,并根据需要进行转换[pi/2,-pi/2]