图形学原理【1】

文章目录

  • 齐次坐标系
    • 齐次坐标系与坐标变换矩阵
      • 一、齐次坐标系
      • 二、坐标变换矩阵
      • 总结
    • 齐次坐标的线性变换
      • 一、齐次坐标表示
      • 二、线性变换矩阵
      • 三、常见的线性变换
      • 四、线性变换的应用
      • 五、总结
    • 齐次坐标的线性变换计算和例题
      • 一、齐次坐标的线性变换性质
      • 二、齐次坐标的线性变换计算
      • 三、例子
      • 四、例题
  • 参考文献

齐次坐标系

齐次坐标系与坐标变换矩阵

是计算机图形学、机器人学及自动驾驶等领域中非常重要的概念。以下是对这两个概念的详细解释:

一、齐次坐标系

齐次坐标系(Homogeneous Coordinates)是一个用于投影几何里的坐标系统,它使用n+1维向量来表示n维向量或点。这种表示方法具有许多优点,如能够统一平移、旋转和缩放等几何变换的矩阵表示,以及能够表示无穷远点等。

在二维空间中,一个点(x, y)的齐次坐标可以表示为(x’, y’, w),其中w通常设为1,此时(x’, y’)与(x, y)等价,即x’ = x/w, y’ = y/w。在三维空间中,一个点(x, y, z)的齐次坐标则表示为(x’, y’, z’, w)。

齐次坐标的一个重要性质是,对于同一个点或向量,其齐次坐标不是唯一的。具体来说,如果(x’, y’, z’, w)是一个点的齐次坐标,那么对于任意非零实数k,(kx’, ky’, kz’, kw)也是该点的齐次坐标。这一性质使得齐次坐标在处理几何变换时具有很大的灵活性。

二、坐标变换矩阵

坐标变换矩阵是描述空间点或向量从一个坐标系变换到另一个坐标系的数学工具。在齐次坐标系下,平移、旋转和缩放等几何变换都可以表示为矩阵与向量的乘法运算。

  1. 平移变换矩阵

    平移变换矩阵用于描述点或向量在空间中沿某一方向移动一定距离的操作。在二维空间中,一个点(x, y)沿x轴平移Δx,沿y轴平移Δy后,其齐次坐标变换矩阵为:

[ 1 0 Δ x 0 1 Δ y 0 0 1 ] \begin{bmatrix} 1 & 0 & \Delta x \\ 0 & 1 & \Delta y \\ 0 & 0 & 1 \end{bmatrix} 100010ΔxΔy1

在三维空间中,平移变换矩阵类似,只是增加了一个维度。
  1. 旋转变换矩阵

    旋转变换矩阵用于描述点或向量绕某一坐标轴旋转一定角度的操作。在二维空间中,绕原点逆时针旋转θ角度的旋转变换矩阵为:

[ cos ⁡ θ − sin ⁡ θ 0 sin ⁡ θ cos ⁡ θ 0 0 0 1 ] \begin{bmatrix} \cos \theta & -\sin \theta & 0 \\ \sin \theta & \cos \theta & 0 \\ 0 & 0 & 1 \end{bmatrix} cosθsinθ0sinθcosθ0001

在三维空间中,绕x轴、y轴或z轴旋转的旋转变换矩阵有所不同,但都可以类似地表示。
  1. 缩放变换矩阵

    缩放变换矩阵用于描述点或向量在空间中沿某一方向或各方向按比例放大的操作。在二维空间中,一个点(x, y)沿x轴缩放sx倍,沿y轴缩放sy倍后,其齐次坐标变换矩阵为:

[ s x 0 0 0 s y 0 0 0 1 ] \begin{bmatrix} s_x & 0 & 0 \\ 0 & s_y & 0 \\ 0 & 0 & 1 \end{bmatrix} sx000sy0001

在三维空间中,缩放变换矩阵类似,只是增加了一个维度。

