【GAMES103】基于物理的计算机动画入门(1)前置的基础数学知识

news2024/10/4 20:29:57

GAMES103: 基于物理的计算机动画入门
链接:GAMES103

1. 坐标系的划分

在游戏引擎中分为右手和左手坐标系,区分的依据是什么?

在这里插入图片描述

上图可以看到如果是左手坐标系,那么所有的物体都在屏幕后面,意味着x,y,z的值都是正的。

2. Vector Norm

向量的长度就是2-Norm,通常使用Vector Norm来评估向量。

在这里插入图片描述

3. 投影

投影的计算,可以看到投影的长度只和两个向量有关系。

在这里插入图片描述

在游戏引擎中,通常使用投影推出来的Signed Distance,进行碰撞检测的判断。

在这里插入图片描述

4. 叉乘

4.1 三角形的拓扑顺序

叉乘决定了两条边计算的方向,因此在录入三角形的时候,也应该注意三角形边的顺序,也叫做拓扑顺序。

在这里插入图片描述

4.2 Signed Areas和Barycentric Weights

对于2维中,叉乘引出的重心插值。

在这里插入图片描述

对于3维中,可以通过叉乘计算体积,同时叉乘也有相同的规律。

在这里插入图片描述

5. 矩阵的分解

5.1 奇异值分解

矩阵的奇异值分解主要的思想:依据于每一个矩阵都可以通过一个正形进行旋转→缩放→旋转的步骤来得到。

因此U和V都是正交矩阵,用于做旋转操作,而D是对角矩阵,来进行缩放,D中的值也称为奇异值。

在这里插入图片描述

5.2 特征值分解

注意:在计算机物理学中,主要讨论对称矩阵的特征值分解。

特征值的思想:针对于每一个“轴”的指定缩放。

在这里插入图片描述

5.3 LU分解

LU分解的思想:将任何矩阵都能分解为上三角和下三角矩阵的乘积,主要用于求解Ax=b线性方程。

在这里插入图片描述

6. 矩阵正定

矩阵正定的通常判定方法:
(1)判定特征值的正负性
(2)使用对角占优的方法判定正定,注意,对角占优能推出正定,但正定不一定对角占优
(3)正定矩阵必定可逆

在这里插入图片描述

7. 迭代法求解线性系统

主要目的:使 b − A x [ k ] b-Ax^{[k]} bAx[k] 趋近于0,这要求 1 − 1- 1 α \alpha α A M − 1 AM^{-1} AM1 的谱半径小于1 ,因此M矩阵的不同对应着不同的迭代方法。

在这里插入图片描述

可以把线性系统认为是二次优化问题, α \alpha α通常是需要试错的。

迭代法分为:
(1)Jacobi迭代法
(2)Gauss-Seidel迭代法
(3)超松弛(SOR方法)

注意:迭代法求解以后用到会详细说明。

8. 向量的求导

8.1 普通函数对向量x求一阶导

对向量x求一阶导通常用梯度进行表示,意义是最快的增长方向。

在这里插入图片描述

8.2 向量函数对向量x求一阶导

向量函数相当用于就是三个函数拼起来的向量,直接求导即可。

在这里插入图片描述

上图中Jacobian是雅可比行列式,Divergence是散度,如果将 ▽ \bigtriangledown 也看作是一个算子,那么做叉乘会得到Curl,即旋度。

8.3 普通函数对向量x求二阶导

二阶导,因为普通函数对向量求一阶导一定得到的是一个向量,再次求导相当于在做Jacobian。

在这里插入图片描述

Hessian(海森矩阵)仅仅是对一阶导的组合,同样的Hessian矩阵的对角叫做Laplacian(拉普拉斯)。

9. 函数对向量参数的泰勒展开

在这里插入图片描述

注意:对于向量的二阶泰勒展开是可以判断正定的,这可以带来很多性质,比如极值等。

10. 对弹簧的受力分析

