python3d物理引擎_如何优化一个非常简单的Python-tkinter粒子“物理引擎”?

更新时间:2023-06-23 03:25:53 阅读: 评论:0

python3d物理引擎_如何优化⼀个⾮常简单的Python-tkinter粒
⼦“物理引擎”?
我希望⽤python3.x、Numpy和Tkinter从头开始创建⼀个简单但优化良好的粒⼦系统来显⽰它,允许模拟最⼤数量的相同粒⼦。
我的密码。
import numpy as np
import tkinter as tk
import random as rm
class particle:
大国风范def __init__(lf, p, v, a=np.array([0,10]), colour="blue"):
lf.shape = ate_oval(p[0]-2, p[1]-2, p[0]+2, p[1]+2, fill = colour)
lf.p = np.array([float(i) for i in p]) #position
尽头赵方婧
lf.v =np.array([float(i) for i in v]) #velocity
lf.oldv = np.copy(v)
他乡遇故知什么意思>政协履职报告lf.a = np.array([float(i) for i in a]) # accelleration
def update(lf, delay):
lf.v += lf.a*delay
lf.p += (lf.v*delay)
if not 0
lf.v *= np.array([-1,1])
if not 0
lf.v *= np.array([1,-1])
def collide(lf, other):
x = lf.p-other.p
mag = np.sqrt(x.dot(x)) # checks distance
if 0
lf.oldv = np.copy(lf.v)
x /= mag
inline = x*x.dot(lf.v)
inlineo = x*x.dot(other.oldv)
lf.v -= inline - inlineo指南针的历史
#---------------------------------------------------------------------------------
def main():
[i.update(Time_per_frame) for i in particles]
[[j.collide(i) for i in particles] for j in particles]
canvas.after(int(Time_per_frame*1000),main)
#---------------------------------------------------------------------------------
#creates the window
root = tk.Tk()
root.title("Ball Bouncer")
canvas = tk.Canvas(root, width = 800, height = 400)
canvas.pack()
#---------------------------------------------------------------------------------
#t variables
Time_per_frame = 0.02
NoParticles = 100
particles = [particle([rm.randint(100,700),rm.randint(100,300)], [rm.randint(-100,100),rm.randint(-100,100)],[0,0]) for i in range(100)]
#particles = [particle([50,53],[50,0],[0,0]),particle([150,50],[-50,0],[0,0])]
#---------------------------------------------------------------------------------
main()无什么有什么成语
root.mainloop()
表面的英文知人善用
我的代码是能够顺利运⾏约100个粒⼦,这⽐我预期的要少。有没有什么明显的东西让我的代码变慢了。
我的编码经验是⾮常有限的,主要是⾃学,所以请告诉我,我犯下的任何编码错误。这段代码主要是我⾃⼰的⼀个学习练习,因为我知道他们是现有的⼯具。
提前谢谢你。

本文发布于:2023-06-23 03:25:53,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1018136.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:代码   练习   编码   犯下   错误   有没有   物理
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图