总结

齐次坐标系和坐标变换矩阵是计算机图形学、机器人学及自动驾驶等领域中处理几何变换的重要工具。通过引入齐次坐标,可以统一平移、旋转和缩放等几何变换的矩阵表示,使得这些变换的计算更加简单和高效。同时,齐次坐标还具有表示无穷远点等独特优点,使得它在处理复杂几何问题时具有更大的灵活性和通用性。

齐次坐标的线性变换

是计算机图形学、机器人学、计算机视觉等领域中非常重要的概念。齐次坐标通过将原本的n维向量扩展为n+1维向量,使得平移、旋转、缩放等几何变换可以统一为矩阵乘法运算,大大简化了计算过程。以下是对齐次坐标线性变换的详细解释:

一、齐次坐标表示

在二维空间中,一个点(x, y)的齐次坐标可以表示为(x’, y’, w),其中w通常设为1(表示一个点),此时x’ = x/w, y’ = y/w。类似地,在三维空间中,一个点(x, y, z)的齐次坐标则表示为(x’, y’, z’, w),其中w=1。

二、线性变换矩阵

线性变换是指满足线性性和齐次性的变换,它可以用矩阵乘法来表示。在齐次坐标系下,线性变换矩阵通常是一个n+1维的方阵(对于n维空间),其中最后一行通常为(0, 0, …, 0, 1),用于保持齐次坐标的w分量不变。

三、常见的线性变换

  1. 缩放(Scaling)

    • 二维空间中的缩放变换矩阵可以表示为:
      [ s x 0 0 0 s y 0 0 0 1 ] \begin{bmatrix} s_x & 0 & 0 \\ 0 & s_y & 0 \\ 0 & 0 & 1 \end{bmatrix} sx000sy0001
      其中, s x s_x sx s y s_y sy 分别是x轴和y轴方向的缩放因子。
    • 三维空间中的缩放变换矩阵类似,只需增加第三个缩放因子。
  2. 旋转(Rotation)

    • 二维空间中的旋转(绕原点)变换矩阵可以表示为:
      [ cos ⁡ θ − sin ⁡ θ 0 sin ⁡ θ cos ⁡ θ 0 0 0 1 ] \begin{bmatrix} \cos \theta & -\sin \theta & 0 \\ \sin \theta & \cos \theta & 0 \\ 0 & 0 & 1 \end{bmatrix} cosθsinθ0sinθcosθ0001
      其中, θ \theta θ 是旋转角度。
    • 三维空间中的旋转变换矩阵更复杂,因为需要指定旋转轴。常见的绕x轴、y轴或z轴的旋转变换矩阵可以分别表示。
  3. 错切(Shear)

    • 错切变换是一种特殊的线性变换,它使图形在某一方向上发生倾斜,而在另一方向上保持不变。错切变换矩阵的具体形式取决于错切的方向和程度。

四、线性变换的应用

齐次坐标的线性变换在计算机图形学中有着广泛的应用,例如:

  • 图形变换:通过矩阵乘法,可以方便地对图形进行平移、旋转、缩放等变换。
  • 相机模型:在三维计算机图形学中,相机模型通常通过一系列的线性变换(包括旋转、平移等)来描述从世界坐标系到相机坐标系的转换过程。
  • 光照和阴影计算:在某些光照和阴影计算模型中,也需要使用到齐次坐标和线性变换矩阵来表示光线的传播和反射等过程。

五、总结

齐次坐标的线性变换是计算机图形学等领域中处理几何变换的重要工具。通过引入齐次坐标和线性变换矩阵的概念,可以方便地对图形进行平移、旋转、缩放等变换,并且这些变换可以通过矩阵乘法来统一表示和计算。

齐次坐标的线性变换计算和例题

一、齐次坐标的线性变换性质

