簡體   English   中英

python plot 上的非彈跳球

[英]Not-bouncing ball on python plot

我想制作一個關於球的動畫 plot。 像下面的一樣。 問題是我希望它不會在軸上反彈,而是希望它繼續在 plot 中移動,但像鏡子一樣出現在另一側。

 import numpy as np 
    import matplotlib.pyplot as plt

plt.figure(1) 
plt.clf() 

plt.axis([-10,10,-10,10]) 
n=10 
pos=(20*np.random.sample(n*2)-10).reshape(n,2)  
vel=(0.3*np.random.normal(size=n*2)).reshape(n,2) 
sizes=100*np.random.sample(n)+100 

colors=np.random.sample([n,4]) 

circles=plt.scatter(pos[:,0], pos[:,1], marker='o', s=sizes, c=colors) 


for i in range(100):
    pos=pos+vel 
    bounce=abs(pos)>10 
    vel[bounce] = -vel[bounce] 
    circles.set_offsets(pos) 
    plt.draw() 
    plt.pause(0.05) 
plt.show()

一種方法是簡單地將vel[bounce] = -vel[bounce]替換為pos[bounce]=-pos[bounce] 這會將到達框架的球的 position 重置到框架的相對邊緣。

完整代碼如下:

import numpy as np 
import matplotlib.pyplot as plt

fig=plt.figure(1) 
plt.axis([-10,10,-10,10]) 
n=10 
pos=(20*np.random.sample(n*2)-10).reshape(n,2)  
vel=(0.3*np.random.normal(size=n*2)).reshape(n,2) 
sizes=100*np.random.sample(n)+100 

colors=np.random.sample([n,4]) 

circles=plt.scatter(pos[:,0], pos[:,1], marker='o', s=sizes, c=colors) 


for i in range(100):
    pos=pos+vel
    bounce=abs(pos)>10
      
    pos[bounce]=-pos[bounce]
    circles.set_offsets(pos) 
    plt.draw() 
    plt.pause(0.05)
 
plt.show()

這是 output:

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM