计算机图形学 | 变换与观察

news2025/2/26 19:07:42

计算机图形学 | 变换与观察

  • 计算机图形学 | 变换与观察
    • 6.1 神奇的齐次坐标
      • 回顾几何阶段
      • 几何变换
        • 平移
        • 比例
        • 旋转
        • 对称
        • 错切
      • 齐次坐标的引入
        • 齐次坐标的概念和相关问题
        • 基于齐次坐标的变换
    • 6.2 三维模型,动起来!
      • 基本三维变换
        • 平移
        • 比例
        • 旋转
        • 对称
        • 错切
        • 整体比例变换
      • 逆变换
        • 平移的逆变换
        • 比例变换的逆变换
        • 旋转变换的逆变换
      • 复合变换
        • 相对于任一参考点的变换
        • 绕任意轴的三维旋转变换
    • 6.3 观察者也能动
      • 绕任意轴的三维旋转变换
      • 观察变换
      • 模型变换与观察变换

华中科技大学《计算机图形学》课程

MOOC地址:计算机图形学(HUST)

计算机图形学 | 变换与观察

6.1 神奇的齐次坐标

回顾几何阶段

整体流程:

在这里插入图片描述

这其中存在3种变换:

  • 坐标系的变换
  • 模型本身的运动
  • 观察者的运动

几何变换

以上各种变换都可以通过以下变换的复合来计算:

  • 平移
  • 比例
  • 旋转
  • 对称
  • 错切

图形的几何变换是指对图形的几何信息经过平移、比例、旋转等变换后产生新的图形。

下面以二维为例,讲解各个变换。

平移

指将p点沿直线路径从一个坐标位置移到另一个坐标位置的重定位过程,是一种不产生变形而移动物体的刚体变换(rigid-body transformation)。

在这里插入图片描述

比例

对p点相对于坐标原点沿x方向放缩Sx倍,沿y方向放缩Sy倍。其中Sx和Sy称为比例系数。

在这里插入图片描述

旋转

将p点绕坐标原点转动θ角度(逆时针为正,顺时针为负)得到新的点p’的重定位过程。

在这里插入图片描述

对称

对称变换后的图形是原图形关于某一轴线或原点的镜像。

在这里插入图片描述

错切

也称为剪切、错位变换,用于产生弹性物体的变形处理。

在这里插入图片描述

总结:

在这里插入图片描述

齐次坐标的引入

齐次坐标的概念和相关问题

齐次坐标表示就是用n+1维向量表示一个n维向量。

以二维坐标系下点p(4,3)为例:齐次坐标表示为p(hx,hy,hz),具体可以为P(4,3,1), P(8,6,2)等等。

说明齐次坐标的不唯一性。

规范化齐次坐标表示就是h=1的齐次坐标表示。

规范化的方法:将每一维除以h。

以二维坐标系下点p(4,3)为例:齐次坐标表示为P(4,3,1), P(8,6,2)等等;其中,规范化齐次坐标表示P(4,3,1);

规范化:将P(8,6,2)规范化只需要对每一维除以h即可。即:P(8/2,6/2,2/2)得到P(4,3,1)。

基于齐次坐标的变换

全部统一为矩阵运算:

在这里插入图片描述

其中:
T1是对图形进行比例、旋转、对称、错切等变换;
T2是对图形进行平秱变换;
T3是对图形作投影变换;
T4则可以对图形作整体比例变换。

在这里插入图片描述

整体比例变换:

在这里插入图片描述

如果有多个点?如果变换多次呢?

  1. 几何变换均可表示成P’ = P ∙ T 的形式,其中P和P’可以有多行(有几个点对应几行);
    在这里插入图片描述

  2. 如果是多次变换,则T变成多次变换对应矩阵的乘积:
    在这里插入图片描述

6.2 三维模型,动起来!

基本三维变换

基本的三维变换包括:

  • 平移
  • 比例
  • 旋转
  • 对称
  • 错切

三维坐标(x,y,z)的齐次坐标表示(hx,hy,hz,h)。