齐次坐标在线性变换中扮演着重要角色,它允许将线性变换(如缩放、旋转、错切等)以及平移变换统一为矩阵乘法形式,从而简化了变换的计算过程。具体来说,齐次坐标的线性变换性质包括以下几点:

  1. 统一性:通过引入齐次坐标,可以将二维或三维空间中的点、向量以及它们之间的线性变换和平移变换统一表示为矩阵乘法形式。
  2. 灵活性:齐次坐标表示法使得变换过程更加灵活,可以轻松地组合不同的变换(如先旋转后平移),而无需改变变换的本质。
  3. 计算简便性:在齐次坐标下,变换矩阵的运算变得更加直观和简便,有利于计算机图形学、机器人学等领域的应用。

二、齐次坐标的线性变换计算

在齐次坐标下,线性变换的计算过程通常涉及以下几个步骤:

  1. 构造变换矩阵:根据所需的变换类型(如缩放、旋转、平移等),构造相应的变换矩阵。
  2. 表示点或向量:将待变换的点或向量表示为齐次坐标形式。对于二维点,通常表示为(x, y, 1);对于二维向量,由于向量平移不变,通常表示为(x, y, 0)。
  3. 执行矩阵乘法:将变换矩阵与表示点或向量的齐次坐标相乘,得到变换后的齐次坐标。
  4. 归一化处理:对于点变换后的齐次坐标,如果w分量不为1,则需要进行归一化处理,即将x、y分量分别除以w分量,以得到变换后的欧式坐标。

三、例子

以下是一个二维空间中的旋转变换例子:

例子:假设有一个二维点P(x, y),现需要将其绕原点逆时针旋转θ度。

步骤

  1. 构造旋转变换矩阵
    R ( θ ) = [ cos ⁡ θ − sin ⁡ θ 0 sin ⁡ θ cos ⁡ θ 0 0 0 1 ] R(\theta) = \begin{bmatrix} \cos\theta & -\sin\theta & 0 \\ \sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{bmatrix} R(θ)= cosθsinθ0sinθcosθ0001

  2. 表示点P为齐次坐标

P = [ x y 1 ] P = \begin{bmatrix} x \\ y \\ 1 \end{bmatrix} P= xy1

  1. 执行矩阵乘法

P ′ = R ( θ ) ⋅ P = [ cos ⁡ θ − sin ⁡ θ 0 sin ⁡ θ cos ⁡ θ 0 0 0 1 ] [ x y 1 ] = [ x cos ⁡ θ − y sin ⁡ θ x sin ⁡ θ + y cos ⁡ θ 1 ] P' = R(\theta) \cdot P = \begin{bmatrix} \cos\theta & -\sin\theta & 0 \\ \sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ 1 \end{bmatrix} = \begin{bmatrix} x\cos\theta - y\sin\theta \\ x\sin\theta + y\cos\theta \\ 1 \end{bmatrix} P=R(θ)P= cosθsinθ0sinθcosθ0001 xy1 = xcosθysinθxsinθ+ycosθ1

  1. 归一化处理(在此例中,由于w分量仍为1,无需进行):

P ′ = [ x cos ⁡ θ − y sin ⁡ θ x sin ⁡ θ + y cos ⁡ θ 1 ] P' = \begin{bmatrix} x\cos\theta - y\sin\theta \\ x\sin\theta + y\cos\theta \\ 1 \end{bmatrix} P= xcosθysinθxsinθ+ycosθ1

因此,点P绕原点逆时针旋转θ度后的新坐标为 x cos ⁡ θ − y sin ⁡ θ , x sin ⁡ θ + y cos ⁡ θ x\cos\theta - y\sin\theta, x\sin\theta + y\cos\theta xcosθysinθ,xsinθ+ycosθ

四、例题

例题:已知二维点A(2, 3),现需要将其先沿x轴方向平移1个单位,再绕新位置逆时针旋转45度。求变换后的点A’的坐标。

解答

  1. 沿x轴方向平移1个单位

    构造平移变换矩阵:

