提示:本作品为原创,转载请经过作者同意

文章目录

  • 前言
  • 一、代码
  • 二、代码详解
    • 1.引入库
    • 2.初始角度
    • 3.创建各类元素
    • 4.按照物理规则执行(以时间为量度)
    • 运行结果
  • 总结

前言

物理期末大作业,研究荡秋千的物理公式时为了直观,创建了一个秋千模型,可能并不是绝对符合现实物理规律。


一、代码

先上代码:

# -*- coding: utf-8 -*-
from vpython import *
scene.width = 1600
scene.height = 850
L = 10
theta = pi / 6
base = box(pos=vector(0, 0, 0), size=vector(1, 0.5, 10), color=color.blue)
zhu1 = box(pos=vector(0, -5, -5), size=vector(1, -10, 0.5), color=color.yellow)
zhu2 = box(pos=vector(0, -5, 5), size=vector(1, -10, -0.5), color=color.yellow)
di = box(pos=vector(0, -10, 0), size=vector(50, 0.001, 50), color=color.blue)
ball1 = sphere(pos=vector(L * sin(theta), -L * cos(theta), 3), radius=0.25, color=color.white)
line1 = cylinder(pos=base.pos + vector(0,0,3), axis=(ball1.pos - base.pos), radius=0.05, color=color.white)
ball2 = sphere(pos=vector(L * sin(theta), -L * cos(theta), -3), radius=0.25, color=color.white)
line2 = cylinder(pos=base.pos + vector(0,0,-3), axis=(ball2.pos - base.pos), radius=0.05, color=color.white)
zhongxin = sphere(pos=vector(L * sin(theta), -L * cos(theta), 0), radius=0.25, color=color.white)
set = box(pos=ball1.pos+vector(0,0,-3) ,size=vector(2, 0.1, 6), color=color.white)
vel = 0
dt = 0.005
t = 0
while t < 100:rate(100)acc = - 10 / L * sin(theta)vel = vel + acc * dttheta = theta + vel * 180 / pi * dtball1.pos = vector(L * sin(theta), -L * cos(theta), 3)line1.axis = ball1.pos - vector(0, 0, 3)ball2.pos = vector(L * sin(theta), -L * cos(theta), -3)line2.axis = ball2.pos - vector(0, 0, -3)set.pos = ball1.pos + vector(0,0,-3)if (L * sin(theta))>0:i=1else:i=-1if (-L * cos(theta))>0:j=1else:j=-1zhongxin.pos = vector(i*((L * sin(theta))*(L * sin(theta)))/10, j*((-L * cos(theta) + 1)*(-L * cos(theta) + 1))/10, 0)zhongxin.axis = zhongxin.pos - vector(0, 0, 0)print(zhongxin.pos)t = t + dt

二、代码详解

1.引入库

from vpython import *

2.初始角度

theta = pi / 6

3.创建各类元素

base = box(pos=vector(0, 0, 0), size=vector(1, 0.5, 10), color=color.blue)
zhu1 = box(pos=vector(0, -5, -5), size=vector(1, -10, 0.5), color=color.yellow)
zhu2 = box(pos=vector(0, -5, 5), size=vector(1, -10, -0.5), color=color.yellow)
di = box(pos=vector(0, -10, 0), size=vector(50, 0.001, 50), color=color.blue)
ball1 = sphere(pos=vector(L * sin(theta), -L * cos(theta), 3), radius=0.25, color=color.white)
line1 = cylinder(pos=base.pos + vector(0,0,3), axis=(ball1.pos - base.pos), radius=0.05, color=color.white)
ball2 = sphere(pos=vector(L * sin(theta), -L * cos(theta), -3), radius=0.25, color=color.white)
line2 = cylinder(pos=base.pos + vector(0,0,-3), axis=(ball2.pos - base.pos), radius=0.05, color=color.white)
zhongxin = sphere(pos=vector(L * sin(theta), -L * cos(theta), 0), radius=0.25, color=color.white)
set = box(pos=ball1.pos+vector(0,0,-3) ,size=vector(2, 0.1, 6), color=color.white)

4.按照物理规则执行(以时间为量度)

while t < 100:rate(100)acc = - 10 / L * sin(theta)vel = vel + acc * dttheta = theta + vel * 180 / pi * dtball1.pos = vector(L * sin(theta), -L * cos(theta), 3)line1.axis = ball1.pos - vector(0, 0, 3)ball2.pos = vector(L * sin(theta), -L * cos(theta), -3)line2.axis = ball2.pos - vector(0, 0, -3)set.pos = ball1.pos + vector(0,0,-3)if (L * sin(theta))>0:i=1else:i=-1if (-L * cos(theta))>0:j=1else:j=-1zhongxin.pos = vector(i*((L * sin(theta))*(L * sin(theta)))/10, j*((-L * cos(theta) + 1)*(-L * cos(theta) + 1))/10, 0)zhongxin.axis = zhongxin.pos - vector(0, 0, 0)print(zhongxin.pos)t = t + dt

运行结果



总结

物理,每日一学,必有精进

