理财网站建设方案书,wordpress网站上传服务器,做公众号首图的网站,photoshop+做网站logo参考资料#xff1a; 文章目录 概述流程概述#xff1a;1.前置知识1.1 运动方程#xff08;牛顿第二定律#xff09;1.2 二阶导数的离散化1.3 代入运动方程1.4 物理意义 2. 将隐式积分问题转化为一个优化问题2.1 要解的是隐式积分问题是#xff1a;2.2 引入辅助变量d1. 左…参考资料 文章目录 概述流程概述1.前置知识1.1 运动方程牛顿第二定律1.2 二阶导数的离散化1.3 代入运动方程1.4 物理意义 2. 将隐式积分问题转化为一个优化问题2.1 要解的是隐式积分问题是2.2 引入辅助变量d1. 左边公式的物理意义2. 右边公式的几何解释重新定义弹簧的弹性势能E(x,d)矩阵L和J的推导外力为什么放在 X T X^T XT里面 2.3 Block Coordinate Descent块坐标下降法Global Step部分 概述
这篇论文通过引入弹簧方向的辅助变量并采用块坐标下降法解决了传统隐式欧拉法中速度慢的问题成功实现了弹簧质点系统的快速仿真。该方法特别适用于实时应用并且在低迭代次数下也能得到较好的视觉效果。
流程概述
1.前置知识
1.1 运动方程牛顿第二定律
在物理仿真中系统的运动通常由二阶微分方程描述例如 M d 2 q d t 2 f ( q ) M \frac{d^2q}{dt^2} f(q) Mdt2d2qf(q) 其中
( M ) 是质量矩阵表示系统中各质点的质量。( q(t) ) 是位置向量表示质点的位置。( f(q) ) 是作用在质点上的力通常是位移 ( q ) 的函数。
1.2 二阶导数的离散化
使用中心差分法二阶导数 ( d 2 q d t 2 \frac{d^2q}{dt^2} dt2d2q ) 的离散形式为 d 2 q d t 2 ≈ q n 1 − 2 q n q n − 1 h 2 \frac{d^2q}{dt^2} \approx \frac{q_{n1} - 2q_n q_{n-1}}{h^2} dt2d2q≈h2qn1−2qnqn−1 其中
( q_n ) 是时间 ( t_n ) 时的位置。( q_{n1} ) 是时间 ( t_{n1} t_n h ) 时的位置。( q_{n-1} ) 是时间 ( t_{n-1} t_n - h ) 时的位置。( h ) 是时间步长
1.3 代入运动方程
将二阶导数的离散化形式代入运动方程 ( M d 2 q d t 2 f ( q ) M \frac{d^2q}{dt^2} f(q) Mdt2d2qf(q) ) M q n 1 − 2 q n q n − 1 h 2 f ( q n 1 ) M \frac{q_{n1} - 2q_n q_{n-1}}{h^2} f(q_{n1}) Mh2qn1−2qnqn−1f(qn1) 最后我们得到隐式欧拉法的公式 M ( q n 1 − 2 q n q n − 1 ) h 2 f ( q n 1 ) M(q_{n1} - 2q_n q_{n-1}) h^2 f(q_{n1}) M(qn1−2qnqn−1)h2f(qn1) 其中( q n 1 q_{n1} qn1 ) 是需要通过求解获得的未知位置( f ( q n 1 ) f(q_{n1}) f(qn1) ) 依赖于 ( q n 1 q_{n1} qn1 )因此这是一个隐式公式
1.4 物理意义 2. 将隐式积分问题转化为一个优化问题
2.1 要解的是隐式积分问题是 M q n 1 − 2 q n q n − 1 h 2 f ( q n 1 ) M \frac{q_{n1} - 2q_n q_{n-1}}{h^2} f(q_{n1}) Mh2qn1−2qnqn−1f(qn1) 其中 n是时间迭代步 q是所有粒子的位置向量 M是粒子质量对角矩阵 h是时间步长 f是整个系统的保守力 q n 1 q_{n1} qn1是未知状态量设为x。 q n q_{n} qn和 q n − 1 q_{n-1} qn−1是已知量设为 y 2 q n − q n − 1 y2q_{n}-q_{n-1} y2qn−qn−1 所以得到式子 M ( x − y ) h 2 f ( x ) M(x-y)h^2f(x) M(x−y)h2f(x) 求解这个方程等效于求解下面这个方程的极小值: (令g(x)求导为0得到上式) g ( x ) 1 2 ( x − y ) T M ( x − y ) h 2 E ( x ) g(x) \frac{1}{2}(x - y)^T M (x - y) h^2 E(x) g(x)21(x−y)TM(x−y)h2E(x)
其中( E ) 为系统的势能因为 ( ∇ E − f \nabla E -f ∇E−f )因此 ( ∇ g 0 \nabla g 0 ∇g0 ) 等效于公式 (7)。
按照胡克定律弹簧的弹性势能为 E 1 2 k ( ∥ p 1 − p 2 ∥ − r ) 2 E \frac{1}{2} k ( \|p_1 - p_2\| - r )^2 E21k(∥p1−p2∥−r)2
其中
( p 1 , p 2 p_1, p_2 p1,p2 ) 为两个粒子的位置( r ) 为弹簧的静止长度rest length。
但如果直接采用这个形式上面的 ( g(x) ) 极值问题就不太好解。为了将上式变形为一个方便求解的形式作者引入了一个辅助变量 ( d ∈ R 3 d \in \mathbb{R}^3 d∈R3 )。
2.2 引入辅助变量d
公式如下 假设d是一个未知的三位向量那么 ( ∥ p 1 − p 2 ∥ − r ) 2 min ∥ d ∥ r ∥ p 1 − p 2 − d ∥ 2 (\|p_1 - p_2\| - r)^2 \min_{\|d\|r} \|p_1 - p_2 - d\|^2 (∥p1−p2∥−r)2∥d∥rmin∥p1−p2−d∥2
1. 左边公式的物理意义
左边的公式 ( ( ∥ p 1 − p 2 ∥ − r ) 2 (\|p_1 - p_2\| - r)^2 (∥p1−p2∥−r)2 ) 是弹簧势能的表示形式依据胡克定律它表示弹簧当前长度 ( |p_1 - p_2| ) 与静止长度 ( r ) 之间的差的平方。这里 ( p 1 p_1 p1 ) 和 ( p 2 p_2 p2 ) 是弹簧两端质点的位置
2. 右边公式的几何解释
右边的公式引入了一个辅助向量 ( d )并对其施加约束 ( |d| r )。这个向量表示固定长度为 ( r ) 的向量但方向可以自由变化。优化问题为 min ∥ d ∥ r ∥ p 1 − p 2 − d ∥ 2 \min_{\|d\|r} \|p_1 - p_2 - d\|^2 ∥d∥rmin∥p1−p2−d∥2 这个问题的意思是寻找一个向量 ( d )使得 ( p 1 − p 2 p_1 - p_2 p1−p2 ) 与 ( d ) 的差最小即让 ( ∥ p 1 − p 2 − d ∥ \|p_1 - p_2 - d\| ∥p1−p2−d∥ ) 最小化 显然当 d r p 1 − p 2 ∥ p 1 − p 2 ∥ 时取极小值 显然当d r \frac{p_1 - p_2}{\|p_1 - p_2\|}时取极小值 显然当dr∥p1−p2∥p1−p2时取极小值
重新定义弹簧的弹性势能E(x,d) 矩阵L和J的推导 第一行的式子为什么可以等于L和J证明如下 忽略 d i T d i d^T_{i}d_{i} diTdi是关于 d 的平方项但这项对 x 的优化没有直接影响因此我们暂时忽略它只关注 x 和 d 之间的关系 S i T S_i^T SiT是一个选择矩阵是一个单位向量(标准基用于选择第 个弹簧的位移变量 d i d_{i} di 在这里 d S i T d d S_i^T d dSiTd 可以理解为向量 d d d 中的每个分量 d i d_i di 对应一个特定的弹簧的偏移量。通过 S i T d S_i^T d SiTd我们提取了 d d d 中与第 i i i 个弹簧相关的那部分位移。
换句话说 S i T S_i^T SiT 确保我们从总的 d d d 向量中只选取第 i i i 个元素因为 S i T S_i^T SiT 是一个标准基其他位置上的元素都会被置为 0。
因此对于每个弹簧 i i i我们有 d i S i T d d_i S_i^T d diSiTd
这表示 d i d_i di 是通过选择矩阵 S i T S_i^T SiT 从 d d d 中提取出来的。
外力为什么放在 X T X^T XT里面
外力 e x t _{ext} fext被视作对系统的额外作用力所以在总的能量函数中它会影响线性部分即外力对位移 x 的作用是线性的。因此外力项自然可以放入这个线性项中 乘以 h 2 ℎ^2 h2体现了外力在整个时间步长内的累积效应 力和加速度是直接相关的。加速度是位移 对时间 的二阶导数。而当我们离散化这个二阶导数时时间步长 ℎ被平方了
2.3 Block Coordinate Descent块坐标下降法 Global Step部分