T x = [ 1 0 1 0 1 0 0 0 1 ] T_x = \begin{bmatrix} 1 & 0 & 1 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix} Tx= 100010101

执行矩阵乘法:

A 1 = T x ⋅ A = [ 1 0 1 0 1 0 0 0 1 ] [ 2 3 1 ] = [ 3 3 1 ] A_1 = T_x \cdot A = \begin{bmatrix} 1 & 0 & 1 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} 2 \\ 3 \\ 1 \end{bmatrix} = \begin{bmatrix} 3 \\ 3 \\ 1 \end{bmatrix} A1=TxA= 100010101 231 = 331

  1. 绕新位置逆时针旋转45度

    构造旋转变换矩阵(θ=45度):

R ( 4 5 ∘ ) = [ cos ⁡ 4 5 ∘ − sin ⁡ 4 5 ∘ 0 sin ⁡ 4 5 ∘ cos ⁡ 4 5 ∘ 0 0 0 1 ] = [ 2 2 − 2 2 0 2 2 2 2 0 0 0 1 ] R(45^\circ) = \begin{bmatrix} \cos 45^\circ & -\sin 45^\circ & 0 \\ \sin 45^\circ & \cos 45^\circ & 0 \\ 0 & 0 & 1 \end{bmatrix} = \begin{bmatrix} \frac{\sqrt{2}}{2} & -\frac{\sqrt{2}}{2} & 0 \\ \frac{\sqrt{2}}{2} & \frac{\sqrt{2}}{2} & 0 \\ 0 & 0 & 1 \end{bmatrix} R(45)= cos45sin450sin45cos450001 = 22 22 022 22 0001

执行矩阵乘法:

A ′ = R ( 4 5 ∘ ) ⋅ A 1 = [ 2 2 − 2 2 0 2 2 2 2 0 0 0 1 ] [ 3 3 1 ] = [ 3 2 − 3 2 / 2 3 2 + 3 2 / 2 1 ] = [ 3 2 / 2 3 2 + 3 2 / 2 1 ] A' = R(45^\circ) \cdot A_1 = \begin{bmatrix} \frac{\sqrt{2}}{2} & -\frac{\sqrt{2}}{2} & 0 \\ \frac{\sqrt{2}}{2} & \frac{\sqrt{2}}{2} & 0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} 3 \\ 3 \\ 1 \end{bmatrix} = \begin{bmatrix} 3\sqrt{2} - 3\sqrt{2}/2 \\ 3\sqrt{2} + 3\sqrt{2}/2 \\ 1 \end{bmatrix} = \begin{bmatrix} 3\sqrt{2}/2 \\ 3\sqrt{2} + 3\sqrt{2}/2 \\ 1 \end{bmatrix} A=R(45)A1= 22 22 022 22 0001 331 = 32 32 /232 +32 /21 = 32 /232 +32 /21

归一化处理(实际上在这个例子中w分量仍为1,无需进行):

A ′ = [ 3 2 / 2 3 ( 1 + 1 / 2 ) 1 ] A' = \begin{bmatrix} 3\sqrt{2}/2 \\ 3(1 + 1/\sqrt{2}) \\ 1 \end{bmatrix} A= 32 /23(1+1/2 )1

因此,点A’的坐标为( 3 2 / 2 3\sqrt{2}/2 32 /2, 3 ( 1 + 1 / 2 ) 3(1 + 1/\sqrt{2}) 3(1+1/2 ))。注意,这里为了简化计算,旋转矩阵中的 cos ⁡ 4 5 ∘ \cos 45^\circ cos45 sin ⁡ 4 5 ∘ \sin 45^\circ sin45直接用它们的值 2 / 2 \sqrt{2}/2 2 /2代替了。在实际应用中,可能需要使用更精确的值或进行近似计算。

参考文献

  1. 文心一言自动生成

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

