Sha*_*ean 2 c# xna physics trigonometry
这段代码取自使用XNA框架构建的游戏.我想要解释一下它在三角形和物理学方面是如何工作的.
ball.velocity = new Vector2((float)Math.Cos(cannon.rotation),(float)Math.Sin(cannon.rotation));
ball.rotation是一个精灵的旋转,我应该想到的是弧度.
为什么他们可以使用弧度中的角度来找到x位置然后找到斜边指向的方向的y位置相同的东西.
我问这个的原因.我想了解这个框架如何计算trig.我试图让一个精灵转向鼠标所在的方向,即:x和y已知,我只需要角度.
所以这里有2个问题.解释上面的代码并将sprite指向已知点的方向.
更新:
我发现对象所在的点a不是(0,0),因为xna使用逆坐标系.所以我现在的变量是:
对象点.鼠标点.
jas*_*son 10
每个角度对应于单位圆上的一个点(单位圆是以半径为中心的原点的唯一圆;也就是说,单位圆是满足的点的集合x^2 + y^2 = 1).对应关系如下:给定角度theta,theta对应于该点(cos theta, sin theta).为什么(cos theta, sin theta)住在单位圈?因为每个人都喜欢的身份
cos^2 theta + sin^2 theta = 1.
Run Code Online (Sandbox Code Playgroud)
这是x = cos theta和y = sin theta,点(x, y)满足x^2 + y^2 = 1,这样(x, y)是在单位圆上.
要反转这一点,给定单位圆上的一个点,您可以通过使用反正切(可能已知为arctan或atan有时tan-1)来找到角度.准确地说,(x, y)在单位圆上给出的是你可以(x, y)通过计算找到对应的角度theta = arctan(y / x).
当然,这里有一些杂乱的细节.该功能arctan不能告诉输入之间的差异(x, y),并(-x, -y)因为y / x与(-y / -x)具有相同的符号.而且,arctan无法处理输入的地方x = 0.因此,我们通常通过定义atan2将为我们处理这些混乱细节的函数来处理这些问题
atan2(y, x) = arctan(y / x) if x > 0
= pi + arctan(y / x) if y >= 0, x < 0
= -pi + arctan(y / x) if y < 0, x < 0
= pi / 2 if y > 0, x = 0
= -pi / 2 if y < 0, x = 0
= NaN if y = 0, x = 0
Run Code Online (Sandbox Code Playgroud)
在C#中,Math.Atan是arctan我上面提到Math.Atan2的功能atan2,是我上面提到的功能.
| 归档时间: |
|
| 查看次数: |
3453 次 |
| 最近记录: |