【GAMES101】Lecture 22 物理模拟与仿真

news2024/11/24 0:22:46

目录

单粒子模拟

显式欧拉方法

改进

中点法/修正的欧拉方法

自适应步长

隐式欧拉方法

非物理改变位置(Position-Based / Verlet Integration)

刚体模拟

流体模拟


单粒子模拟

先来研究粒子的运动,假设有一个速度矢量场,对于确定的位置和时间可以确定粒子的速度

就会有一个计算粒子随时间的位置的一阶常微分方程Ordinary Differential Equation (ODE),一阶表示只有一阶的导数,常表示没有偏导

显式欧拉方法

显式的欧拉方法或者说是前向的欧拉方法就是用上一时刻t的位置加上上一时刻的速度乘以其间的时间间隔Δt来计算当前的位置,同样的方法计算出当前的速度

这个欧拉方法的误差和时间间隔Δt有关,这个间隔越小误差越小,间隔越大误差就越大,并且这个误差会因为积累而变得越来越大

减小Δt可以减小显式欧拉方法的误差,但是不能改变它的不稳定性,归根结底是因为这个步长无论取的多小始终是无法赶上速度场的变化,并且一旦出现了偏差就会继续累计

改进

中点法/修正的欧拉方法

我先算Δt/2时刻的位置,然后取这个中点位置的速度来计算下一时刻的位置

也就是取这个步长时间内的平均速度来计算下一时刻的位置

自适应步长

哎这个就很简单了,就是我先用Δt算一次结果,再用Δt/2算一次结果,如果两次结果差别不大,那我就停下来,这个结果就算出来了,否则的话我就以这个Δt/2的结果继续比较计算Δt/4的结果,这样继续算下去

隐式欧拉方法

我们之前显式的欧拉方法是用上一时刻的速度和加速度来计算当前时刻,那么用下一时刻的速度和加速度来计算当前时刻的就叫作隐式的欧拉方法或者说是后向的欧拉方法

我们把这个每个步长产生的误差叫做局部误差,总体累积的误差叫做全局误差,我们不关心数据的大小,关心这个误差的阶数,像这个隐式的欧拉方法它的局部误差的阶就是二次的,全局误差的阶是一次的,也就是说,当步长减少一半的时候,全局误差也会减少一半,也就是阶数越高误差下降的越快

有一类方法,叫做龙格库塔(Runge-Kutta Families),非常适合用来解这个常微分方程,并且它有一个误差的控制是四阶的方法

非物理改变位置(Position-Based / Verlet Integration)

这个实现很简单,什么呢?就是我直接去改变这个位置来满足某种约束,比如弹簧,当弹簧拉伸到某种程度立刻调整弹簧两个端点回到初始位置

刚体模拟

所谓刚体就是说它不会发生形变,也就是这个刚体内部的所有粒子的运动都是一样,那么就可以把它当成一颗粒子对待,但是会考虑更多的属性,像位置、旋转的角度、速度和角速度,以及它们对时间的导数

流体模拟

这里是Position-Based的一个简单应用,比如模拟水,我假设水是由很多刚体小球组成的并且这个水不可压缩,那也就是说水的密度应该是到处一样的,也就是水的某个地方里的刚体小球是一样的,一旦密度发生变化,就通过改变小球的位置使某处的小球数量恢复,也就是需要知道某处密度相对于小球位置的梯度通过梯度下降法来实现

这里有两种方法或者说是两种视角来模拟这种大量的物质

一个是质点法,也叫拉格朗日方法或者拉格朗日视角,就是对于每个个体进行模拟

还有一个是网格法,也叫欧拉方法或者是欧拉视角,也就是把空间分成很多网格,对于每个网格去研究它里面的东西随时间会发生什么变化

这两个方法也可以结合使用,叫做物质点方法或者材质点方法,Material Point Method (MPM),怎么做呢?我先考虑每个粒子的属性,然后在网格里面考虑粒子之间的整体作用并记录在网格里面,再对于网格里面的粒子去更新它们的状态

完结撒花,用了这个寒假学了games101课程并一直坚持把这个笔记做完,我一开始是先学这个OpenGL,发现确实很多概念不是很懂,然后来学games101,然后就非常的通透,目前games101作业还在做,估计这个寒假可以完成,再做几个小项目,希望能冲上游戏开发的岗位,唉大三了,希望能够顺利找到理想的暑期实习

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

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

相关文章

记录一下,我使用stm32实现pwm波输入,以及对频率和占空比的计算,同时通过串口输出(实现-重要)

1,首先看下半物理仿真 看下我的配置: 看下计算方法以及matlab的仿真输出的数据: timer3的ch2是选择高电平,计算频率 timer3的ch1是选择的是低电平,用来计算周期 其中TemPIpre表示的是CH2输出的值, TemPI…

牛客周赛 Round 32 解题报告 | 珂学家 | 状压 + 前缀和异或map技巧

