《3D数学基础-图形和游戏开发》阅读笔记 | 3D数学基础 (学习中)

news2024/12/22 18:41:25

文章目录

  • 3D数学基础
    • 矢量/向量
      • 概述 - 什么是向量
        • 单位矢量:只关注方向不关注大小
      • 数学运算
        • 矢量的加法与减法
        • 减法的几何意义计算一个点到另一个点的位移
        • 矢量的点积与叉积
    • 矩阵
      • 矩阵的几何意义

3D数学基础

矢量/向量

在笔记中

  • 变量使用小写字母表示,a
  • 由于笔记中画上箭头表示向量比较麻烦,这里小写字母加粗显示,a
  • 矩阵变量使用粗体大写字母表示,A

概述 - 什么是向量

在线性代数中,Vector被称为向量。在几何中,Vector被称为矢量。

向量意义
对数学家来说,向量是一个数字列表(程序员一般称为数组)。

[1,2,3]表示为行向量,垂直过来就是列向量。可以引用向量来表示各个分量,通常使用x,y来代指二维向量中的元素,x,y,z来代指三维向量中的元素。比如a=[1,2,3]ax=1,ay=2,az=3

矢量意义

矢量是具有大小和方向的有向线段

  • 矢量的大小:矢量的长度,非负值。
  • 矢量的方向:描述矢量在空间中指向的方向。

图形上每个矢量是位置无关的,比如使用笛卡尔坐标描述矢量时,每个坐标相当于描述对应维度(xy其他)中有符号位移
比如三维矢量[3,-1,2]可以表示为①向+x轴平移3个单位②向+y轴平移-1个单位(或者-y轴平移1个单位)③向+z轴平移2个单位。其实顺序不重要,移动的总量是一样的。

零矢量:矢量中唯一没有方向的,可以理解为无位移(而不是一个点因为矢量不描述一点)

点与矢量的关系
假设有点(x,y)与矢量[x,y]
如果从原点开始按照矢量[x,y]指定的量移动,最终将到达点(x,y)的位置。或者说矢量[x,y]给出了原点到点(x,y)的位移。

在这里插入图片描述

单位矢量:只关注方向不关注大小

单位矢量/归一化矢量 表示大小为1(单位长度)的矢量

有时会将单位向量称为法线,法线通常隐含垂直于其他东西的矢量,主要关注点在垂直而不是单位长度。法线往往是单位向量,但是也有例外(所以需要注意例外的情况)

总结

  • 归一化矢量是大小为单位长度的矢量
  • 法线与某些东西垂直的矢量,通常情况是单位长度

计算公式
v的单位矢量=v/|v|

数学运算

标量和矢量的乘法,标量乘以矢量的每个分量
k[x,y,z] = [x,y,z]k = [kx,ky,kz]

矢量的加法与减法

规则:相应分量相加/相减

a+b= b+a
a-b = -(b-a)

比如a+b,三角形法则几何理解为从一个点开始应用由a指定的位移,然后再应用由b指定的位移
在这里插入图片描述

减法的几何意义计算一个点到另一个点的位移

比如a点到b的距离,将ab理解为来自原点的矢量,b-a产生的是从ab的矢量,矢量b-a的长度就是两点之间的距离。
在这里插入图片描述

矢量的点积与叉积

在这里插入图片描述
在这里插入图片描述

矩阵

在这里插入图片描述

在这里插入图片描述

矩阵的几何意义

  • 方阵的行可以理解为坐标空间的基矢量
  • 将矢量从原始空间变化到新坐标空间的方法是:矢量 * 矩阵
  • 原始坐标空间到由基矢量定义的坐标空间的变化是线性变化(保留直线、平行线也保持平行、原点不移动变化不包含平移),但角度、长度、面积等可能在变化后发生变化。
  • 可以通过可视化变化后坐标空间的基矢量来可视化矩阵。

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

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

相关文章

VisioForge SDKs for .NET cRACK

VisioForge 为软件开发人员提供视频捕获、编辑和播放解决方案 使用我们的开发人员软件,您可以创建应用程序来捕获来自各种来源(例如网络摄像头、IP 摄像机、摄像机或 PC 屏幕)的视频。视频可以保存为所有流行的格式,例如 MP4、Web…

slf4j+logback源码加载流程解析

slf4j绑定logback源码解析 Logger log LoggerFactory.getLogger(LogbackDemo.class);如上述代码所示,在项目中通常会这样创建一个Logger对象去打印日志。 然后点进去,会走到LoggerFactory的getILoggerFactory()方法,如下代码所示。 public …

Go(Golang)的10个常见代码片段用于各种任务

探索有用的Go编程代码片段 提供“前10名”Go(Golang)代码片段的明确列表是具有挑战性的,因为代码片段的实用性取决于您试图解决的具体问题。然而,我可以为您提供十个常用的Go代码片段,涵盖了各种任务和概念&#xff1…

AirServer 7.27 mac版投屏下载2024最新安装许可证激活码

AirServer官方版是一款使用方便的投屏软件,在教室,会议室以及游戏中极为方便。AirServer官方版支持IOS、Android、Windows、mac、Chromebook等多种设备,使用AirServer不需要其他的设备即可完成投屏操作,相比其他投屏软件&#xff…

[密码学]ECC加密

椭圆曲线加密 Ellipse Curve Cryptography 椭圆曲线上的离散对数问题 Ellipse Curve Discrete logarithm Problem 椭圆曲线 注意积分公式的分母,椭圆曲线由此得名。这种曲线和椭圆一点不像。 离散对数: yg^x mod p,对于给定的g,x,p求y很容易&#…