以维坐标系下点p(4,3,2)为例:齐次坐标表示具体可以为P(4,3,2,1), P(8,6,4,2)等,规范化齐次坐标表示为P(4,3,2,1)。

基于三维齐次坐标的变换:

在这里插入图片描述
根据T3D在变换中所起的作用,可将T3D分成四个子矩阵:

T1:3×3阶子矩阵,作用是对点进行比例、对称、旋转、错切变换
T2:1×3阶子矩阵,作用是对点进行平移变换
T3:3×1阶子矩阵,作用是进行投影变换
T4:1×1阶子矩阵,作用是进行整体比例变换

平移

指将p点沿直线路径从一个坐标位置移到另一个坐标位置的重定位过程,是一种不产生变形而移动物体的刚体变换(rigid-body transformation)。

在这里插入图片描述

比例

对p点相对于坐标原点沿x方向放缩Sx倍,沿y方向放缩Sy倍,沿z方向放缩Sz倍。其中Sx、Sy和Sz称为比例系数。

在这里插入图片描述

旋转

将p点绕坐标轴转动θ角度得到新的点p’的重定位过程。

正方向如何确定?

按右手定则,规定逆时针为正,顺时针为负。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

对称

对称变换后的图形是原图形关于某一轴线、某一坐标平面或原点的镜像。

关于坐标平面:

在这里插入图片描述

关于坐标轴:

在这里插入图片描述

错切

也称为剪切、错位变换,用于产生弹性物体的变形处理。

在这里插入图片描述

假设有一个x方向上的错切则:x’=x+dy+gz。

整体比例变换

整体比例变换:对p点相对于坐标原点沿x方向放缩S倍。

在这里插入图片描述

逆变换

所谓逆变换即是与上述变换过程的相反的变换。

平移的逆变换

平移的逆变换就是反向平移,将平移后的点移回到原处。

其变换矩阵为:

在这里插入图片描述

比例变换的逆变换

比例变换的逆变换就是将比例因子取为倒数。

其变换矩阵为:

在这里插入图片描述

旋转变换的逆变换

旋转变换的逆变换就是反向旋转,也就是将旋转角度由θ改为- θ。

其变换矩阵为:

在这里插入图片描述

复合变换

三维复合变换是指图形作一次以上的变换,变换结果是每次变换矩阵相乘。

相对于任一参考点的变换

相对于参考点F(xf,yf,zf)作比例、旋转、错切等变换的过程分为以下三步:

  1. 将参考点F移至坐标原点
  2. 针对原点进行二维几何变换
  3. 进行反平移

在这里插入图片描述

绕任意轴的三维旋转变换

在这里插入图片描述

答案将在下一节给出。

6.3 观察者也能动

绕任意轴的三维旋转变换

假设已知空间有任意轴AB,A点的坐标为A(xA,yA,zA),AB的方向数为(a,b,c)。

现有空间一点p(x, y, z) ,绕AB轴逆时针旋转θ角后成为p’ (x’, y’, z’ ) ,若旋转变换矩阵为TRAB

则:[x’ y’ z’ 1] = [x y z 1] · TRAB

问题:如何求出TRAB

步骤:

  1. 把A点移动到坐标原点
  2. 把AB轴绕到某个坐标轴上
  3. 旋转
  4. 求1、2变换的逆变换,回到AB原来的位置

第一步:把A点移动到坐标原点

在这里插入图片描述

第二步:把AB轴绕到某个坐标轴上

在这里插入图片描述

绕x轴正转α角,将O’B’转动到XOZ平面上

在这里插入图片描述

绕y轴反转β角,将O’B’转动到z轴上

在这里插入图片描述

第三步:旋转

此时,AB轴与z‘轴重合,此时绕AB轴的旋转转换为绕z轴的旋转。

绕z轴旋转θ角的旋转变换矩阵为:

在这里插入图片描述

第四步:求1、2变换的逆变换,回到AB原来的位置

也就是求 TtA ,TRx ,TRy 的逆变换。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

