news 2026/6/15 17:45:58

计算机图形学(一)|向量

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
计算机图形学(一)|向量

计算机图形学是一门计算机的学科,同时也是一门数学的学科,涉及到大量的数学变换的知识。比如描述空间位置与位移,方向判断与几何计算,构建坐标系与空间变换等数学变换,这些都离不开一个基础的数学概念,那就是向量。那么什么是向量呢?下面我们将对向量及其基础运算进行介绍~

向量

向量是具有大小也有方向的数学量,它不依赖于具体的位置,只描述相对的位移或朝向。它的示意图如下所示

上图是一个二维向量的示意图,它表示的是平面上一点A指向B的向量,可以用有序数对表示

$\vec{a}$ = (x,y)

其中,x 是 x 轴方向上的投影分量, y 是 y 轴方向上的投影分量

注:$x = x_2 - x_1 ,y = y_2 - y_1$

除了二维向量之外还有三维向量,如图所示:

图上表示在一个三维空间中A点向B点的向量,可以用有序三元组表示:

$\vec{a}$ = (x,y,z)

其中, x 是 x 轴方向上的投影分量,y 是 y 轴方向上的投影分量, z 是 z 轴方向上的投影分量

注:$x = x_2 - x_1 ,y = y_2 - y_1, z = z_2 - z_1$

那么怎么计算向量的大小和确认它的方向呢?

向量的大小

向量的模

向量的大小,也称向量的模,即向量的长度,记为||a⃗\vec{a}a||

如果是二维向量,||a⃗\vec{a}a||的计算公式为:

||a⃗\vec{a}a|| =(x2−x1)2+(y2−y1)2\sqrt{(x_2 - x_1)^2 + (y_2 - y_1)^2}(x2x1)2+(y2y1)2


如图所示,向量 w 和向量 v 的大小相等,方向相同,所以它们是相等的向量

如果是三维向量,那么||a⃗\vec{a}a||的计算公式为:

∥a⃗∥=(x2−x1)2+(y2−y1)2+(z1−z2)2{\|\vec{a}\|=\sqrt{(x_2-x_1)^2 + (y_2 - y_1)^2 + (z_1 - z_2)^2}}a=(x2x1)2+(y2y1)2+(z1z2)2

单位向量

单位向量就是模为1的向量,用于纯粹表示方向,是通过归一化得到
a^=a⃗∥a⃗∥(a⃗为非零向量)\hat{a} = \frac{\vec{a}}{\|\vec{a}\|} \quad (\vec{a}\text{为非零向量})a^=aa(a为非零向量)

向量的方向

上面说到,向量既有大小,也有方向,那么什么是向量的方向呢?有两种种表述方法:分别是借助单位向量法用角度描述法

借助单位向量法

其通用表示方法是借助单位向量a^=a⃗∥a⃗∥\hat{a} = \frac{\vec{a}}{\|\vec{a}\|} \quada^=aa,单位向量的模为 1,其坐标就完全代表了原向量a⃗\vec{a}a的方向

为什么说$\hat{a}$就代表了向量的方向呢?

2D 向量 $\vec{a}$ =(3,4) ,模 $|\vec{a}|=5$ ,单位向量 $\hat{a}$ = (35,45\frac{3}{5},\frac{4}{5}53,54), 这个坐标就精准描述了 $\vec{a}$ 的方向

因为在常用的直角坐标系里,都有一组两两垂直的单位基向量,它们是描述所有方向的基本单位

比如 2D 向量 $\vec{a}$ =(x,y)可以写成:

$\vec{a}$ = x $\hat{i}$ + y $\hat{j}$

这里的 x 和 y,就是 $\vec{a}$ 在 x 轴和 y 轴上的投影分量,所以上面的 $\hat{a}$ = (35,45\frac{3}{5},\frac{4}{5}53,54)用投影分量表示:$\vec{a}$ = $\frac{3}{5}$ $\hat{i}$ + $\frac{4}{5}$ $\hat{j}$ ,意思是在x轴上的份量是 $\frac{3}{5}$ , 在y轴上的分量是 $\frac{4}{5}$