前言 整体评价 属于补题,大致看了下,题都很典。 欢迎关注 珂朵莉 牛客周赛专栏 珂朵莉 牛客小白月赛专栏 A. 小红的 01 背包 思路: 数学题 v, x, y list(map(int, input().split()))print (v // x * y)B. 小红的 dfs 思路: 枚举 其实横竖都有dfs…

网络协议与攻击模拟_16HTTP协议

1、HTTP协议结构 2、在Windows server去搭建web扫描器 3、分析HTTP协议流量 一、HTTP协议 1、概念 HTTP(超文本传输协议)用于在万维网服务器上传输超文本(HTML)到本地浏览器的传输协议 基于TCP/IP(HTML文件、图片、查询结构等&…

Windows Anaconda 运行 gempy examples。示例::

默认读者已安装:Anaconda. 若未安装请参考以下文章: Windows中如何使用 Anaconda 和 gempy地质建模 1,打开Anaconda Navigator: 打开后如此: 运行JupyterLab: launch。 打开gempy example 建模示例: 官方地址&#x…

Linux diff命令

参考资料 【 diff 】コマンド(基本編)――テキストファイルの差分を出力する便利なdiffコマンド使い方 目录 前期准备一. 基本语法二. 文件比较2.1 无配置项2.2 -B 忽略空行,-w忽略空格2.3 -y 文件内容横向比较显示2.4 -q 仅显示文件是否不同…

AlmaLinux右键菜单(基于GNOME桌面)

文章目录 前言前提说明在文件上右键在文件夹上右键 前言 在使用VSCode的过程中,AlmaLinux没能像Windows一样在右键菜单上显示打开方式,所以找了一下解决方案,罗列出来 前提说明 虽然说无论是media还是StackOverflow都推荐使用这条命令&…

2024年华为OD机试真题-多段线数据压缩-Java-OD统一考试(C卷)

题目描述: 下图中,每个方块代表一个像素,每个像素用其行号和列号表示。 为简化处理,多段线的走向只能是水平、竖直、斜向45度。 上图中的多段线可以用下面的坐标串表示:(2, 8), (3, 7), (3, 6), (3, 5), (4, 4), (5, 3), (6, 2), (7, 3), (8, 4), (7, 5)。 但可以发现,这…

Stable Diffusion 模型下载:majicMIX lux 麦橘辉耀 - V3

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十

王树森《RNN Transformer》系列公开课

本课程主要介绍NLP相关,包括RNN、LSTM、Attention、Transformer、BERT等模型,以及情感识别、文本生成、机器翻译等应用 ShusenWang的个人空间-ShusenWang个人主页-哔哩哔哩视频 (bilibili.com) (一)NLP基础 1、数据处理基础 数…

【DDD】学习笔记-统一语言与领域分析模型

无论你采用什么样的软件开发过程,对于一个复杂的软件系统,都必然需要通过分析阶段对问题域展开分析,如此才能有的放矢地针对该软件系统的需求寻找设计上的解决方案。在领域驱动设计中,分析阶段完全围绕着“领域”为中心展开&#…

RabbitMQ(保姆级教程)

RabbitMQ学习 基础 1. 同步通信和异步通信 同步调用 下一步动作必须依赖上一步 异步调用 通知到位就行,不对消费者做强制要求,只要求最终一致性就行 2. MQ技术选项 消息先进先出,RabbitMQ默认有序 Erlang 是面向并发&#xff0c…

STM32 + ESP8266,连接阿里云 上报/订阅数据

(文章正在编辑中,一点点地截图操作过程,估计要拖拉两三天) 一、烧录MQTT固件 ESP8266出厂时,默认是AT固件。连接阿里云,需要使用MQTT固件。 1、独立EPS8266模块的烧录方法 2、魔女开发板,板载…

备战蓝桥杯---组合数学基础1

让我们来几道高中的组合题吧: 1.我们一定有n个向下,为 2.我们挑最大的两个,条件是他们奇偶性相同,为2*A10,2; 3.用捆绑法即可。 4.我们用隔板法,为 5.问题等价于23个相同的球放到3个盒子里,每个盒子至少…

【北邮鲁鹏老师计算机视觉课程笔记】04 fitting 拟合

【北邮鲁鹏老师计算机视觉课程笔记】04 fitting 拟合 1 拟合的任务 如何从边缘找出真正的线? 存在问题 ①噪声 ②外点、离群点 ③缺失数据 2 最小二乘 存在的问题 3 全最小二乘 度量的是点到直线的距离而不是点在y方向到直线的距离 提示:点到直线的…

ChatGPT偷懒、变慢的罪魁祸首竟然是它?!系统提示词塞满垃圾!

大家好,我是木易,一个持续关注AI领域的互联网技术产品经理,国内Top2本科,美国Top10 CS研究生,MBA。我坚信AI是普通人变强的“外挂”,所以创建了“AI信息Gap”这个公众号,专注于分享AI全维度知识…

【Java程序设计】【C00263】基于Springboot的分布式架构网上商城(有论文)

基于Springboot的分布式架构网上商城(有论文) 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的网上商城 本系统分为管理员功能模块以及系统功能模块。 系统功能模块:在系统首页可以查看首首页、商品信息、购物…

【Git】移除Git中的文件

有的时候需要移除或者更新 Git 中的文件,我们无法直接在远程仓库中移除,移除或者更新操作需要在本地端实现。 1、移除被跟踪文件 当某个文件被添加到暂存区或者本地仓库,此时会被标记为“跟踪状态”,此时 Git 就会代为管理这个文…

肿瘤微环境异质性对治疗反应的影响(综述)

Influence of tumour micro-environment heterogeneity on therapeutic response | Nature 肿瘤的形成涉及肿瘤细胞与细胞外基质、肿瘤血管和免疫细胞的共同进化。肿瘤的成功生长和最终转移并不完全取决于肿瘤细胞的基因改变,还取决于这种突变在特定环境中带来的适…

通过QT制作一个模仿微信主界面的界面(不要求实现具体通信功能)

main.cpp #include "widget.h" #include "second.h"#include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();//实例化第二个界面Second s;QObject::connect(&w, &Widget::my_jump, &…

STM32F1 引脚重映射功能

STM32 端口引脚重映射 文章目录 STM32 端口引脚重映射前言1、查阅芯片数据手册1.1 串口引脚重映射描述 2、代码部分2.1 核心代码部分 3、实验现象4、总结 前言 在写程序时遇到想要的端口功能&#xff0c;而这个引脚又被其它的功能占用了无法删除掉或直接使用&#xff0c;这种情…