用manim实现内燃机引擎的活塞,连杆和曲柄的模拟运动【下】

用manim实现内燃机引擎的活塞,连杆和曲柄的模拟运动【上】-优快云博客通过上面的内容可以基本理解该做的运动模型。接下来进一步优化并接近实际的模型把。

这是实际运动

运动模拟图

接下来展示一下该代码

from manim import *  # 导入Manim库中的所有内容,包括对象、动画等  
import random  # 导入随机数生成模块  

class MechanismEngine06(Scene):  # 定义一个名为MechanismEngine06的动画场景  
    def construct(self):  # 定义构造方法,创建场景内的对象  
        self.camera.background_color = "#003311"  # 设置场景背景色为深绿色  
        
        # 创建固定点 A  
        point_A = AnnotationDot(point=np.array([0, -2, 0]), color=RED, radius=0.1, stroke_width=15, stroke_color=WHITE, fill_color=RED)  
        # 创建一个注释点 A,位置为(0, -2, 0),颜色为红色,半径和边框宽度设置,在场景中添加这个点  
        self.add(point_A)  

        # 创建一个圆,圆心在 A,半径为 0.85  
        radius = 0.85  # 定义圆的半径为0.85  
        circle = Circle(radius=radius, color=WHITE)  # 创建一个白色的圆  
        circle.move_to(point_A.get_center())  # 将圆心移动到点 A 的位置  
        circle01 = DashedVMobject(circle)  # 创建一个虚线圆  
        self.add(circle01)  # 在场景中添加该虚线圆  

        # 创建点 B,初始位置在圆的右侧  
        point_B = AnnotationDot(point=circle.point_at_angle(0), color=BLUE, radius=0.1, stroke_width=15, stroke_color=WHITE, fill_color=RED)  
        # 创建一个注释点 B,位置在圆的右边,颜色为蓝色,设置边框和填充属性,并将其添加到场景中  
        self.add(point_B)  

        # 创建点 C,初始位置在 (0, 3, 0)  
        point_C = AnnotationDot(point=np.array([0, 3, 0]), color=GREEN, radius=0.075, stroke_width=15, stroke_color=WHITE, fill_color=RED)  
        # 创建一个点 C,位置为(0, 3, 0),颜色为绿色,并添加到场景中  
        # self.add(point_C)  # 此行被注释掉,意思是不显示该点  

        # 创建长度合适的有效杆 AB 和 BC  
        rod_AB = Line(start=point_A.get_center(), end=point_B.get_center(), color=YELLOW, stroke_width=12)  
        # 创建线段 AB  
        rod_BC = Line(start=point_B.get_center(), end=point_C.get_center(), color=PURPLE, stroke_width=12)  
        # 创建线段 BC  
        # self.add(rod_AB, rod_BC)  # 将杆添加到场景中,此行被注释掉  

        # 动画设置  
        run_time = 8  # 动画总时长为8秒  
        total_frames = 100  # 总帧数设置为100帧  
        angle_step = 2 * PI / total_frames  # 计算每一帧的角度变化,确保完整转动360度  

        # 创建一个随 C 点移动的长方形  
        rectangle = Rectangle(width=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yasen.M

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值