注:$\hat{i}$ 和 $\hat{j}$ 分别是x轴和y轴的单位向量,大小都是 1 ,分享分别平行于x轴和y

以上是二维平面的单位向量法表示方向的方法, 三维空间的表示方法又是什么样的呢?原理是相通的~三维单位向量法表示方向法的结论如下:

$\vec{a}$ = x $\hat{i}$ + y $\hat{j}$ + z $\hat{k}$

这里的这里的 x 、y 、z ,就是 $\vec{a}$ 在x轴、y轴和z轴上的投影分量

角度描述法

因为在平面直角坐标系中,可通过向量与坐标轴的夹角来表示方向最常用的是与 x 轴正方向的夹角 $\theta$

若 2D 向量 $\vec{a}=(x,y)$,则 $\theta$ 满足:

cos$\theta$ = $\frac{x}{|\vec{a}|}$

sin$\theta$ = $\frac{y}{|\vec{a}|}$

也可直接用反正切函数计算:

tan$\theta$ = $\frac{sin\theta}{cos\theta}$ , 所以

tan$\theta$ = $\frac{y}{x}$, 得出

$\theta$ = arctan ( $\frac{y}{x}$ )

同时需根据 x、y 的正负判断 $\theta$ 所在象限,那么就可以得出向量的方向了

示例如下:

向量 $\vec{a}$ =(1,1), $||\vec{a}||$ = $\sqrt{2}$,

cos$\theta$ = $\frac{\sqrt{2}}{2}$

所以 $\theta$ = 45°

即方向为与 x 轴正方向夹角 45°

以上是二维平面直角坐标系的通过向量与坐标轴的夹角来表示向量方向的方法

三维空间场景:方向余弦法

3D 空间中向量的方向需要两个角度来确定,常用的是方向余弦

设三维向量$\vec{a}$ = (x,y,z)

与 x、y、z 轴正方向的夹角分别为α\alphaα,β\betaβ,γ\gammaγ, 这三个角的余弦值就叫方向余弦,公式如下:

cosα\alphaα= $\frac{x}{||\vec{a}||}$

cosβ\betaβ= $\frac{y}{||\vec{a}||}$

cosγ\gammaγ= $\frac{z}{||\vec{a}||}$

三个方向余弦满足关系:

cos⁡2α+cos⁡2β+cos⁡2γ=1\cos^2\alpha + \cos^2\beta + \cos^2\gamma = 1cos2α+cos2β+cos2γ=1

向量的运算

通过上述讲解我们已经初步了解向量的大小和方向的基本知识,下面我们基于这些向量的特性进行向量的运算

向量的运算包括线性运算和乘法运算

线性运算

线性运算加法运算,减法运算和乘法运算

加法运算

加法运算满足三角形法则或平行四边形法则,坐标形式下对应分量相加

如:$\vec{a}$=(x1,y1) , $\vec{b}$=(x2,y2), 那么

$\vec{a}$ + $\vec{b}$ = (x1+x2,y1+y2)

减法运算

减法运算等价于加上相反的向量 ,即

$\vec{a}$ - $\vec{b}$ = $\vec{a}$ + (- $\vec{b}$) = (x1-x2,y1-y2)

数乘运算

数乘运算是一个实数 k 与向量 $\vec{a}$ 相乘

模长变为∣k∣· $|\vec{a}|$ ,当k大于0时,方向不变;当k小于0时,方向相反

$\vec{a}$ = (x,y), k · $\vec{a}$ = (k · x1,k · x2)

乘法运算

线性运算是相对直观的运算,乘法运算就不是那么线性了(简单);

乘法运算包括数量积向量积混合积

数量积

数量积运算也叫点积运算,其示意图如下所示:

$\vec{a}$ · $\vec{b}$ = $|\vec{a}|$ $|\vec{b}|$ $cos\theta$