从数据仓库到数据中台再到数据飞轮:我了解的数据技术进化史

这里写目录标题 前言数据仓库:数据整合的起点数据中台:数据共享的桥梁数据飞轮:业务与数据的双向驱动结语 前言 在当今这个数据驱动的时代,企业发展离不开对数据的深度挖掘和高效利用。从最初的数据仓库,到后来的数据…

828华为云征文|华为Flexus云服务器搭建Cloudreve私人网盘

一、华为云 Flexus X 实例:开启高效云服务新篇🌟 在云计算的广阔领域中,资源的灵活配置与卓越性能犹如璀璨星辰般闪耀。华为云 Flexus X 实例恰似一颗最为耀眼的新星,将云服务器技术推向了崭新的高度。 华为云 Flexus X 实例基于…

使用SpringCloud构建可伸缩的微服务架构

Spring Cloud是一个用于构建分布式系统的开源框架。它基于Spring Boot构建,并提供了一系列的工具和组件,用于简化开发分布式系统的难度。Spring Cloud可以帮助开发人员快速构建可伸缩的微服务架构。 要使用Spring Cloud构建可伸缩的微服务架构&#xff0…

对接阿里asr和Azure asr

1&#xff1a;对接阿里asr 1.1&#xff1a;pom <dependency><groupId>com.alibaba.nls</groupId><artifactId>nls-sdk-recognizer</artifactId><version>2.2.1</version> </dependency>1.2&#xff1a;生成token package c…

C++之STL—vector容器基础篇

头文件 #include <vector> //vector容器 #include <algorithm> //算法 基本用法&&概念 vector<int> v; v.push_back(10); vector<int >::iterator v.begin(); v.end(); 三种遍历方式 #include <vector> #include <algorithm>…

基于区块链的相亲交易系统源码解析

随着区块链技术的成熟与发展&#xff0c;其去中心化、不可篡改的特性逐渐被应用于各行各业。特别是在婚恋市场中&#xff0c;区块链技术的应用为相亲平台带来了新的可能性 。本文将探讨如何利用区块链技术构建一个透明、高效的相亲交易系统&#xff0c;并提供部分源码示例。 区…

大模型的实践应用30-大模型训练和推理中分布式核心技术的应用

大家好,我是微学AI,今天给大家介绍一下大模型的实践应用30-大模型训练和推理中分布式核心技术的应用。本文深入探讨了大模型训练和推理中分布式核心技术的应用。首先介绍了项目背景,阐述了大模型发展对高效技术的需求。接着详细讲解了分布式技术的原理,包括数据并行、模型并…

数据转换器——佛朗哥Chater2

【注:本文基于《数据转换器》一书进行学习、总结编撰,适合新手小白进行学习】 目录 2.1 数据转换器类别 2.2 工作条件 2.3 转换器性能参数 2.3.1 基本特性参数 2.4 静态性能参数 2.5 动态性能参数 2.6 数字和开关性能参数 2.1 数据转换器类别 转换器类型可以被分为两…

英飞凌TC3xx -- Bootstrap Loader分析

目录 1.Bootstrap Loaders作用 2.CAN BSL详解 2.1 CAN BSL的时钟系统 2.2 CAN BSL流程 3.小结 英飞凌TC3xx的Platform Firmware章节里&#xff0c;提供了多种启动模式&#xff1a; Internal start from Flash&#xff1a;b111Alternate Boot Mode&#xff1a;b110Generic …

杀软对抗 ---> Perfect Syscall??

好久没更了&#xff0c;今天想起来更新了&#x1f60b;&#x1f60b;&#x1f60b;&#x1f60b; 目录 1.AV && EDR 2.Perfect Syscall&#xff1f;&#xff1f; 3.Truly Perfect ??? 在开始之前先来展示一下这次的免杀效果 1.AV && EDR 360 天擎EDR …

[c++进阶(九)] STL之deque深度剖析