解决:PermissionError: [Errno 13] Permission denied: ‘xxx’

解决:PermissionError: [Errno 13] Permission denied: ‘xxx’ 文章目录 解决:PermissionError: [Errno 13] Permission denied: xxx背景报错问题报错翻译报错位置代码报错原因解决方法今天的分享就到此结束了 背景 在使用之前的代码时,报错…

Java技术栈 —— Nginx的使用

Java技术栈 —— Nginx的使用 一、认识Nginx二、搭建Nginx环境2.1 在Ubuntu上安装Nginx 三、使用Nginx3.1 配置负载均衡(HTTP) 一、认识Nginx 企业需要运行多个相同的副本,并将负载分散在整个系统集群上,为了高性能的负载均衡,引入了Nginx代…

【Kubernetes】配置管理中心Configmap

配置管理中心Configmap 一、简介1.1、什么是Configmap1.2、Configmap能解决什么问题1.3、Configmap应用场景1.4、Configmap局限性 二、Configmap创建方法2.1、命令行直接创建2.2、通过文件创建2.3、指定目录创建2.4、编写configmap资源清单yaml文件 三、使用Configmap3.1、通过…

mac中excel条件格式找到每一列的最大值并标红

假设现在excel有A1:R24组数据,最终效果如下 先选择要处理数据的第一列,然后点击【条件格式】-【新建规则】 style选择【classic】以及【Use a formula to determine which cells to format】,输入规则【C3MAX(C$3:C$24)】 注意这里C$3前面没…

云原生学习系列之基础环境准备(虚拟机搭建)

最近由于工作需要开始学习云原生相关内容,为方便学习操作,准备在外网搭建自己的环境,然后进行相关的练习,搭建环境的第一步便是虚拟机的安装。 基础软件 这里我用到的是CentOS-7-x86_64的操作系统。 链接:https://pa…

Tabs组件的使用

概述 在我们常用的应用中,经常会有视图内容切换的场景,来展示更加丰富的内容。比如下面这个页面,点击底部的页签的选项,可以实现“首页”和“我的” 两个内容视图的切换。 ArkUI开发框架提供了一种页签容器组件Tabs,…

前端 js 基础对象 (3)

js 对象定义 <!DOCTYPE html> <html> <body><h1>JavaScript 对象创建</h1><p id"demo1"></p> <p>new</p> <p id"demo"></p><script> // 创建对象&#xff1a; var persona {fi…

58.网游逆向分析与插件开发-游戏增加自动化助手接口-游戏菜单文字资源读取的逆向分析

内容来源于&#xff1a;易道云信息技术研究院VIP课 之前的内容&#xff1a;接管游戏的自动药水设定功能-CSDN博客 码云地址&#xff08;master分支&#xff09;&#xff1a;https://gitee.com/dye_your_fingers/sro_-ex.git 码云版本号&#xff1a;34b9c1d43b512d0b4a3c395b…

gorm.PrepareStmt模式使用不当问题查询

一、背景 xx服务内存持续上涨。内存占用10%以内&#xff0c;在QPS无明显变化的前提下&#xff0c;内存占用50%左右。 dump了一下heap内存&#xff0c;发现主要是 InitUserCacheRefresh 任务代码占用 正常来说&#xff0c;dao层查完数据库之后&#xff0c;对象应该会释放&…

Python序列之字典

系列文章目录 Python序列之列表Python序列之元组Python序列之字典&#xff08;本篇文章&#xff09;Python序列之集合 Python序列之字典 系列文章目录前言一、字典是什么&#xff1f;二、字典的操作1.创建&#xff08;1&#xff09;通过{}、dict()创建&#xff08;2&#xff0…

实验室(检验科)信息系统LIS源码,客户端:WPF+Windows Forms

lis系统源码&#xff0c;医学检验信息系统源码 LIS系统&#xff08;Laboratory Information System&#xff09;即实验室&#xff08;检验科&#xff09;信息系统&#xff0c;它将检验仪器付出的检验数据与相关信息接入计算机网络系统中&#xff0c;让患者、实验室、临床科室、…

进入IC行业的学习之路:建议和必读书籍推荐

近期有不少渴望进入IC行业的同学在后台给我留言&#xff0c;他们询问如何入门&#xff1f;需要学习哪些内容&#xff1f;推荐的入门必读书籍。 在这个行业已经有些年头了&#xff0c;多多少少有一些经验之谈&#xff0c;今天在这里&#xff0c;我将以我的经验和专业知识为基础…

软件测试之自动化测试的四个阶段

第一阶段&#xff1a;API自动化 之前的想法是&#xff1a;通过API创建数据&#xff0c;访问数据&#xff0c;进行数据操作&#xff0c;存储数据库&#xff0c;通过模拟前端的操作来想象API的访问流程。 然后&#xff0c;验证数据库是否存储正确。后来发现该想法流程就是错误的…

IO作业2.0

思维导图 1> 使用fread、fwrite完成两个文件的拷贝 #include <stdio.h> #include <string.h> #include <stdlib.h> int main(int argc, const char *argv[]) {if(argc ! 3) //判断外部参数 {printf("The terminal format is incorrect\n");r…

刚来实习就跑路,可行么?

最近 编程导航 的一位鱼友问了个让我血压升高的问题&#xff1a; 鱼友提问 鱼皮你好&#xff0c;我投了两周简历&#xff0c;然后昨天面了一个小厂的远程实习并且拿到了 offer&#xff0c;我要不要试试呢&#xff1f; 我在顾虑比如我如果在远程实习期间找到一个中厂或者大厂…