运算结果是标量,可以可用于判断两个向量是否垂直,因为如果 $\vec{a}$ 与 $\vec{b}$ 的大小不为0,那么只有 $cos\theta$ = 0;那么 $\theta$ = 90° , 则 $\vec{a}$ ⊥ $\vec{b}$

$\vec{a}$ · $\vec{b}$ = 0 ,则 $\vec{a}$ ⊥ $\vec{b}$

向量积

向量积也叫叉积,仅适用于三维向量,表示为 $\vec{a}$ × $\vec{b}$ ,主要用来求 $\vec{a}$ 和 $\vec{b}$ 所确定的平面的法向量

$\vec{a}$ × $\vec{b}$ 的结果是向量,模长是 $|\vec{a}|$ $|\vec{b}|$ $sin\theta$

其方向垂直于 $\vec{a}$ 和 $\vec{b}$ 所确定的平面, 并且遵循右手定则

混合积

混合积就是点积和叉积相混合的运算,比如三维向量的( $\vec{a}$ × $\vec{b}$ )· $\vec{c}$ ,其几何意义是对应平行六面体的体积,这里我们只是稍作了解~

总结

本文主要简述了向量的基本知识,主要在向量的基本属性和向量的运算两方面展开,向量的基本属性包括向量的大小方向;向量的运算则包括线性运算乘法运算,线性运算主要是加法减法数乘运算,乘法运算则分为点积叉积还有混合积,其中点积是用来判断向量是否垂直,叉积是来求法向量

以上就是本文的内容,非常感谢您能花出宝贵的时间观看,如果对您有帮助的话,欢迎点赞收藏~ 如果本文存在不足之处甚至错误的地方欢迎大家在评论区多多批评指出~我随后改正

参考来源:

  1. 《GAMES101: 现代计算机图形学入门(闫令琪)》
  2. learnOpenGL
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 11:02:45

第四范式决策系统说明:HeyGem生成AI建模过程可视化内容

HeyGem数字人视频生成系统技术解析 在AIGC浪潮席卷内容创作领域的今天,数字人已不再是影视特效工作室的专属产物。随着深度学习模型的不断演进,越来越多轻量级、本地化部署的AI工具开始进入普通创作者的视野。其中,由开发者“科哥”基于开源…

作者头像 李华
网站建设 2026/6/15 11:02:47

锤子科技情怀回归:用HeyGem重现罗永浩式发布会风格

锤子科技情怀回归:用HeyGem重现罗永浩式发布会风格 在智能内容生产正加速重构传播方式的今天,一种“既熟悉又新鲜”的技术实践悄然兴起——有人开始用AI数字人系统,复刻十年前锤子科技发布会上那种极具辨识度的演讲风格:冷静克制的…

作者头像 李华
网站建设 2026/6/15 11:08:13

混沌工程实战:如何在K8s中注入网络延迟测试微服务韧性

一、混沌工程与微服务韧性测试的核心逻辑 1.1 为什么网络延迟是微服务的“致命慢性病” 在微服务架构中,网络延迟如同血管中的栓塞: 雪崩效应:单个服务50ms延迟经10次调用可放大至500ms(如图1) 隐性依赖暴露&#x…

作者头像 李华
网站建设 2026/6/15 11:06:00

自动驾驶激光雷达检测:两种算法源码实现及解析

自动驾驶 激光雷达检测 ,带有两种激光雷达检测算法的具体源码实现,大家可以从代码中学习这两种算法工作的原理也可以直接移植到大家各自的项目中进行使用。 本商品代码带有注释,同时也提供了可运行的数据包进行验证测试,及详细的安…

作者头像 李华
网站建设 2026/6/15 12:00:44

新智元公众号推文洽谈:覆盖人工智能领域决策人群

HeyGem 数字人视频生成系统技术解析:AI驱动的批量口型同步视频合成 在短视频与自动化内容爆发的时代,企业每天都在为如何高效生产高质量讲解视频而头疼。传统的拍摄剪辑流程不仅耗时耗力,还难以保证风格统一;而外包制作又成本高昂…

作者头像 李华