【学习笔记】计算机图形学的几何数学基础知识

news/2025/2/8 13:47:52 标签: 学习, 笔记

3D坐标系

左手系和右手系
在这里插入图片描述

x,y,z与w(齐次坐标)

矩阵

  • 第一个下标表示行号,第二个下标表示列号。
  • 矩阵乘法不满足交换律
  • 矩阵乘法=矩阵合并
  • 一个矩阵乘以它的逆矩阵=单位矩阵

变化矩阵

平移矩阵

在这里插入图片描述

缩放矩阵

除了可以缩放,
还可以利用缩放,在给定右手系的情况确定左手系,相互转换
在这里插入图片描述

旋转矩阵

3D空间中旋转物体,需要指定旋转轴和旋转角
在这里插入图片描述

向量

向量的加减法
归一化

点积的应用

  • 求两个向量的夹角 (单位向量点积)
    • 是否正交
    • 是否同向
    • 是否平行相反
    • 是否在夹角范围内
  • 向量大小
  • 点到平面的距离

叉积的应用

生成一个正交于两个向量的向量
遵循右手定则

局部空间与世界空间

局部空间 local space:物体的坐标系,又名模型空间 model space 物体空间 object space

在世界空间中为对象定位及定向的矩阵称为模型矩阵,通常记为 M

视觉空间和合成相机

已知OpenGl相机的位置永远是原点,相机的方向永远是z轴负方向,相机的上方永远是y轴正方向。
那么想要将物体放到相机前方,需要将物体的坐标系转换到相机坐标系即可。

我们根据虚拟/期望的相机位置/欧拉角,来计算视图变换矩阵,将物体从世界坐标转换到相机坐标系。
将平移和旋转矩阵(相机从原点移动到期望位置)合并得到的矩阵称为视图变换矩阵(viewing transform),记作 V

视图变换矩阵

模型-视图(Model-View,MV)矩阵:模型空间直接转换至相机空间(把M模型矩阵和V视图变换矩阵合并了)

投影矩阵

透视投影矩阵

参数:纵横比、视场、近剪裁平面(也称投影平面)、远剪裁平面

视场 Field Of View, FOV:是可视空间的纵向角度
横纵比 aspect ratio:远近剪裁平面的宽度与高度之比
在这里插入图片描述

正交投影矩阵

参数:
(a)从相机到投影平面的距离 znear;
(b)从相机到远剪裁平面的距离 zfar;
(c)L、R、T 和 B 的值,其中 L 和 R 分别是投影平面左、右边界的 x 坐标,T 和 B 分别是投影、平面上、下边界的 y 坐标。
在这里插入图片描述

LookAt矩阵

当你想要把相机放在某处并看向一个特定的位置时,就需要用到它。
参数

  • 叉积计算
    • fwd相机正面
    • side相机侧面
    • up相机上面
  • 相机位置
  • 目标位置
    在这里插入图片描述

构建矩阵变换的GLSL函数

GLSL


http://www.niftyadmin.cn/n/5844913.html

相关文章

论文翻译学习:《DeepSeek-R1: 通过强化学习激励大型语言模型的推理能力》

摘要 我们介绍了我们的第一代推理模型 DeepSeek-R1-Zero 和 DeepSeek-R1。DeepSeek-R1-Zero 是一个通过大规模强化学习(RL)训练的模型,没有经过监督微调(SFT)作为初步步骤,展示了卓越的推理能力。通过强化…

新能源产业的质量革命:六西格玛培训如何重塑制造竞争力

在新能源行业狂飙突进的今天,企业若想在全球供应链中占据高地,仅靠技术突破已远远不够。制造效率的毫厘之差,可能成为市场话语权的千里之距。某光伏巨头曾因电池片良率低于行业均值1.5%,导致年损失超2.3亿元——这恰恰印证了六西格…

4.Python字符串和列表:字符串输入、字符串输出、下标和切片、字符串常见函数、列表(list)、列表的循环遍历、列表的增删改查、列表的嵌套、列表的切片

1. Python 字符串 1.1 字符串输入 input() 函数用于从用户获取字符串输入。它总是返回一个字符串类型的值。 # 从用户输入字符串 name input("请输入你的名字:") print(f"你好, {name}")1.2 字符串输出 字符串的输出通常使用 print() 函数…

【Elasticsearch】分桶聚合功能概述

这些聚合功能可以根据它们的作用和应用场景分为几大类,以下是分类后的结果: 1.基础聚合(Basic Aggregations) • Terms(字段聚合) 根据字段值对数据进行分组并统计。 例子:按产品类别统计销…

0207作业

思维导图 服务器 enum Type{TYPE_REGIST,TYPE_LOGIN };typedef struct Pack{int size;enum Type type;char buf[2048];}pack_t;typedef struct list{union Data{struct List* tail;char str[64];}data;struct List* next;struct List* prev; }List;List* create_node(){List* …

微信小程序~电器维修系统小程序

博主介绍:✌程序猿徐师兄、8年大厂程序员经历。全网粉丝15w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

关于大模型 AGI 应知应会_生在AI发展的时代

在 AI 时代,大模型和通用人工智能(AGI)正在深刻改变我们的生活和工作方式。以下是一些关于大模型和 AGI 的关键知识点,帮助我们更好地理解这一技术浪潮。 一、大模型的核心概念与特点 (一)什么是大模型 …

Effective Objective-C 2.0 读书笔记——类对象

Effective Objective-C 2.0 读书笔记——类对象 前言 在学习消息转发之中的动态方法解析,对如何获取实例方法列表和类方法列表有些许疑问。在使用class方法,对NSObject的实例对象使用class方法,和对NSObject直接使用class方法,得…