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

计算机图形学·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实体对象。现有图形硬件软件非常适合这些三维对象,一般用对象的面来描述它,并认为是中空的;由平面凸多边形来逼近;用三维空间的一系列顶点来确定。这样,问题就转换为了如何表示点、边、多边形。

http://www.dtcms.com/a/577312.html

相关文章:

  • 基于MATLAB的梯度下降法实现
  • dw制作简单网站模板下载网站建设工作会议讲话
  • 如何优化多表查询sql?
  • 64QAM信号的数字预失真处理(MATLAB实现)
  • 网站模板下载之后如何修改公司官网怎么设计
  • 崇信县门户网站留言首页杭州做商务网站
  • 只出现一次的数字 II(二)
  • Linux系统编程:(六)深入理解 Linux 软件包管理器——从原理到 yum 实战全攻略
  • NoSql数据库概念
  • OCR 新范式!DeepSeek 以「视觉压缩」替代传统字符识别;Bald Classification数据集助力高精度人像分类
  • jQuery 入门学习教程,从入门到精通,AJAX在jQuery中的应用 —— 详细知识点与实战案例(14)
  • seo优化标签北京seo百度推广
  • joomla 网站模板.net 手机网站源码下载
  • PL27A1旺玖5Gbps USB 3.0主机到主机桥接控制芯片,超高速USB3.0数据对拷线双机跨屏共享文件和数据的USB对拷芯片
  • 理解预处理器(Sass/Less)
  • Java_LinkedHashSet源码分析
  • 基于大数据的信贷风险评估的数据可视化分析与预测系统
  • 《算法通关指南:数据结构和算法篇 --- 栈相关算法题》--- 1.括号序列
  • 网站设计的基本流程是什么苏州高端模板建站
  • Web认证
  • 电子商务网站建设与推广实务江门市智企互联网站建设
  • Access自定义导出HTML报表
  • 【C++ 5 种类型转换深度对比与实践指南】
  • Kubernetes Service 详解:服务暴露与流量管理全指南
  • HTML onclick用法
  • 如何理解HTML语义化
  • 【JVM】Java为啥能跨平台?JDK/JRE/JVM的关系?
  • 数据存储新势力:Doris如何挑战ClickHouse的霸主地位?
  • Vmware中主机ip a没有ip地址
  • 在 VSCode 中:如何主动生成c_cpp_properties.json文件