1.前言 本章重点 本章将会着重的介绍deque底层到底是如何实现它能够双向进出的&#xff0c;并且双向进出的消耗率还特别低&#xff0c;并且讲解deque的优缺点。 2.deque的使用 如果没有看我前面两篇文章的&#xff0c;请先看前面两篇文章再来看这篇文章&#xff0c;可以有助于…

手写Spring第三篇,原来Spring容器是使用反射来初始化对象的

上次是不是你小子和大家说你拿来做登记的样品被我收了&#xff0c;然后取豆子的时候就是这个样品的&#xff1f; 今天我来辟一下谣&#xff0c;真的是这样的。这小子的样品确实被我收了&#xff0c;不过这小子没给真东西给我&#xff0c;只给了一个指针&#xff0c;害我宝贝得存…

Git rebase 的使用(结合图与案例)

目录 Git rebase 的使用Git rebase 概念Git rebase 原理rebase和merge的选择 Git rebase 的使用 在 Git 中整合来自不同分支的修改主要有两种方法&#xff1a;merge 以及 rebase Git rebase 概念 **rebase概念&#xff1a;**用来重新应用提交&#xff08;commits&#xff09…

Llama 3.1 技术研究报告-1

llama3模型 现代⼈⼯智能&#xff08;AI&#xff09;系统由基础模型驱动。本⽂介绍了⼀组新的基础模型&#xff0c;称为Llama 3。它是⼀个语⾔模型群&#xff0c;原⽣⽀持多语⾔性、编码、推理和⼯具使⽤。我们最⼤的模型是⼀个密集变换器&#xff0c;有 405B个参数&#xff0…

oracle 插入date日期类型的数据、插入从表中查出的数据,使用表中的默认数据

date sysdate to_date 插入从表中查出的数据 方式一 方式二 或者指定列名称 下边这个案例的前提是指定列插入&#xff0c;如果不指定&#xff0c;则也是默认的

消息中间件---Kafka

一、什么是Kafka&#xff1f; Kafka是一个分布式流处理平台,类似于消息队列或企业消息传递系统&#xff1b; 流处理事什么呢&#xff1f; 流处理就是数据处理工作流&#xff0c;本质上是一种计算机编程范例。流处理是对接收到的新数据事件的连续处理。‌它涉及对从生产者到消…

HTML+CSS学习笔记

目录 HTML 1.开发环境 2.创建HTML文件 3.HTML元素 3.1HTML文件结构 3.2HTML标签 3.3HTML属性​编辑​编辑 3.4HTML区块 3.4.1块元素 3.4.2行内元素 3.5HTML表单 CSS 1.CSS简介 2.CSS语法​编辑 3.CSS三种导入方式 内联样式 内部样式 外部样式 4.选择器​ 5.C…

9月23日

思维导图 作业 统计家目录下.c文件的个数 #!/bin/bashnum0for file in ~/*.c; doif [ -f "$file" ]; then((num))fi doneecho "家目录下.c文件的个数: $num"

本周宣讲提醒-线上专场——香港科技大学工学院2025/2026年度硕士研究生(MSc)项目招生宣讲会

&#x1f4c6;本周宣讲提醒-线上专场 &#x1f514;香港科技大学工学院2025/2026年度硕士研究生&#xff08;MSc&#xff09;项目招生宣讲会 &#x1f4cd;香港科技大学工学院大挑战研究暨研究生课程信息网络研讨会-线上专场 &#x1f559;时间&#xff1a;2024年9月24日&…

python爬虫中json和xml字符串的xPath和jsonpath过滤语法区别对比

参考博客 两种语法结构作用 为了处理从网络请求返回的网页源码中得到自己想要的数据 首先了解两种库处理的对象语法 jsonpath处理的是json语法格式的字符串 **json&#xff08;JavaScript Object Notation&#xff09;**字符串的语法参考 **类似于下面的格式&#xff0c;以…