利用vpython实现秋千模型
提示:本作品为原创,转载请经过作者同意
文章目录
- 前言
- 一、代码
- 二、代码详解
- 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实现秋千模型相关推荐
- 谷歌发布TensorFlow 1.4与TensorFlow Lattice:利用先验知识提升模型准确度 搜狐科技 10-12 15:29 选自:Google Research Blog 参与:李泽南、
谷歌发布TensorFlow 1.4与TensorFlow Lattice:利用先验知识提升模型准确度 昨天,谷歌发布了 TensorFlow 1.4.0 先行版,将 tf.data 等功能加入了 A ...
- Python:pmml格式文件的简介、安装、使用方法(利用python将机器学习模型转为Java常用的pmml格式文件)之详细攻略
Python:pmml格式文件的简介.安装.使用方法(利用python将机器学习模型转为Java常用的pmml格式文件)之详细攻略 目录 pmml格式文件的简介 1.PMML结构 pmml安装 pmm ...
- ML之回归预测:利用多个算法模型(LassoR、KernelRidgeR、ElasticNetR、GBR、LGBMR、XGBR)对国内某平台上海2020年6月份房价数据集【12+1】进行回归预测
ML之回归预测:利用多个算法模型(LassoR.KernelRidgeR.ElasticNetR.GBR.LGBMR.XGBR)对国内某平台上海2020年6月份房价数据集[12+1]进行回归预测(包括 ...
- 利用python进行AdaBoost模型预测
以信用卡违约数据为例,该数据集来源于UCI网站,一共包30 000条记录和25个变量,其中自变量包含客户的性别.受教育水平.年龄.婚姻状况.信用额度.6个月的历史还款状态.账单金额以及还款金额,因变量 ...
- ML之interpret:基于titanic泰坦尼克是否获救二分类预测数据集利用interpret实现EBC模型可解释性之全局解释/局部解释案例
ML之interpret:基于titanic泰坦尼克是否获救二分类预测数据集利用interpret实现EBC模型可解释性之全局解释/局部解释案例 目录 基于titanic泰坦尼克是否获救二分类预测数据 ...
- ML之FE:基于波士顿房价数据集利用LightGBM算法进行模型预测然后通过3σ原则法(计算残差标准差)寻找测试集中的异常值/异常样本
ML之FE:基于波士顿房价数据集利用LightGBM算法进行模型预测然后通过3σ原则法(计算残差标准差)寻找测试集中的异常值/异常样本 目录 基于波士顿房价数据集利用LiR和LightGBM算法进行模 ...
- 移动端利用OpenGL展示3D模型文件STL
移动端利用OpenGL展示3D模型文件STL 突然发现上次写博客都是一年前了,没养成分享的习惯挺郁闷的,所以分享下个人感觉好玩的东西吧.纯理工科生笔杆子不硬,写的不好,哪里有看不懂的或者写的不好的希望 ...
- 【TensorFlow系列】【五】利用inception v3 pb模型文件做预测
2019独角兽企业重金招聘Python工程师标准>>> 本文介绍如何利用imagenet比赛上训练好的inception v3冻结的pb模型进行inference. 1.下载ince ...
- 【教程】利用libsvm-mat建立分类模型model参数解密【by faruto】
原文地址:http://www.matlabsky.com/thread-12649-1-1.html 建议大家看这篇帖子之前先看一下以下几篇帖子: 如何使用libsvm进行分类[by faruto] ...
最新文章
- 简单理解浏览器的event loop 和 JavaScript的同步异步
- 在Eclipse下面安装spket
- 主机开启修改BOOT-----支持KVM
- 创建性设计模式之2--建造者模式
- leetcode 263, 264, 1201, 313. Ugly Number I, II, III, Super Ugly Number(leetcode 丑数问题合集)
- 在Ant的javac中指定源文件编码方式,以避免警告: 编码 GBK 的不可映射字符的错误...
- 【BIM入门实战】Revit 图元分类有哪三种?Revit图元分类图文详解
- leetcode45. 跳跃游戏 II
- 强化学习《基于价值 - Dueling Q-Learning》
- K-means聚类分析算法(二)
- 产品配件类目税目分类_商品和服务税收分类编码表
- VMware中Linux虚拟机root密码重置
- drawArc 画扇形 画弧线
- 可以在windows下预览SVG文件 SVG Explorer Extension
- Cocos Creator 写的小游戏
- PF_INET 和 AF_INET的区别
- 科大讯飞(语音合成和语音听写)
- Centos7关机和重启前执行自定义脚本
- 跨域的三种主流解决方案
- python播放音频文件_详解使用pygame播放一段MP3音频文件
热门文章
- python变量的赋值_python变量赋值|变量赋值
- 谁拿了最多奖学金 C++
- Oracle12C SGA PGA UGA
- UGA5TBYB_E_USG.exe
- 如何在CSDN中分享自己写的代码
- C语言关于建筑物高度范围问题
- [XDOJ]开灯问题
- Android问题:java.io.FileNotFoundException: /storage/emulated/0/DCIM/Camera/IMG.jpg: open failed:
- iQOO Neo5S手机搭载Pixelworks升级版处理器;彩色星球科技联合费城76人开启NBA合作模式 | 全球TMT...
- Salesforce考试丨Marketing Cloud管理员认证考试指南 exam guide(中文版)