所以我在編寫乙個**克遊戲,我決定找出如何使球相互碰撞的最好方法是在乙個單獨的程式中這樣做,然後複製進去。我是乙個很有能力的數學家,所以我坐下來,畫了乙個事件,然後用數學的方法研究了實際發生的事情。在
我的方法是將每個球的初始速度分解成xr-和yr分量,在這個參照系中,xr分量與穿過每個球中心的向量成一直線,yr分量垂直於此。然後我簡單地切換球的xr分量,保持yr分量不變,然後計算速度的x和y分量回到標準參考係中。在
由於某種原因,不管是數學錯誤還是程式設計錯誤,我似乎都無法使它發揮作用。以下是我到目前為止所得到的,我已經瀏覽了網際網路上幾乎每乙個相關的網頁,以及這個**上所有類似的問題。我也不是乙個精通程式設計的人。在from visual import *
dt = 0.01
r = 5
red = sphere(pos=(-25,25,0),radius = r,color=color.red)
green = sphere(pos=(25,-25,0),radius = r,color=color.green)
red.velocity = vector(10,-10,0)
green.velocity = vector(-10,10,0)
def posupdate(ball):
ball.pos = ball.pos + ball.velocity*dt
def ballhit(ball1,ball2):
v1 = ball1.velocity
v1x = ball1.velocity.x
v1y = ball1.velocity.y
v2 = ball2.velocity
v2x = ball2.velocity.x
v2y = ball2.velocity.y
xaxis = vector(1,0,0)
btb = ball2.pos - ball1.pos
nbtb = btb/abs(btb)
if abs(btb) < 2*r:
phi = acos(dot(nbtb,xaxis)/abs(nbtb)*abs(xaxis))
ang1 = acos(dot(v1,xaxis)/abs(v1)*abs(xaxis))
ang2 = acos(dot(v2,xaxis)/abs(v2)*abs(xaxis))
v1xr = abs(v1)*cos((ang1-phi))
v1yr = abs(v1)*sin((ang1-phi))
v2xr = abs(v2)*cos((ang2-phi))
v2yr = abs(v2)*sin((ang2-phi))
v1fxr = v2xr
v2fxr = v1xr
v1fyr = v1yr
v2fyr = v2yr
v1fx = cos(phi)*v1fxr+cos(phi+pi/2)*v1fyr
v1fy = sin(phi)*v1fxr+sin(phi+pi/2)*v1fyr
v2fx = cos(phi)*v2fxr+cos(phi+pi/2)*v2fyr
v2fy = sin(phi)*v2fxr+sin(phi+pi/2)*v2fyr
ball1.velocity.x = v1fx
ball1.velocity.y = v1fy
ball2.velocity.x = v2fx
ball2.velocity.y = v2fy
return ball1.velocity, ball2.velocity
while 1==1:
rate(100)
posupdate(red)
posupdate(green)
ballhit(red,green)
Vpython簡單例子
vpython簡單例子 首先開啟 vidle for vpython vpython的例子在e python27 lib site packages visual examples 視安裝軟體的路徑不同而不同 e.g.1 知識點 向量 三維座標 bounce.py from visual impor...
小貞貞jmeter中mysql資料庫連線指南
具體操作步驟如下 2.啟動jmeter,在測試計畫中引入該驅動 4.配置jdbc connetion confiuration 5.新增jdbc request 執行緒組右鍵 新增 取樣器 jdbc request 6.配置jdbc request 備註 如果sql查詢多列,則變數名可按照查詢順序寫...
vpython怎麼裝 python的安裝
因為python是跨平台的,它可以執行在windows mac和各種linux unix系統上。在windows上寫python程式,放到linux上也是能夠執行的。要開始學習python程式設計,首先就得把python安裝到你的電腦裡。安裝後,你會得到python直譯器 就是負責執行python程...