函数定义为:
def addVectors((angle1, length1), (angle2, length2)):
x = math.sin(angle1) * length1 + math.sin(angle2) * length2
y = math.cos(angle1) * length1 + math.cos(angle2) * length2
angle = 0.5 * math.pi - math.atan2(y, x)
length = math.hypot(x, y)
return (angle, length)
它是这样使用的:
def collide(p1, p2):
dx = p1.x - p2.x
dy = p1.y - p2.y
dist = math.hypot(dx, dy)
if dist < p1.size + p2.size:
angle = math.atan2(dy, dx) + 0.5 * math.pi
total_mass = p1.mass + p2.mass
(p1.angle, p1.speed) = addVectors((p1.angle, p1.speed*(p1.mass-p2.mass)/total_mass), (angle, 2*p2.speed*p2.mass/total_mass))
(p2.angle, p2.speed) = addVectors((p2.angle, p2.speed*(p2.mass- p1.mass)/total_mass), (angle+math.pi, 2*p1.speed*p1.mass/total_mass))
p1.speed *= elasticity
p2.speed *= elasticity
我的问题是python 3只会让我给一个函数赋值一组括号,但是这里的例子使用了两个,结果和获取方式都是本课程的结果。我不确定是否有办法解决这个问题,或者我是否必须重组公式,我真的不确定我能做到。有什么建议吗?另外,我从 Peter Collingridges 关于球物理的教程中获取了这段代码,其余的都在他的网站http://www.petercollingridge.co.uk上。先谢谢了