通过链式法则和物理定律我们能推出弹簧受力时的能量、力和能量的海森矩阵。

10.1 针对于x的Norm的求导

在这里插入图片描述

10.2 单方向弹簧受力

在这里插入图片描述

10.3 双方向弹簧受力

两个方向都有力时,我们将两端的力组合成一个大向量,以相同方式计算即可。

在这里插入图片描述

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

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

相关文章

【Linux 之二】Ubuntu下开发环境的搭建(NFS \ SSH \ FTP \ Smba \ ...)

目前正在进行Linux相关项目的开发,而我的Linux开发是在Ubuntu(版本20.04)下进行的,为此需要搭建很多Linux相关的开发环境,方便工作的进行。这里主要是对各种开发环境的搭建做一个总结记录,方便后面查阅&…

彻底解决win11系统0x80070032

经过各种尝试,终于找到原因。第一个是电脑加密软件,第二个是需要的部分功能没有开启,第三个BIOS设置。个人觉得第三个不重要。 解决方法 笔记本型号 笔记本型号是Thinkpad T14 gen2。进入BIOS的按键是按住Enter键。 1、关闭山丽防水墙服务…

AI AIgents时代 - (四.) HuggingGPT MetaGPT

🟢 HuggingGPT HuggingGPT是一个多模型调用的 Agent 框架,利用 ChatGPT 作为任务规划器,根据每个模型的描述来选择 HuggingFace 平台上可用的模型,最后根据模型的执行结果生成总结性的响应。 这个项目目前已在 Github 上开源&am…

【暴力DP】CF1409 F

Problem - F - Codeforces 题意: 思路: 首先有个很明显的结论是:替换的字符一定是那两个字符之一 那么替换成哪个字符贡献更大不确定,因此考虑DP 因为有操作次数限制,直接把操作放进状态里 为了计算贡献&#xff…

Go语言高级特性解析与实践

1. 并发模型与goroutine Go语言以其强大的并发模型而闻名,它的核心机制是goroutine。goroutine是一种轻量级线程,由Go运行时负责调度。我们可以通过go关键字创建goroutine,而不需要像传统的线程编程那样关注底层的线程管理。 示例代码&…

Spring boot:解决@RequestBody失效问题:传入的实体类为NULL

1.问题描述 使用springboot写了一个controller类, 在使用postman测试用户注册功能的时候, 出现了传入实体类user,没有被读取的问题(即requestbody注解失效)。 2.解决方法 1.用户请求方式问题 在请求时&#xff0c…

ruoyi框架修改左侧菜单样式

