鱼C论坛

 找回密码
 立即注册
查看: 5195|回复: 3

求教大神,Python怎样模拟小球的运动轨迹?

[复制链接]
发表于 2017-3-17 14:39:41 From FishC Mobile | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如图中所示,小球从高度为h处以初速度v水平抛出,落地反弹的最大高度为原来的一半,求教怎样用Python模拟小球的运动轨迹?最好是动态的,Python新人,只知道要用matplotlib和numpy两个库╭(╯ε╰)╮
IMG20170316180215.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-3-17 14:43:59 | 显示全部楼层
import matplotlib.pyplot as plt
import numpy as np
class Ball:
    def __init__(self,x,y):
        self.x=x
        self.y=y
    def getX(self,t):
        vx=10
        self.x=vx*t
        return self.x
    def getY(self,t):
        vy=0
        vy0=0
        h=10
        g=10
        for i in range(0,1000):
            vy=vy0+g*t/1000
            self.y=h-vy*t/1000
            if self.y<=0:
                self.y=0
                vy0=-vy/sqrt(2)
                h=0
            else:
                vy0=vy
                h=self.y
        return self.y
t=np.linspace(0,10,100)
a=Ball(0,10)
plt.plot(a.getX(t),a.getY(t))
plt.show()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-17 14:46:29 | 显示全部楼层
我的代码如上,报错
Traceback (most recent call last):
  File "C:\Users\Administrator\Desktop\BallThrow.py", line 29, in <module>
    plt.plot(a.getX(t),a.getY(t))
  File "C:\Users\Administrator\Desktop\BallThrow.py", line 19, in getY
    if self.y<=0:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
求大神帮看看到底咋回事?还有动态显示应该怎么做?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-17 15:22:34 | 显示全部楼层
本帖最后由 jerryxjr1220 于 2017-3-17 15:24 编辑

参考这个吧 http://bbs.fishc.com/forum.php?mod=viewthread&tid=81297&ctid=503

方法是类似的,增加一些约束条件而已。

动画的话,可以用pygame来做,也可以直接调用time.sleep()慢慢画,看你要做多复杂了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-7 04:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表