manim学习笔记04:使用manim,表示向量和加法。

news2024/11/15 21:35:16

manim学习笔记04:使用manim,表示向量和加法。

一,相关定义

1.有向线段:

规定若线段 AB的端点为起点为A,B为终点,则线段就具有了从起点 A到终点 B的方向和长度。具有方向和长度的线段叫做有向线段。

接下来我们体会一下相关的代码:

class VectorArrow(Scene):
    def construct(self):
        colorA = "#87c2a5"
        colorB = "#525893"
        colorC = "#e07a5f"
        dot = Dot(ORIGIN,color=RED)
        self.camera.background_color = WHITE
        arrow01 = Arrow(dot, [2, 1.2, 0], buff=0,color=colorA)
        arrow02 = Arrow(dot, [3.5, 1, 0], buff=0,color=colorB)
        arrow03 = Arrow(dot, [3, 3.4, 0], buff=0,color=colorC)
        arrow04 = Arrow(dot, [-2, 4, 0], buff=0,color=colorA)
        arrow05 = Arrow(dot, [-3.5, 1, 0], buff=0,color=colorB)
        arrow06 = Arrow(dot, [-0.6, 3.4, 0], buff=0,color=colorC)
        arrow07 = Arrow(dot, [2, -4, 0], buff=0,color=colorA)
        arrow08 = Arrow(dot, [3.5, -1, 0], buff=0,color=colorB)
        arrow09 = Arrow(dot, [0.6, -3.4, 0], buff=0,color=colorC)
        arrow10 = Arrow(dot, [-2, -3, 0], buff=0,color=colorA)
        arrow11 = Arrow(dot, [-3.5, -1, 0], buff=0,color=colorB)
        arrow12 = Arrow(dot, [-3, -3.4, 0], buff=0,color=colorC)
        
        
        #numberplane = NumberPlane()
        #origin_text = Text('(0, 0)').next_to(dot, DOWN)
        #tip_text = Text('(2, 2)').next_to(arrow.get_end(), RIGHT)
        self.add(dot,arrow01,arrow02,arrow03,arrow04,arrow05,arrow06,arrow07,
                    arrow08,arrow09,arrow10,arrow11,arrow12)

结果如下:

2.向量的模

向量的大小,也就是向量的长度(或称模)。向量a的模记作|a|。向量的模是非负实数,向量的模是可以比较大小的。如向量\vec{a}的起点为远点,重点为(x,y),则|a|=\sqrt{x^{2}+y^{2}}

可视化代码为:

from manim import *

class VectorArrow03(Scene):
    def construct(self):
        dot = Dot(ORIGIN)
        arrow = Arrow(dot, [2, 2, 0], buff=0)
        numberplane = NumberPlane()
        t0 = MathTex(r"\begin{bmatrix}0\\0\end{bmatrix}")
        t1= MathTex(r"\begin{bmatrix}X(2)\\Y(2)\end{bmatrix}")
        t2=MathTex(r"\begin{bmatrix}0 & 0 \\ 2 & 2\end{bmatrix}")
        t3=MathTex(r"\overrightarrow{a}") 
        vec=t2.next_to([1,2,0],UP)
        origin_text = t0.next_to(dot, LEFT+DOWN)
        tip_text = t1.next_to(arrow.get_end(), RIGHT+DOWN)
        tip_text01 = t3.next_to(arrow.get_end(),3*LEFT+DOWN)
        AA=MathTex(r"\left | \overrightarrow{a}  \right | =\sqrt{x^{2}+y^{2} } ")
        t4=AA.next_to([5,-1,0],3*LEFT+DOWN)
        
        
        self.add(numberplane,t2,t4, dot,vec, arrow, origin_text, tip_text,tip_text01)
%manim -qm -v WARNING VectorArrow03

结果为:

 3.向量的加法:

可视化代码为:

from manim import *

class ParallelogramRule(Scene):
    def construct(self):
        numberplane = NumberPlane()
        dot = Dot(ORIGIN)
        # Create vectors
        vec_a = Arrow(start=dot, end=[2, 1, 0],buff=0,  color=BLUE)
        vec_b = Arrow(start=dot, end=[1, 2, 0],buff=0, color=RED)

        # Create parallelogram
        parallelogram = Polygon(ORIGIN, vec_a.get_end(), vec_a.get_end() + vec_b.get_end(), vec_b.get_end(), color=GREEN, fill_color=GREEN, fill_opacity=0.5)
        self.add(numberplane,dot)
        # Display vectors and parallelogram
        self.play(Create(vec_a), Create(vec_b))
        self.play(Create(parallelogram))

        self.wait(1)

