当前位置: 首页 > web >正文

【C++游戏引擎开发】第30篇:物理引擎(Bullet)—软体动力学系统

一、软体动力学理论体系

1.1 连续体力学基础

1.1.1 变形梯度张量

物体运动可描述为映射函数:
x = ϕ ( X , t ) \mathbf{x} = \phi(\mathbf{X},t) x=ϕ(X,t)
其中 X \mathbf{X} X为物质坐标, x \mathbf{x} x为空间坐标。变形梯度张量定义为:
F = ∂ x ∂ X = ∇ X ϕ \mathbf{F} = \frac{\partial \mathbf{x}}{\partial \mathbf{X}} = \nabla_X \phi F=Xx=Xϕ

关键分解定理:
F = R U = V R \mathbf{F} = \mathbf{R}\mathbf{U} = \mathbf{V}\mathbf{R} F=RU=VR
其中 R \mathbf{R} R为旋转张量, U \mathbf{U} U V \mathbf{V} V为右/左拉伸张量

1.1.2 应变度量

Green-Lagrange应变张量:
E = 1 2 ( F T F − I ) \mathbf{E} = \frac{1}{2}(\mathbf{F}^T\mathbf{F} - \mathbf{I}) E=21(FTFI)

柯西应力张量 σ \mathbf{\sigma} σ与第二类Piola-Kirchhoff应力 S \mathbf{S} S的关系:
S = J F − 1 σ F − T \mathbf{S} = J\mathbf{F}^{-1}\mathbf{\sigma}\mathbf{F}^{-T} S=JF1σFT
其中 J = det ⁡ ( F ) J = \det(\mathbf{F}) J=det(F)

1.2 本构方程

1.2.1 Saint Venant-Kirchhoff模型

适用于大变形弹性体:
S = λ tr ( E ) I + 2 μ E \mathbf{S} = \lambda \text{tr}(\mathbf{E})\mathbf{I} + 2\mu\mathbf{E} S=λtr(E)I+2μE
其中λ和μ为Lamé参数,满足:
μ = E 2 ( 1 + ν ) , λ = E ν ( 1 + ν ) ( 1 − 2 ν ) \mu = \frac{E}{2(1+\nu)}, \quad \lambda = \frac{E\nu}{(1+\nu)(1-2\nu)} μ=2(1+ν)E,λ=(1+ν)(12ν)Eν
(E为杨氏模量,ν为泊松比)

1.2.2 Neo-Hookean模型

适用于不可压缩橡胶材料:
Ψ = μ 2 ( I 1 − 3 ) − μ ln ⁡ J + λ 2 ( ln ⁡ J ) 2 \Psi = \frac{\mu}{2}(I_1 - 3) - \mu\ln J + \frac{\lambda}{2}(\ln J)^2 Ψ=2μ(I13)μlnJ+2λ(lnJ)2
其中 I 1 = tr ( C ) I_1 = \text{tr}(\mathbf{C}) I1=tr(C)为第一应变不变量, C = F T F \mathbf{C} = \mathbf{F}^T\mathbf{F} C=FTF

1.3 空间离散化方法

1.3.1 质点-弹簧系统

离散化后的动力学方程:
m i x ¨ i = ∑ j ∈ N ( i ) f i j spring + f i ext m_i \ddot{\mathbf{x}}_i = \sum_{j \in \mathcal{N}(i)} \mathbf{f}_{ij}^{\text{spring}} + \mathbf{f}_i^{\text{ext}} mix¨i=

http://www.xdnf.cn/news/4296.html

相关文章:

  • Java开发 自定义注解(更新中)
  • MySQL 常用函数分类
  • 编程日志4.25
  • 十分钟了解 @MapperScan
  • 盛元广通动物表型分析数字管理平台
  • framebuffer框架与示例
  • 保障企业的数据安全需要做什么?
  • npm下载插件无法更新package.json和package-lock.json文件的解决办法
  • 脑机接口:从科幻到现实,它将如何改变医疗未来?
  • 岳冉RFID手持式读写器专业研发+模块定制双驱动
  • Dynadot专业版邮箱工具指南(一):创建并设置新邮箱
  • 使用 Python 监控系统资源
  • 高等数学第五章---定积分(§5.1定积分的概念、性质和应用)
  • ShardingJdbc-水平分库
  • tinyrenderer笔记(Phong光照模型)
  • 悬崖边的摄影牧歌
  • ModuleNotFoundError 错误
  • [前端]Javascript获取元素宽度
  • Blink和V8的关系
  • Ubuntu 系统详解
  • 0基础学习鸿蒙开发-HarmonyOS4
  • 购物|电商购物小程序|基于微信小程序的购物系统设计与实现(源码+数据库+文档)
  • 我用cursor 搭建了临时邮箱服务-Temp Mail 365
  • python实战:通过输入文字匹配在docx文档中的具体位置
  • Linux进程8-共享内存概念机操作、shmget/shmat/shmdt/shmctl函数用法、空间大小修改
  • 【LLIE专题】基于 CLIP 的无监督背光增强算法
  • 【HarmonyOS 5】鸿蒙用户头像编辑功能实践
  • HA: Natraj靶场渗透测试
  • 2024 ICPC武汉邀请赛暨湖北省赛 题解
  • Vue 自定义指令输入校验过滤