利用vpython实现秋千模型相关推荐

  1. 谷歌发布TensorFlow 1.4与TensorFlow Lattice:利用先验知识提升模型准确度 搜狐科技 10-12 15:29 选自:Google Research Blog 参与:李泽南、

    谷歌发布TensorFlow 1.4与TensorFlow Lattice:利用先验知识提升模型准确度 昨天,谷歌发布了 TensorFlow 1.4.0 先行版,将 tf.data 等功能加入了 A ...

  2. Python:pmml格式文件的简介、安装、使用方法(利用python将机器学习模型转为Java常用的pmml格式文件)之详细攻略

    Python:pmml格式文件的简介.安装.使用方法(利用python将机器学习模型转为Java常用的pmml格式文件)之详细攻略 目录 pmml格式文件的简介 1.PMML结构 pmml安装 pmm ...

  3. ML之回归预测:利用多个算法模型(LassoR、KernelRidgeR、ElasticNetR、GBR、LGBMR、XGBR)对国内某平台上海2020年6月份房价数据集【12+1】进行回归预测

    ML之回归预测:利用多个算法模型(LassoR.KernelRidgeR.ElasticNetR.GBR.LGBMR.XGBR)对国内某平台上海2020年6月份房价数据集[12+1]进行回归预测(包括 ...

  4. 利用python进行AdaBoost模型预测

    以信用卡违约数据为例,该数据集来源于UCI网站,一共包30 000条记录和25个变量,其中自变量包含客户的性别.受教育水平.年龄.婚姻状况.信用额度.6个月的历史还款状态.账单金额以及还款金额,因变量 ...

  5. ML之interpret:基于titanic泰坦尼克是否获救二分类预测数据集利用interpret实现EBC模型可解释性之全局解释/局部解释案例

    ML之interpret:基于titanic泰坦尼克是否获救二分类预测数据集利用interpret实现EBC模型可解释性之全局解释/局部解释案例 目录 基于titanic泰坦尼克是否获救二分类预测数据 ...

  6. ML之FE:基于波士顿房价数据集利用LightGBM算法进行模型预测然后通过3σ原则法(计算残差标准差)寻找测试集中的异常值/异常样本

    ML之FE:基于波士顿房价数据集利用LightGBM算法进行模型预测然后通过3σ原则法(计算残差标准差)寻找测试集中的异常值/异常样本 目录 基于波士顿房价数据集利用LiR和LightGBM算法进行模 ...

  7. 移动端利用OpenGL展示3D模型文件STL

    移动端利用OpenGL展示3D模型文件STL 突然发现上次写博客都是一年前了,没养成分享的习惯挺郁闷的,所以分享下个人感觉好玩的东西吧.纯理工科生笔杆子不硬,写的不好,哪里有看不懂的或者写的不好的希望 ...

  8. 【TensorFlow系列】【五】利用inception v3 pb模型文件做预测

    2019独角兽企业重金招聘Python工程师标准>>> 本文介绍如何利用imagenet比赛上训练好的inception v3冻结的pb模型进行inference. 1.下载ince ...

  9. 【教程】利用libsvm-mat建立分类模型model参数解密【by faruto】

    原文地址:http://www.matlabsky.com/thread-12649-1-1.html 建议大家看这篇帖子之前先看一下以下几篇帖子: 如何使用libsvm进行分类[by faruto] ...

最新文章

  1. 简单理解浏览器的event loop 和 JavaScript的同步异步
  2. 在Eclipse下面安装spket
  3. 主机开启修改BOOT-----支持KVM
  4. 创建性设计模式之2--建造者模式
  5. leetcode 263, 264, 1201, 313. Ugly Number I, II, III, Super Ugly Number(leetcode 丑数问题合集)
  6. 在Ant的javac中指定源文件编码方式,以避免警告: 编码 GBK 的不可映射字符的错误...
  7. 【BIM入门实战】Revit 图元分类有哪三种?Revit图元分类图文详解
  8. leetcode45. 跳跃游戏 II
  9. 强化学习《基于价值 - Dueling Q-Learning》
  10. K-means聚类分析算法(二)
  11. 产品配件类目税目分类_商品和服务税收分类编码表
  12. VMware中Linux虚拟机root密码重置
  13. drawArc 画扇形 画弧线
  14. 可以在windows下预览SVG文件 SVG Explorer Extension
  15. Cocos Creator 写的小游戏
  16. PF_INET 和 AF_INET的区别
  17. 科大讯飞(语音合成和语音听写)
  18. Centos7关机和重启前执行自定义脚本
  19. 跨域的三种主流解决方案
  20. python播放音频文件_详解使用pygame播放一段MP3音频文件

热门文章

  1. python变量的赋值_python变量赋值|变量赋值
  2. 谁拿了最多奖学金 C++
  3. Oracle12C SGA PGA UGA
  4. UGA5TBYB_E_USG.exe
  5. 如何在CSDN中分享自己写的代码
  6. C语言关于建筑物高度范围问题
  7. [XDOJ]开灯问题
  8. Android问题:java.io.FileNotFoundException: /storage/emulated/0/DCIM/Camera/IMG.jpg: open failed:
  9. iQOO Neo5S手机搭载Pixelworks升级版处理器;彩色星球科技联合费城76人开启NBA合作模式 | 全球TMT...
  10. Salesforce考试丨Marketing Cloud管理员认证考试指南 exam guide(中文版)