我有 2 个圆在某个碰撞点和某个碰撞角度下发生碰撞,我使用以下公式计算:
C1(x1,y1) C2(x2,y2)
并且连接它们的中心的线和x轴之间的角度是
X = arctg (|y2 - y1| / |x2 - x1|)
我想要的是在与另一个圆圈碰撞的相同角度下平移顶部的圆圈。我的意思是角度 X,我不知道我应该给出什么平移坐标才能进行正确和直接的平移!
我有 2 个圆在某个碰撞点和某个碰撞角度下发生碰撞,我使用以下公式计算:
C1(x1,y1) C2(x2,y2)
并且连接它们的中心的线和x轴之间的角度是
X = arctg (|y2 - y1| / |x2 - x1|)
我想要的是在与另一个圆圈碰撞的相同角度下平移顶部的圆圈。我的意思是角度 X,我不知道我应该给出什么平移坐标才能进行正确和直接的平移!
对于我认为你的意思,这里是如何干净地做到这一点。
在向量中思考。
假设底圆的中心有坐标(x1,y1)
,顶圆的中心有坐标(x2,y2)
。然后定义两个向量
support = (x1,y1)
direction = (x2,y2) - (x1,y1)
现在,两个中心之间的线由参数表示完全描述
line = support + k*direction
中的k
任何值(-inf,+inf)
。在最初的时候,代k=1
入上面的等式确实给出了顶圆的坐标。在稍后的某个时间t
, 的值k
将会增加,并且k
在等式中替换该新值将给出顶部圆中心的新坐标。
k
价值增加多少t
等于圈子的速度,我完全由你决定:)
这样做,您永远不需要弄乱任何角度和/或坐标变换等。它甚至可以在 3D 中工作(只要您在z
各处添加 - 坐标)。