总结:

在这里插入图片描述

观察变换

观察变换:从世界坐标系到观察坐标系的转换。

在这里插入图片描述

观察坐标系:

坐标原点:观察者所在的位置。

在这里插入图片描述

其中:

zv:视点和观察物体上焦点的连线
yv:向上的方向
xv:按照右手定则确定的方向

实际上求什么?

求世界坐标系中点Q(x,y,z)在观察坐标系中的坐标值。

观察变换的实现:

  1. 平移观察参考点到用户坐标系原点
    在这里插入图片描述
  2. 进行旋转变换分别让xv、yv和zv轴对应到用户坐标系中的x、y和z轴。
    在这里插入图片描述

模型变换与观察变换

观察变换的应用:场景漫游

模型变换不观察变换具有对偶性。但是由于场景中只有部分物体运动,所以效果不同。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《计算机网络——自顶向下方法》精炼——1.4到1.7

三更灯火五更鸡,努力学习永不止。无惧困难与挑战,砥砺前行向成功。 文章目录引言正文时延排队时延吞吐量协议层次,服务模型(重点)封装(重点)网络安全(选看)恶意软件的分类…

【数据分析与挖掘】数据预处理

目录概述一、数据清洗1.1 缺失值处理1.1.1 拉格朗日插值法1.1.2 牛顿插值法1.2 异常值处理二、数据集成2.1 实体识别2.2 冗余属性识别三、数据变换3.1 简单函数变换3.2 规范化3.3 连续属性离散化3.4 属性构造3.5 小波变换四、数据规约4.1 属性规约4.2 数值规约概述 数据挖掘过…

Spring Boot中使用Redis

目录 1.依赖 2.依赖关系 3.配置 4.RedisTemplate 5.基础操作 6.事务 1.依赖 maven依赖如下,需要说明的是,spring-boot-starter-data-redis里默认是使用lettuce作为redis客户端的驱动,但是lettuce其实用的比较少,我们常用的…

如何在 Web 实现支持虚拟背景的视频会议

前言 众所周知,市面上有比如飞书会议、腾讯会议等实现视频会议功能的应用,而且随着这几年大环境的影响,远程协作办公越来越成为常态,关于视频会议的应用也会越来越多,且在远程办公的沟通协作中对沟通软件的使用要求会…

ARMv8-A非对齐数据访问支持(Alignment support)

目录 1,对齐传输和非对齐传输 2,AArch32 Alignment support 2.1 Instruction alignment 指令对齐 2.2 Unaligned data access 非对齐数据访问 2.3 SCTLR.A Alignment check enable 3,AArch64 Alignment support 3.1 Instruction align…

Text to image论文精读GigaGAN: 生成对抗网络仍然是文本生成图像的可行选择

GigaGAN是Adobe和卡内基梅隆大学学者们提出的一种新的GAN架构,作者设计了一种新的GAN架构,推理速度、合成高分辨率、扩展性都极其有优势,其证明GAN仍然是文本生成图像的可行选择之一。 文章链接:https://arxiv.org/abs/2303.0551…

大数据周会-本周学习内容总结07

目录 01【hadoop】 1.1【编写集群分发脚本xsync】 1.2【集群部署规划】 1.3【Hadoop集群启停脚本】 02【HDFS】 2.1【HDFS的API操作】 03【MapReduce】 3.1【P077- WordCount案例】 3.2【P097-自定义分区案例】 历史总结 01【hadoop】 1.1【编写集群分发脚本xsync】…

【vue3】关于ref、toRef、toRefs那些事

😉博主:初映CY的前说(前端领域) 📒本文核心:ref、toRef、toRefs的使用方法 【前言】我们在上一节的学习当中,使用了reactive()函数将vue3中的数据变成响应式的数据,本文中所讲的三个方法也能实现将数据转化…

安全防御之IPsec VPN篇

目录 1.什么是数据认证,有什么用,有哪些实现的技术手段? 2.什么是身份认证,有什么用,有哪些实现的技术手段? 3.什么是VPN技术? 4.VPN技术有哪些分类? 5.IPsec技术能够提供哪些安…

