布料仿真中常用积分方法
来源:互联网 发布:3d建模软件 mac 编辑:程序博客网 时间:2024/03/29 14:16
1. 简介
布料仿真中,我们通常将布料剖分为三角形网格(或四边形网格),并用弹簧-质点模型构造动力学系统:质点即三角形的顶点,弹簧即三角形的边。质点在外力(如,重力)和内力(弹簧力)的作用下根据牛顿第二定律运动:
这就是我们需要求解的常微分方程,通常我们很难求其解析解,只能求其数值解。常用方法有:显式/隐式欧拉法,Symplectic Euler,Midpoint method,Leapfrog integration等。
2. 显式欧拉法(Explicit Euler)
形如,
称为显式积分,可以看出,位置和速度的积分用的都是显式方法。显式积分需控制积分步长
3. 隐式欧拉法(Implicit Euler)
形如,
称为显式积分,可以看出,位置和速度的积分用的都是隐式方法。从理论上说,隐式欧拉法是无条件稳定的。即,积分步长可以任意大,数值求解都稳定(稳定不意味着精确)。然而,隐式方法需要求解非线性方程,通常要线性近似,因此实际中,隐式方法并不是无条件稳定的。即,仍要控制积分步长以保证数值求解的稳定。
这里例证了隐式欧拉法的无条件稳定性。
另注,隐式欧拉法并不是唯一的隐式方法,例如下面将要介绍的midpoint method也属于隐式方法。只是由于其简单及良好性能,隐式欧拉应用得更广泛。
4. Symplectic Euler
形如(1),
或(2),
称为Symplectic Euler。
- 可以看出(1)位置的更新使用显式方法,速度的更新使用隐式方法;(2)位置的更新使用隐式方法,速度的更新使用显式方法。因此Symplectic Euler又称为semi-implicit Euler。
- 由于(1)与隐式欧拉法的计算量相同,因此实际中很少使用(1),而直接使用隐式欧拉法;
- (2)与显式欧拉法的计算量相同,但比显式欧拉法更稳定,可以使用更大的积分步长,因此实际中很少使用显式欧拉法,而使用(2)。从理论上分析,仿真谐振动系统(harmonic oscillation system),只要保证
Δt<2ω=2m/k−−−−√ ,形式(2)的Symplectic Euler就是稳定的。
5. 中点法(Midpoint method)
形如,
称为显式中点法(Explicit Midpoint method),又称为改进的欧拉法(modified Euler method)。
形如,
称为隐式中点法(Implicit Midpoint method)。
由上面两个式子可以看出,
由两种方法估计
1. 将
2. 用
- 中点法的局部误差为
O(h3) ,全局误差为O(h2) 。因此比欧拉法的O(h2) 局部误差,O(h) 全局误差要精确。当然,隐式欧拉法的计算量更大。 - 中点法实际上是Runge-Kutta method(以后会专门介绍)的一种特例。
以上几种方法又可以写成如下通用形式:
- 当
- 当
- 当
- 当
6. Leapfrog method
形如,
称为Leapfrog method。此式又可改写成如下形式:
由此可知,Leapfrog method也是一种隐式方法。另外,Leapfrog method的局部误差为
7. 总结
- 一般来说显式法稳定性差,需要较小的积分步长,但能更好的保持能量(energy preserving);
- 隐式法稳定性好,可以使用更大的积分步长,但会增加能量耗散(energy dissipation)。
- 欧拉法(显式和隐式),Symplectic Euler的局部误差为
O(h2) ,全局误差为O(h) ;中点法,Leapfrog method的局部误差为O(h3) ,全局误差为O(h2) 。 - 有时候我们会对各种力分别做显示和隐式处理,称为IMEX方法。
- 一般情况下,减小时间步长
Δt ,显式欧拉误差的下降速度要稍快与隐式欧拉。
8. 参考资料
- 维基百科 Leapfrog integration词条,Semi implicit Euler method词条,Midpoint method词条。
- Interactive simulation of elastic deformable materials
Servin M, Lacoursiere C, Melin N. SIGRAD 2006.- Frâncu M, Moldoveanu F. Cloth simulation using soft constraints[J]. 2015.
1 0
- 布料仿真中常用积分方法
- 布料仿真论文推荐
- [图形学] 布料仿真(质点弹簧模型)
- matlab数值积分中函数积分的4种方法
- 服装专业布料颜色、中、英对照
- 积分方法
- 积分方法
- 强大的APEX系统 游戏中质感的布料材质
- 关于quartus和modelsim联合仿真中预编译库文件,减少仿真时间的方法
- 常用积分公式
- 常用导数+积分公式
- 常用积分公式
- 机器人常用仿真软件
- 立体匹配中ZNCC的积分图加速方法
- 在NC仿真中临时dump波形的方法
- 弹道导弹预警仿真系统中弹道构造方法
- 【实用方法】ModelSim中添加Altera仿真库
- 布料类
- Apache+PHP+Python(Django框架)搭建成功
- Unity3D中网格合并示例研究
- JSP开发中的分层模式
- 网易视频云郭再荣:视频云服务的未来在于场景化
- java 自动装箱遇到的问题
- 布料仿真中常用积分方法
- Intel SSD盘寿命测试网址
- slam2:kf,pf
- 计算文档的相似度
- 编译安装LNMP配置
- hctf2016 web 部分WriteUp.md
- NYOJ221tree(重建二叉树)
- 新版本下的-----listView
- View的测量