三角计算

时间:2012-06-08 22:02:57

标签: iphone math trigonometry

我认为这是一个基本问题,但我的数学技能缺乏。

我正在开发一款iphone游戏,人们可以利用自己的平台来反弹鸡蛋。

游戏由一个连接2个节点的平台组成,每个节点都有一个x和y值,这个平台可以处于任何角度,具体取决于用户如何绘制它,当某些东西击中这个平台时,我需要它垂直击中。我知道我需要多少总功率,如何在X和Y之间分解它。我画了一张图片来更好地解释......

Two examples of my problem each for a different direction

以下是两个例子,我对这个问题的信息是X&节点的Y坐标,以及虚线垂直线的长度。我需要找到的是X和Y线的长度,以及X是正向还是负向。

2 个答案:

答案 0 :(得分:2)

如果您有两个节点,N1和N2,以及行长度L,则:

ndx = N1.x - N2.x
ndy = N1.y - N2.y
ndist = sqrt(ndx*ndx + ndy*ndy)
x = ndy * L / ndist
y = ndx * L / ndist

答案 1 :(得分:1)

如果您的两个点是AB,并且线条的长度为L,则首先需要找到相对于AB的角度theta = atan( (B.x - A.x) / (B.y - A.y) ) x轴:

x

有了这个,你可以这样找出yx = L * cos( theta ) y = L * sin( theta )

x=0

您必须考虑的唯一边缘情况是水平线(在这种情况下,计算将失败,因为在计算θ时除以零)。如果是水平线,y=L和{{1}}。