菜单效果 ruoyi前端框架左侧的菜单很丑,我们需要修改一下样式,下面直接看效果。 修改代码 1、sidebar.scss .el-menu-item, .el-submenu__title {overflow: hidden !important;text-overflow: ellipsis !important;white-space: nowrap !important;//…

java框架-Springboot3-数据访问

整合SSM SpringSpringMVCMybatis 整合步骤 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"…

k8s master 是如何进行pod的调度的

Master 节点将 Pod 调度到指定的 Node 节点的原理 该工作由 kube-scheduler 来完成&#xff0c;整个调度过程通过执行一些列复杂的算法最终为每个 Pod 计算出一个最佳的目标 Node&#xff0c;该过程由 kube-scheduler 进程自动完成。常见的有轮询调度&#xff08;RR&#xff09…

用HTML、CSS和JavaScript制作的通用进制转换器

随着编程和计算机科学越来越受欢迎&#xff0c;我们经常需要进行进制转换。本文将介绍一个简洁、美观、适用于移动设备的进制转换工具&#xff0c;并详细讨论其实现。 目录 &#x1f30d; 用HTML、CSS和JavaScript制作的通用进制转换器 1.项目图片展示 2. 技术栈 3. 主要功…

Unity Bolt模块间通信

使用Bolt无代码设计开发的时候&#xff0c;我们不能简单的认为只需要一个FlowMachine就可以完成所有流程的开发。我们需要不同的模块进行拆分&#xff0c;以便更好的管理和协作。这就需要不同模块之间的通信处理。经过研究与使用&#xff0c;将常用的通信方式总结如下&#xff…

React中setState的原理及深层理解

1.为什么使用setState React并没有实现类似于Vue2中的Object.defineProperty或者Vue3中的Proxy的方式来监听数据的变化 我们必须通过setState来告知React数据已经发生了变化 setState方法是从Component中继承过来的。 2.setState异步更新 setState设计为异步&#xff0c;可…

23. 图论 - 图的由来和构成

文章目录 图的由来图的构成Hi, 你好。我是茶桁。 从第一节课上到现在,我基本上把和人工智能相关的一些数学知识都教给大家了,终于来到我们人工智能数学的最后一个部分了,让我们从今天开始进入「图论」。 图论其实是一个比较有趣的领域,因为微积分其实更多的是对应连续型的…

【react】使用useEffect操作dom

简言 在学习react时&#xff0c;需要了一个需要在useEffect里操作dom的用法。 一般不推荐这么干&#xff0c;如果是函数组件在一渲染已挂载后立即需要操作dom绑定事件等可以参考下面解决方法。 描述 官网交错运动示例这个示例中&#xff0c;usePointerPosition() Hook 追踪当…

【前段基础入门之】=>初识 HTML

文章目录 前言HTML的详情简介HTML 发展史HTML 入门1. HTML 标签元素2. HTML标签属性3. HTML的标准结构 总结 前言 在整个前端开发中&#xff0c;必须掌握的技术栈为&#xff1a; HTML &#xff0c;CSS&#xff0c;JavaScript&#xff0c;它们三者&#xff0c;共同组成了前端开发…

华为云云耀云服务器L实例评测|认识redis未授权访问漏洞 漏洞的部分复现 设置连接密码 redis其他命令学习

前言 最近华为云云耀云服务器L实例上新&#xff0c;也搞了一台来玩&#xff0c;期间遇到过MySQL数据库被攻击的情况&#xff0c;数据丢失&#xff0c;还好我有几份备份&#xff0c;没有造成太大的损失。昨天收到华为云的邮箱提醒&#xff0c;我的redis数据库没有设置密码&…

MySQL高级语句 Part2(视图表 +存储过程+条件语句+循环语句)

这里写目录标题 一、视图表 create view1.1 视图表概述1.2 视图表能否修改&#xff1f;&#xff08;面试题&#xff09;1.3 基本语法1.3.1 创建1.3.2 查看1.3.3 删除 1.4 通过视图表求无交集值 二、case语句三、空值(null) 和 无值( ) 的区别四、正则表达式4.1 基本语法和匹配模…

pcl--第十二节 2D和3D融合和手眼标定

2D&3D融合 概述 截止目前为止&#xff0c;我们学习了机器人学&#xff0c;学习了2D和3D视觉算法。我们也学习了2D相机(图像数据的来源)和3D相机(点云数据的来源)工作原理。 实际上&#xff0c;我们最终要做的&#xff0c;是一个手眼机器人系统。在这个系统里&#xff0c…

数据仓库整理

数仓 olap vs oltp OLTP主要用于支持日常的业务操作&#xff0c;如银行交易、电子商务等&#xff0c;强调数据的准确性、实时性和并发性。OLAP主要用于支持复杂的数据分析&#xff0c;如数据仓库、决策支持等&#xff0c;强调数据的维度、聚合和可视化。 将OLTP数据库的数据…

接入国家能源平台MQTT应用案例

一、项目介绍 随着国家对节能环保措施的力度不断加大&#xff0c;基于物联网技术搭建的国家能源平台在国家相关部门的建设下逐渐成熟。致力于利用实际能耗数据建立能效仿真模型&#xff0c;通过实时寻优运算&#xff0c;获得当前的最优化运行策略&#xff0c;并将控制指令下发…