计算机图形学·9 几何学

本文是记录专业课"计算机图形学"的部分笔记,参考教材为Angel的第八版交互式计算机图形学------基于WebGL 2.0的自顶向下方法。

1、几何是一门研究n维空间中对象之间的关系的学科。在计算机图形学中,我们对三维空间中的对象感兴趣。我们希望一个基本几何形状的最小集合,根据这个集合可以建立起更复杂的对象------需

要三个几何要素来描述这些基本几何对象以及对象之间的关系(Scalars标量、Vectors向量、Points点)。

2、标量可以定义为集合中的成员,集合中具有两种运算(加法和乘法),运算遵从一些基本的公理(如结合律、交换律、逆)。标量自身没有几何属性、无方向,只有大小Magnitude。而向量是具有Direction方向和Magnitude长度的量。

3、Points点是空间中的位置,用大写字母表示。点与向量之间可以进行运算:点与点相减得到一个向量;等价地,点与向量相加得到一个新点,比如v=P-Q和P=Q+v等价(v是由Q指向P的向量)。我们需要注意的是,初等几何中主要应用的是笛卡尔直角坐标系,好像点和坐标关联在一起的?这种方法不是基于物理的,点的存在性应该是与坐标系的具体位置无关的、绝大多数几何结果是不依赖于坐标系的(比如欧氏几何中的全等定理)。

4、Linear/Vector Spaces 线性/向量空间是处理向量的数学系统,其中的运算有标量-向量乘法(u=αv)和向量-向量加法(w=u+v),并且在向量空间中,类似v = u + 2w − 3r的表达式有意义。注意到,向量没有位置,而对几何而言只有向量空间是不够的,还需要点。

5、Affine Spaces仿射空间可以理解为Point + vector + Scalar space,支持的运算有:①向量与向量的加法 → 向量;②标量与向量的乘法→ 向量;③点与向量的加法→ 点(直线参数化表示);④标量与标量的运算→标量。所有上述运算均与坐标无关,所以才有坐标转换。特别的,对任意点,定义1 • P = P (点)、0 • P = 0 (零向量,方向不定),零向量与任何向量都线性相关,任意一个向量组里只要有零向量,就一定是线性相关的。

6、在计算机视角中,我们采用ADT(Abstract data type,抽象数据类型),它们独立于内部表示和具体实现,数据抽象是现代计算机科学的基础。我们先来看直线的参数形式:P(α)=P0 + αd,即所有过P0点,与P0连线,且平行于向量d的点构成的直线。这种参数形式比其它形式更具一般性和稳定性,可以推广到曲线和曲面(如Explicit显式的y = mx +h 、Implicit隐式的ax + by +c =0)。此外,还有二维参数化形式,即分解到坐标(两点定义):x(α) = αx1 + (1-α)x0 和y(α) = αy1 + (1-α)y0 ,当α取[0,1]时特例为线段。

7、而在仿射中,射线与线段如下图所示。

两点线性插值就是给定点A、B,它们的仿射组合P(t)=(1-t)A+tB定义了过这两点的直线,常用于动画(如关键帧)。而到了多边形变形,给定两个有同样数目顶点的折线,利用线性插值可以给出从第一个折线到第二个折线的光滑过渡。

8、现在我们考虑"和"式:P=α1P1+α2P2+.....+αnPn,当且仅当α1+ α2+...+ αn=1时上述和式有意义,此时结果就称为点P1, P2,..., Pn 的仿射和(射线\直线的一般化)。进一步地,如果我们限定所有αi≥0,那么得到的就是P1, P2 ,..., Pn 的凸包(convex hull, 线段的一般化)。



Convexity凸性:一个对象为凸的当且仅当在对象中任何两点的连接线段也在该对象内。

9、向量的点积结果是一个标量(投影的数值乘积),u·v=|u| |v| cosθ,等于0等价于二者垂直;向量的叉积结果是一个向量,长度等于|u| |v| sinθ,方向垂直于uv平面并形成右手系,等于0等价于二者平行。

10、曲线是形式为P(α)的单参数定义的几何体,非线性;曲面是由形式为P(α, β)的两个参数定义的几何体,非线性。线性函数对应的是平面和多边形,比如双参数 + 线性 = 平面多边形。平面(Planes)平面是由一个点与两个向量或者三个点确定的(两种定义方法,即P(α,β) = R+ αu + βv和P(α,β) = R + α(Q-R) + β(P-R))。每个平面都有一个垂直于自身的向量n(法向量Normals),在平面的点与二向量形式P(α, β) = R + αu + βv中,可以应用向量的外积得到n = u × v。而对于三角形:

11、三维对象包括三维空间中曲线、三维空间中的曲面和Volumetric object实体对象。现有图形硬件软件非常适合这些三维对象,一般用对象的面来描述它,并认为是中空的;由平面凸多边形来逼近;用三维空间的一系列顶点来确定。这样,问题就转换为了如何表示点、边、多边形。

相关推荐
工藤学编程1 小时前
零基础学AI大模型之LangChain智能体之initialize_agent开发实战
人工智能·langchain
king王一帅2 小时前
Incremark Solid 版本上线:Vue/React/Svelte/Solid 四大框架,统一体验
前端·javascript·人工智能
泰迪智能科技4 小时前
分享|职业技术培训|数字技术应用工程师快问快答
人工智能
Dxy12393102166 小时前
如何给AI提问:让机器高效理解你的需求
人工智能
少林码僧6 小时前
2.31 机器学习神器项目实战:如何在真实项目中应用XGBoost等算法
人工智能·python·算法·机器学习·ai·数据挖掘
钱彬 (Qian Bin)6 小时前
项目实践15—全球证件智能识别系统(切换为Qwen3-VL-8B-Instruct图文多模态大模型)
人工智能·算法·机器学习·多模态·全球证件识别
没学上了6 小时前
CNNMNIST
人工智能·深度学习
宝贝儿好6 小时前
【强化学习】第六章:无模型控制:在轨MC控制、在轨时序差分学习(Sarsa)、离轨学习(Q-learning)
人工智能·python·深度学习·学习·机器学习·机器人
智驱力人工智能7 小时前
守护流动的规则 基于视觉分析的穿越导流线区检测技术工程实践 交通路口导流区穿越实时预警技术 智慧交通部署指南
人工智能·opencv·安全·目标检测·计算机视觉·cnn·边缘计算
AI产品备案7 小时前
生成式人工智能大模型备案制度与发展要求
人工智能·深度学习·大模型备案·算法备案·大模型登记