class TriangleRule(Scene):
    def construct(self):
        # Create vectors
        numberplane = NumberPlane()
        dot = Dot(ORIGIN)
        vec_a = Arrow(start=ORIGIN, end=[2, 1, 0],buff=0 ,color=BLUE)
        vec_b = Arrow(start=ORIGIN, end=[1, 2, 0],buff=0, color=RED)

        # Create triangle
        triangle = Polygon(ORIGIN, vec_a.get_end(), vec_a.get_end() + vec_b.get_end(), color=PURPLE)
        self.add(numberplane,dot)
        # Display vectors and triangle
        self.play(Create(vec_a), Create(vec_b))
        self.play(Create(triangle))

        self.wait(1)

 运行结果为:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1925983.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

多个版本JAVA切换(学习笔记)

多个版本JAVA切换 很多时候,我们电脑上会安装多个版本的java版本,java8,java11,java17等等,这时候如果想要切换java的版本,可以按照以下方式进行 1.检查当前版本的JAVA 同时按下 win r 可以调出运行工具…

牛客周赛51

思路&#xff1a;求a mod 上b后的值为amodb, 求gcd(b, amodb)即可 int gcd(int a,int b){return b ? gcd(b, a % b) : a; }void solve(){string a;cin >> a;int b;cin >> b;int amodb 0;for(auto c : a){amodb (amodb * 10 (c - 0)) % b;}cout << gcd(b…

Access denied for user ‘root‘@‘localhost‘ (using password: YES)解决办法

在Spring配置数据源时&#xff0c;当使用Spring容器加载druid.properties数据库连接池配置文件时&#xff0c;容易碰到create connection SQLException, url: jdbc:mysql://127.0.0.1:3306/mydbs, errorCode 1045, state 28000 java.sql.SQLException: Access denied for user …

【 香橙派 AIpro评测】烧系统运行部署LLMS大模型体验Jupyter Lab AI 应用样例(新手入门)

文章目录 一、引言⭐1.1下载镜像烧系统⭐1.2开发板初始化系统配置远程登陆&#x1f496; 远程ssh&#x1f496;查看ubuntu桌面&#x1f496; 远程向日葵 二、部署LLMS大模型2.1 快速启动&#x1f496;拉取代码&#x1f496;下载mode数据&#x1f496;启动模型对话 三、体验 内置…

JavaScript 如何中止Promise

目录 方法 1&#xff1a;使用新的 Promise.withResolvers() 方法 2&#xff1a;使用 AbortController 在 JavaScript 中&#xff0c;你可能已经知道如何取消请求&#xff1a;对于 XHR 可以使用 xhr.abort() &#xff0c;对于 fetch 可以使用 signal 。但是你如何取消一个普通…

网络技术相关知识概念

网络技术&#xff1a; 进程&#xff08;Process&#xff09; 定义&#xff1a;进程是程序的一次执行过程&#xff0c;它有自己的内存空间和系统资源&#xff08;资源独立&#xff09;。特性&#xff1a; 每个进程都有唯一的PID&#xff08;进程ID&#xff09;。进程间通信&am…

6、evil box one

低—>中 目标&#xff1a;获取root权限以及2个flag 主机发现 靶机 192.168.1100.40 或者使用fping -gaq 192.168.100.1/24发现主机使用ping的方式。 端口扫描 发现开放了22和80 可以使用-A参数&#xff0c;-A参数会得到更多的扫描细节 访问80端口就是一个apache的基本的…

微服务-注册中心

一. 分布式系统架构与微服务 分布式系统架构和微服务是现代软件开发中常见的两种概念&#xff0c;它们通常结合使用来构建灵活、可扩展和高效的应用程序。 分布式系统架构&#xff1a; 分布式系统架构是指将一个单一的应用程序或服务拆分成多个独立的部分&#xff0c;这些部分…

讲讲 JVM 的内存结构(附上Demo讲解)

