哈工大机械原理连杆机构大作业
目录
- 题目要求
- 公式推导和计算
- 计算流程图
- python代码
- 生成图表一览
题目要求
公式推导和计算
计算流程图
python代码
import math
from os import close, error, system
from numpy.lib.function_base import copy, place, select, vectorize
import matplotlib.pyplot as plt
import numpy as np#定义类,点class point():#定义点的基本属性def __init__(self,x=0,y=0,vx=0,vy=0,ax=0,ay=0):self.x=xself.y=yself.vx=vxself.vy=vyself.ax=axself.ay=ay #定义类杆
class rod():#定义杆的基本属性def __init__(self,phi=0,length=0,omega=0,alpha=0):self.phi=phiself.length=lengthself.omega=omegaself.alpha=alpha#定义类 一级杆
class I_rod():p0:pointdef __init__(self,s_Point:point,Rod:rod):#计算杆末端的x坐标x=s_Point.x+Rod.length*math.cos(Rod.phi)#计算杆末端的y坐标y=s_Point.y+Rod.length*math.sin(Rod.phi)#计算杆末端的x方向速度,长度单位换算成米vx=s_Point.vx-(Rod.omega*Rod.length*math.sin(Rod.phi))/1000#计算杆末端的y方向速度,长度单位换算成米vy=s_Point.vy+(Rod.omega*Rod.length*math.cos(Rod.phi))/1000#计算杆末端的x方向加速度,长度单位换算成米ax=s_Point.ax-(Rod.omega**2*Rod.length*math.cos(Rod.phi)\+Rod.alpha*Rod.length*math.sin(Rod.phi))/1000#计算杆末端的y方向加速度,长度单位换算成米ay=s_Point.ay-(Rod.omega**2*Rod.length*math.sin(Rod.phi)\-Rod.alpha*Rod.length*math.cos(Rod.phi))/1000self.p0=point(x,y,vx,vy,ax,ay)#返回末端对象def get_e_point(self):return self.p0#定义类RRR 二级杆组
class RRR_II_rods_group():point_0:pointdef __init__(self,p1:point,p2:point,r1_length:float,r2_length:float,clockwise=True):#clockwise:p1,所求点p0,p2是否是顺时针排布self.point_1=p1self.point_2=p2self.rod_1=rod(length=r1_length)self.rod_2=rod(length=r2_length)self.__length_BD=math.sqrt((p1.x-p2.x)**2+(p1.y-p2.y)**2)if(self.__length_BD>r1_length+r2_length or \self.__length_BD<abs(r1_length-r2_length)):raise Exception("在某一位置,杆长不满足装配要求")self.clockwise=clockwise#计算phi_1A0=2*r1_length*(p2.x-p1.x)B0=2*r2_length*(p2.y-p2.y)C0=r1_length**2+(p1.x-p2.x)**2+(p1.y-p2.y)**2-r2_length**2if (self.clockwise):f=1else:f=-1self.rod_1.phi=2*math.atan((B0+f*math.sqrt(A0**2+B0**2-C0**2))/(A0+C0))#实例化point_0对象self.point_0=I_rod(p1,self.rod_1).get_e_point()#计算phi_2self.rod_2.phi=math.atan((self.point_0.y-p2.y)/(self.point_0.x-p2.x))#计算omega_1和omega_2C_1=r1_length*math.cos(self.rod_1.phi)S_1=r1_length*math.sin(self.rod_1.phi)C_2=r2_length*math.cos(self.rod_2.phi)S_2=r2_length*math.sin(self.rod_2.phi)G_1=C_1*S_2-C_2*S_1self.rod_1.omega=(C_2*(p2.vx-p1.vx)+S_2*(p2.vy-p1.vy))/G_1*1000self.rod_2.omega=(C_1*(p2.vx-p1.vx)+S_1*(p2.vy-p1.vy))/G_1*1000#计算alpha_1和alpha_2G_2=1000*(p2.ax-p1.ax)+self.rod_1.omega**2*C_1-self.rod_2.omega**2*C_2G_3=1000*(p2.ay-p1.ay)+self.rod_1.omega**2*S_1-self.rod_2.omega**2*S_2self.rod_1.alpha=(G_2*C_2+G_3*S_2)/G_1self.rod_2.alpha=(G_2*C_1+G_3*S_1)/G_1#重新赋值point_0self.point_0=I_rod(p1,self.rod_1).get_e_point()def get_p0(self):return self.point_0def get_r1(self):return self.rod_1def get_r2(self):return self.rod_2#主函数
if(__name__=="__main__"):#定义已知参数l_AB=80l_BC=140l_CD=150l_AD=200l_BE=50l_EF=45omega=100l_BF=math.sqrt(l_EF**2+l_BE**2)theta=math.atan(l_EF/l_BE)point_A=point()point_D=point(x=l_AD)x_data=[]y_data=[]vx_data=[]vy_data=[]ax_data=[]ay_data=[]for i in range(0,360):phi=i*math.pi/180rod_AB=rod(phi,l_AB,omega)point_B=I_rod(point_A,rod_AB).get_e_point()rod_BC=RRR_II_rods_group(point_B,point_D,l_BC,l_CD).get_r1()rod_BF=rod(theta+rod_BC.phi,l_BF,rod_BC.omega,rod_BC.omega)point_F=I_rod(point_B,rod_BF).get_e_point()x_data.append(point_F.x)y_data.append(point_F.y)vx_data.append(point_F.vx)vy_data.append(point_F.vy)ax_data.append(point_F.ax)ay_data.append(point_F.ay)#显示图像plt.figure(figsize=(21,13), dpi=80)ax1=plt.subplot2grid((7,11),(0,0),colspan=4,rowspan=7)ax1 = plt.gca()ax1.set_aspect(1)ax1.set_title("s_F(x,y)")ax1.scatter(x_data,y_data,color="black")phi_x=np.linspace(0,2*math.pi,360)ax2=plt.subplot2grid((7,11),(0,4),colspan=3,rowspan=3)ax2 = plt.gca()ax2.set_title("v_Fx(φ)")ax2.plot(phi_x,vx_data)ax3=plt.subplot2grid((7,11),(0,8),colspan=3,rowspan=3)ax3 = plt.gca()ax3.set_title("v_Fy(φ)")ax3.plot(phi_x,vy_data)ax4=plt.subplot2grid((7,11),(4,4),colspan=3,rowspan=3)ax4 = plt.gca()ax4.set_title("a_Fx(φ)")ax4.plot(phi_x,ax_data)ax5=plt.subplot2grid((7,11),(4,8),colspan=3,rowspan=3)ax5 = plt.gca()ax5.set_title("a_Fy(φ)")ax5.plot(phi_x,ay_data) plt.show()
生成图表一览
哈工大机械原理连杆机构大作业相关推荐
- 哈工大机械原理凸轮机构大作业
目录 题目要求 公式推导和计算 计算流程图 pyhton代码 生成图表一览 题目要求 公式推导和计算 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210610 ...
- 哈工大2021春计算机系统大作业 程序人生-Hello’s P2P
计算机系统 大作业 题 目 程序人生-Hello's P2P 专 业 计算机类 学 号 1190200613 班 级 1903004 学 生 ...
- 哈工大2022春计算机系统大作业:程序人生-Hello‘s P2P
计算机系统 大作业 题 目 程序人生-Hello's P2P 专 业 计算机类 学 号 120L021305 班 级 2003002 学 生 李一凡 指 导 教 ...
- 课程设计_solidworks_机械狗玩具建模,机械原理连杆机构运动
大三下学期课程设计作业,制作基于机械原理各种连杆.传动杆的小玩具. 我设计的是仿生狗的建模,外观简单但符合机械原理,附有自制的PPT和仿真动画. 软件为solidwork2019版本,(友情提示:低于 ...
- 哈工大2022春CSAPP大作业-程序人生(Hello‘s P2P)
摘 要 本论文研究了hello.c这一简单c语言文件在Linux系统下的整个生命周期,以其原始程序开始,依次深入研究了编译.链接.加载.运行.终止.回收的过程,从而了解hello.c文件的" ...
- 哈工大 2021春 计算机系统 大作业程序人生
计算机系统 大作业 题 目 程序人生-Hello's P2P 专 业 计算机 学 号 1190200828 班 级 1936601 学 生 赵英帅 指 导 教 师 刘宏伟 计算机科学与技术学院 202 ...
- 哈工大2022秋计算机系统大作业——程序人生
目录 第1章 概述 1.1 Hello简介 1.2 环境与工具 1.3 中间结果 1.4 本章小结 第2章 预处理 2.1 预处理的概念与作用 2.2在Ubuntu下预处理的命令 2.3 Hello的 ...
- 哈工大 2021春 计算机系统 大作业 L190201101-朴仁洪
@ 计算机系统 大作业 题 目 程序人生-Hello's P2P 专 业 计算机类 学 号 L190201101 班 级 1903005 学 生 朴仁洪 指 导 教 师 史先俊 计算机科学与技术学院 ...
- 编译原理分析器大作业之字幕分析器
写这篇文章的主要目的呢是分享一下编译原理大作业--电影字幕分析器,分享一下我的做法,可能采用的做法不是特别好的用法,希望各位多多指点,觉得文章不错给点小赞赞喔!!! 题目介绍 写一个srt字幕解释器, ...
最新文章
- Go 学习笔记(74)— Go 标准库之 unsafe
- 如何编写webService接口
- AngularJs学习笔记--expression
- linux mysql 升级_linux升级mysql
- 【错误记录】Android 低版本使用分区存储错误 ( 低版本存储不得使用 MediaStore )
- CSS position 属性
- 使用 SqlDataSource 插入、更新和删除数据49
- python twisted教程一,异步编程
- SpringBoot项目中遇到的BUG
- How to change context root of a dynamic web project in Eclipse
- 云计算介绍-1.2,IaaS\PaaS\SaaS比较
- 用南边代称一个公司,汝竟然也不满?
- 证件照制作微信小程序源码
- linux行命令测网速,Linux命令行测试网速的方法
- 强制删除文件处理程序
- java银行账户类_使用Java编写银行账户类(面向对象思考实验)
- 物联网关键技术:时序数据库
- 基金收益率计算1:资管业务、资管产品和基金
- pwnat——一种无需第三方服务器就能完成NAT点对点P2P穿透的基于UDP打洞技术的新方法
- 7033: Lounge Lizards(lis)