Iphone 三角计算

Iphone 三角计算,iphone,math,trigonometry,Iphone,Math,Trigonometry,我想这将是一个基本的问题,然而,我的数学技能是缺乏的 我正在开发一款iphone游戏,人们在游戏中画出自己的平台,把鸡蛋弹起来 游戏由一个连接两个节点的平台组成。每个节点都有一个x和y值。这个平台可以处于任何角度,这取决于用户绘制它的方式。当有东西击中这个平台时,我需要它垂直地击中。我知道我需要多少总功率,如何在X和Y之间分解。我画了一张图来更好地解释 这里有两个例子,关于这个问题,我得到的信息是节点的X&Y坐标和虚线垂直线的长度。我需要找到的是X和Y线的长度,以及X是朝正方向还是朝负方向移动

我想这将是一个基本的问题,然而,我的数学技能是缺乏的

我正在开发一款iphone游戏,人们在游戏中画出自己的平台,把鸡蛋弹起来

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


这里有两个例子,关于这个问题,我得到的信息是节点的X&Y坐标和虚线垂直线的长度。我需要找到的是X和Y线的长度,以及X是朝正方向还是朝负方向移动。

如果有两个节点,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

如果两点是
A
B
,直线长度是
L
,则首先需要找到相对于x轴的角度
AB

theta = atan( (B.x - A.x) / (B.y - A.y) )
有了它,您可以计算出
x
y

x = L * cos( theta )
y = L * sin( theta )

<> P>你必须考虑的唯一的边缘情况是水平线(在这种情况下,当计算θ时,由于除以0,计算将失败)。在水平线的情况下,
x=0
y=L

平台是连接两个点的线,对吗?它完全由两个点定义。击中它的“东西”在哪里?您想知道什么?您可以计算节点线的坡度,然后使用
-1/slope
表示垂直。使用
y/x=-1/slope
和毕达哥拉斯定理,你可以用一个变量建立一个等式。你可能想添加这个,因为玩家可能希望事情随时“反弹”:
x=y>0-x:x
y=y>0-y:y
啊,是的,当然它们是相似的三角形;)非常感谢
theta=atan2(B.y-A.y,B.x-A.x)
,您不必担心边缘情况。