讲讲 JVM 的内存结构 什么是 JVM 内存结构&#xff1f;线程私有程序计数器​虚拟机栈本地方法栈 线程共享堆​方法区​注意永久代​元空间​运行时常量池​直接内存​ 代码详解 什么是 JVM 内存结构&#xff1f; JVM内存结构分为5大区域&#xff0c;程序计数器、虚拟机栈、本地…

50、haproxy+keepalive+nginx

keepalivehaproxy 客户端&#xff1a;192.168.168.21haproxy1&#xff1a;192.168.168.43haproxy2&#xff1a;192.168.168.44vip&#xff1a;192.168.168.100nginx1:192.168.168.31nginx2:192.168.168.32haproxykeepalive做高可用nginx做后台haproxy1haproxy2一起操作&#x…

实验发现AI提高了个人创造力,但降低了整体创造力

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

从链表中移除在数组中存在的节点 | 力扣题解

⭐简单说两句⭐ ✨ 正在努力的小叮当~ &#x1f496; 超级爱分享&#xff0c;分享各种有趣干货&#xff01; &#x1f469;‍&#x1f4bb; 提供&#xff1a;模拟面试 | 简历诊断 | 独家简历模板 &#x1f308; 感谢关注&#xff0c;关注了你就是我的超级粉丝啦&#xff01; &a…

【自监督学习】iBOT in ICLR 2022

一、引言 论文&#xff1a; iBOT&#x1f916;: Image BERT Pre-Training with Online Tokenizer 作者&#xff1a; ByteDance 代码&#xff1a; iBOT 注意&#xff1a; 该方法是在另一个自监督预训练方法基础上的改进&#xff0c;学习之前建议掌握DINO。 特点&#xff1a; 对…

数据结构之初始二叉树(1)

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a;数据结构&#xff08;Java版&#xff09; 目录 树型结构 树的概念 与树的有关概念 树的表示形式 树的应用 二叉树 概念 两种特殊的…

MFC流的形式读取图片

1.基于对话框布置控件 2.给控件绑定变量 3.给按钮控件添加响应函数 void CMFC流的形式读取图片Dlg::OnBnClickedButton1() {// TODO: 在此添加控件通知处理程序代码//HDC mECGDC; // 设备描述表句柄//CPen mECGDrawPen; // ECG波形画笔//RECT mECGRect; // 在该矩形区域内画…

Three.js相机简明教程

相机校准是 3D 计算机图形学中的一个基本概念&#xff0c;涉及设置虚拟相机以模拟真实世界相机的视角和行为。在 Three.js&#xff08;一种流行的 3D 渲染 JavaScript 库&#xff09;中&#xff0c;了解相机校准对于创建逼真且身临其境的 3D 场景至关重要。在本文中&#xff0c…

AIGC是什么,与AI绘画有什么关系,一篇文章带你了解AI绘画的前世今生

在讲解AIGC和AI绘画之前&#xff0c;我们先看看什么是AI以及AI的历史。 AI历史发展轨迹 什么是人工智能 人工智能(Artificial intelligence&#xff0c;简称AI)亦称机器智能&#xff0c;指由人制造出来的机器所表现出来的智能。通常人工智能是指用普通计算机程序来呈现人类智…

ConfigMap-secrets-静态pod

一.ConfigMap 1.概述 ConfigMap资源&#xff0c;简称CM资源&#xff0c;它生成的键值对数据&#xff0c;存储在ETCD数据库中 应用场景&#xff1a;主要是对应用程序的配置 pod通过env变量引入ConfigMap&#xff0c;或者通过数据卷挂载volume的方式引入ConfigMap资源 官方解释…

成为git砖家(1): author 和 committer 的区别

大家好&#xff0c;我是白鱼。一直对 git author 和 committer 不太了解&#xff0c; 今天通过 cherry-pick 的例子搞清楚了区别。 原理 例如我克隆了著名开源项目 spdlog 的源码&#xff0c; 根据某个历史 commit A 创建了分支&#xff0c; 然后 cherry-pick 了这个 commit …

240710_昇思学习打卡-Day22-条件随机场

240710_昇思学习打卡-Day22-条件随机场 在正式开始LSTMCRF序列标注之前&#xff0c;我们先来了解一下条件随机场&#xff0c;以下仅做简单介绍。 CRF全称Conditional Random Field&#xff0c;按照名字来理解&#xff0c;条件随机&#xff0c;随机输入&#xff0c;条件输出。…