走进小程序【八】微信小程序中使用【Vant组件库】

文章目录🌟前言🌟Vant介绍🌟Vant安装🌟npm 支持🌟使用Vant🌟引入组件🌟页面使用组件🌟样式覆盖🌟介绍🌟解除样式隔离🌟使用外部样式类&#x1f31…

基于冯洛伊曼拓扑的鲸鱼算法用于滚动轴承的故障诊断研究(Matlab代码实现)

👨‍🎓个人主页:研学社的博客💥💥💞💞欢迎来到本博客❤️❤️💥💥🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密…

【YOLO】YOLOv8实操:环境配置/自定义数据集准备/模型训练/预测

YOLOv8实操:环境配置/自定义数据集准备/模型训练/预测引言1 环境配置2 数据集准备3 模型训练4 模型预测引言 源码链接:https://github.com/ultralytics/ultralytics yolov8和yolov5是同一作者,相比yolov5,yolov8的集成性更好了&a…

C++面向对象丨1. 内存分区模型

Author:AXYZdong 硕士在读 工科男 有一点思考,有一点想法,有一点理性! 定个小小目标,努力成为习惯!在最美的年华遇见更好的自己! CSDNAXYZdong,CSDN首发,AXYZdong原创 唯…

图解NLP模型发展:从RNN到Transformer

图解NLP模型发展:从RNN到Transformer 自然语言处理 (NLP) 是深度学习中一个颇具挑战的问题,与图像识别和计算机视觉问题不同,自然语言本身没有良好的向量或矩阵结构,且原始单词的含义也不像像素值那么确定和容易表示。一般我们需…

【随笔记】Win11、RTX3070、CUDA117的深度学习机器学习环境配置

文章目录一、创建深度学习 Conda 虚拟环境二、安装 Pytorch-Gpu三、安装 PyTorch Geometric四、安装 Sklearn五、Jupyter 配置5.1 将虚拟环境加入内核5.2 插件配置5.3 主题、字体、字号配置假设你已经安装了Anaconda3(最新Anaconda3的安装配置及使用教程&#xff08…

里程碑,ChatGPT插件影响几何?

目录插件发布网络浏览器代码解释器平台生态微软魄力总结3月15日OpenAI推出了GPT-4,引起了全球轰动,仅仅过去一周多时间,OpenAI又宣布推出插件功能。如果说ChatGPT是AI的“iPhone时刻”,那么插件就是ChatGPT的“App Store”。超强的…

SpringBoot整合Flink(施耐德PLC物联网信息采集)

SpringBoot整合Flink(施耐德PLC物联网信息采集)Linux环境安装kafka前情:施耐德PLC设备(TM200C16R)设置好信息采集程序,连接局域网,SpringBoot订阅MQTT主题,消息转至kafka&#xff0c…

【chatgpt-01】部署学术神器chatgpt_academic

目录1 chatgpt_academic简介2 前置准备3 项目下载/配置4 安装依赖5 项目配置6 运行7 测试实验性功能1 chatgpt_academic简介 chatgpt_academic是一个科研工作专用ChatGPT拓展,特别优化学术Paper润色体验,支持自定义快捷按钮,支持markdown表格…

Jenkins部署与自动化构建

Jenkins笔记 文章目录Jenkins笔记[toc]一、安装Jenkinsdocker 安装 JenkinsJava启动war包直接安装二、配置mavenGit自动构建jar包三、自动化发布到测试服务器运行超时机制数据流重定向编写清理Shell脚本四、构建触发器1. 生成API token2. Jenkins项目配置触发器3. 远程Git仓库配…

Elasticsearch:配置选项

Elasticsearch 带有大量的设置和配置,甚至可能让专家工程师感到困惑。 尽管它使用约定优于配置范例并且大部分时间使用默认值,但在将应用程序投入生产之前自定义配置是必不可少的。 在这里,我们将介绍属于不同类别的一些属性,并讨…