计算机图形学-坐标系(坐标总汇)

news2024/11/25 14:32:36

     建议买本书《计算机图形学》第四版 

1 坐标系

1.1   在我们谈论坐标变换之前,我们必须对我们的坐标系做一个正式的定义。DirectX 使用的默认坐标系是左手坐标系。OpenGL 使用的默认坐标系是右手坐标系。

我们可以通过使用手对坐标系进行一个简单的判断。

       左手坐标系中,你的大拇指将指向X轴的正方向(指向右边),你的食指指向Y轴的正方向(上方),你的中指指向Z轴的正方向(远离你的方向)。

      右手坐标系中,你的大拇指将指向X轴的正方向(指向右边),你的食指指向Y轴的正方向(上方),但是与左手坐标系不一样的是,你的中指指向Z轴的正方向,但是这个方向不是远离你的方向,而是指向你自己。

左手坐标右手

与坐标系相关的另一个重要的理论就是每个坐标系的旋转方向是不一样的。

下表显示左手坐标系与右手坐标系正方向旋转和负方向旋转的旋转方向。

左手坐标系右手坐标系
查看方向正向旋转方向负向旋转方向正向旋转方向负向旋转方向
从坐标轴负方向看正方向(比如从-1看向+1)逆时针顺时针顺时针逆时针
从坐标轴正方向看负方向(比如从+1看向-1)顺时针逆时针逆时针顺时针

2 笛卡儿坐标系

笛卡尔坐标系就是直角坐标系和斜坐标系的统称。

   2.1 直角坐标系

二维的直角坐标系通常由两个互相垂直的坐标轴设定,通常分别称为 x-轴和 y-轴。两个坐标轴的相交点,称为原点,通常标记为 O,既有零的意思,又是英语 Origin 的首字母。每一个轴都指向一个特定的方向。这两个不同线的坐标轴,决定了一个平面,称为 xy-平面,又称为笛卡尔平面。

图中四点的坐标分别为,绿点:(2,3)(2, 3)(2,3),红点:(−3,1)( -3, 1)(−3,1),蓝点:(−1.5,−2.5)(-1.5, -2.5)(−1.5,−2.5),紫点:(0,0)(0, 0)(0,0)。

为了要知道坐标轴的任何一点,离原点的距离。我们可以刻画数值于坐标轴。那么,从原点开始,往坐标轴所指的方向,每隔一个单位长度,就刻画数值于坐标轴。这数值是刻画的次数,也是离原点的正值整数距离;同样地,背着坐标轴所指的方向,我们也可以刻画出离原点的负值整数距离。称 x-轴刻画的数值为 x-坐标,又称横坐标,称 y-轴刻画的数值为 y-坐标,又称纵坐标。

在这里,这两个坐标都是整数,对应于坐标轴特定的点。按照比例,我们可以推广至实数坐标和其所对应的坐标轴的每一个点。这两个坐标就是直角坐标系的直角坐标,标记为 (x,y)(x, y)(x,y)。

任何一个点 P 在平面的位置,可以用直角坐标来表达。只要从点 P 画一条垂直于 x-轴的直线。从这条直线与 x-轴的相交点,可以找到点 P 的 x-坐标。同样地,可以找到点 P 的 y-坐标。这样,我们可以得到点 P 的直角坐标。

2.2.斜坐标系

互相垂直且有公共原点的两条数轴构成平面直角坐标系,而如果坐标系中两条坐标轴不垂直,那么这样的坐标系称为“斜坐标系”。

除了笛卡尔坐标系之外,还有一些其他的坐标系:

2.3.世界坐标系:所有的坐标系都可以变换到世界坐标系下

2.4.物体坐标系

通常在三维开发或制图中,都会给绘制物体的本身设置一个坐标系,这样物体不论在哪个位置,都是相对于本身的物体坐标系的。

2.5 惯性坐标系

是世界坐标与物体坐标系直接互相转换的中间一个坐标系,坐标系的每个轴(x轴,y轴,z轴)都平行与世界坐标系。

        据说有一天,法国哲学家、数学家笛卡尔生病卧床,病情很重,尽管如此他还反复思考一个问题:几何图形是直观的,而代数方程是比较抽象的,能不能把几何图形与代数方程结合起来,也就是说能不能用几何图形来表示方程呢?要想达到此目的,关键是如何把组成几何图形的点和满足方程的每一组“数”挂上钩,他苦苦思索,拼命琢磨,通过什么样的方法,才能把“点”和“数”联系起来。突然,他看见屋顶角上的一只蜘蛛,拉着丝垂了下来,一会功夫,蜘蛛又顺着丝爬上去,在上边左右拉丝。蜘蛛的“表演”使笛卡尔的思路豁然开朗。他想,可以把蜘蛛看做一个点,它在屋子里可以上、下、左、右运动,能不能把蜘蛛的每个位置用一组数确定下来呢?他又想,屋子里相邻的两面墙与地面交出了三条线,如果把地面上的墙角作为起点,把交出来的三条线作为三根数轴,那么空间中任意一点的位置就可以用这三根数轴上找到有顺序的三个数。反过来,任意给一组三个有顺序的数也可以在空间中找出一点P与之对应,同样道理,用一组数(x、y)可以表示平面上的一个点,平面上的一个点也可以有用一组两个有顺序的数来表示,这就是坐标系的雏形。

3 计算机图形学中的坐标系统

1.建模坐标系(MC)

  建模坐标系是一个局部坐标系,同时可以是一个典型的平面直角坐标系,它的出现主要是为了模型构建与变换的方便。一般而言,我们总是习惯与将基本形体或图形与某些位于物体上的角点、中心点或靠近它们的点联系起来考虑,比如在创建圆形的时候,一般将圆心作为参考点来创建圆周上其他各点,这时实质上就构建了一个以圆心为原点的参考坐标系。在对圆形进行变换时,类似地,一般以圆心为参考点来进行变换,也较为直观与方便。

2.世界坐标系(WC)

  一旦对物体进行了建模,下一步就是将各个对象或者图形组合放到我们希望绘制的平面场景中。如上所述,每一个对象在创建时都有自身的建模坐标系,当我们将其组合放置在一起时,为了确定每一个对象的位置及其他对象的相对位置,就必须抛弃每一个对象自身的坐标系,将其纳入到一个统一的坐标系中,这个坐标系称为世界坐标系,也称用户坐标系,它是一个全局坐标系,也是一个典型的平面直角坐标系。这个过程实质上是将一个物体从局部空间组合装配到世界空间的变换过程。

3.观察坐标系(VC)

        当二维图形场景确定后,用户可根据图形显示的要求定义观察区域和观察方向,得到所期望的显示结果,这其实是需要定义视点(或照相机)的位置与方向,完成从观察者角度对整个世界坐标系内的对象进行重新定位和描述,简化后续二维图形在投影面成像的推导和计算。因此,有必要引入观察坐标系来完成这件事情。下图即为观察坐标系示意图:

  图1:观察坐标系

 4.规范化设备坐标系(NDC)

        为了使观察处理独立于输出设备,我们可以将对象描述转换到一个中间坐标系,这个坐标系既独立于设备,又可以容易地转变成设备坐标系。通常将这个中间坐标系称为规范化设备坐标系,其坐标范围为 [0,1],这样可以使二维观察结果独立于可能使用的各种输出与显示设备,提高应用程序的可移植性与设备无关性。

5.设备坐标系(DC)

        为了便于输出二维观察结果,DC用于定义图像空间,也称为屏幕坐标系或者像素坐标系。它主要是用于某一特殊的计算机图形显示设备表面的像素定义,在多数情况下,对于每一个具体的显示设备,都有一个单独的坐标系。在定义了显示窗口的情况下,可进一步在设备坐标系中定义称为视区的有限区域。视区的成像即为实际所观察到的。设备坐标系一般都与特定的输出设备相联系,其坐标系是离散的整数值。

   为了便于理解上述概念,下面放几张示意图:

 

图2:坐标系转换过程

图3:坐标系转换流程示意图

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

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

相关文章

LiangGaRy-学习笔记-Day24

1、web服务介绍 1.1、Linux常见的web服务 httpd nginx tomcat 1.2、LAMP架构 L:CentOS CentOS7RHEL7等等 A:Apache apache:网页服务器 httpd服务 M:MySQL MySQL:关系型数据库 AB公司–>08年被SUN公司收购…

基于.Net6使用YoloV8的分割模型

前言 在目标检测一文中,我们学习了如何处理Onnx模型,并的到目标检测结果,在此基础上,本文实现基于.Net平台的实例分割任务。 执行YoloV8的分割任务后可以得到分割.pt模型。由于Python基本不用于工业软件的部署,最终还…

1.1 渲染流水线

整体流程 应用阶段:粗粒度剔除、进行渲染设置、准备基本数据、输出到几何阶段 几何阶段:顶点着色器、曲面细分、几何着色器、顶点裁剪、屏幕映射 光栅化阶段:三角形(点/线)设置、三角形(点/线&#xff09…

基于android studio开发的火车票购票系统app,android移动开发课设,毕业设计

基于android studio开发的火车票购票系统app 项目概述 基于android studio开发实现火车票购票系统app 适用于android移动开发学习项目,课程设计,毕业设计等 开发环境及工具 开发工具:android studio 或者intellij idea专业版操作系统&…

最新大学计算机专业实习心得报告

最新大学计算机专业实习心得报告(篇1) 一、实习目的 通过理论联系实际,巩固所学的知识,提高处理实际问题的能力,为顺利毕业进行做好充分的准备,并为自己能顺利与社会环境接轨做准备。通过这次实习&#xff…

软件测试入门篇

软件测试含义 在规定条件下对程序进行操作,发现软件错误,衡量软件质量,对其是否能满足设计要求进行评估的过程 开发不做测试原因:测试力度,思维方式,关注度 计算机定义 一种可以自动高效进行技术操作的…

Debian 版本代号与《玩具总动员》

作为最受欢迎的 Linux 发行版之一,Debian 是许多其他发行版的基础,许多非常受欢迎的 Linux 发行版,例如 Ubuntu、Knoppix、PureOS 、Tails、Armbian 以及 Raspbian,都基于 Debian。 经过近 20 个月的开发,2023 年 6 月…

基于SpringBoot的大学生成长管理系统的设计与实现

摘 要 大学生成长管理系统是记录大学生在大学期间的成长记录史。它是为了促进学生成长、提升学习兴趣及其质量。系统是集辅导员、学生和管理员为核心的一个综合平台。 本系统采用Java编程语言,完成了大学生成长管理系统。系统的使用角色分为三个:管理员…

鉴源实验室丨HSM技术浅述

作者 | 徐奕华 上海控安可信软件创新研究院汽车网络安全组 来源 | 鉴源实验室 引言:2023年5月初,工业和信息化部装备工业一司组织全国汽车标准化技术委员会开展《汽车整车信息安全技术要求》等四项强制性国家标准的制修订[1]。这意味着车辆信息安全管理…

CPU调优 iostat命令

目录 一、命令描述 二、命令作用 三、命令 1.用法 2.命令参数 四、使用实例 1.CPU属性值说明 五、压力测试stress 1.stress介绍 2.stress参数 3.安装stress 四、实验 五、总结 一、命令描述 Linux 中的 iostat 是I/O statistics(输入/输出统计&#xf…

毕业设计心得总结10篇

毕业设计心得总结1 201_年5月30日上午,我们的毕业论文答辩圆满结束了。当刘老师给我们送上人生的祝语时,一种即将离别的难舍之情油然而生,我开始眷恋培养我大学四年的母校,看着一张张熟悉的面孔,过去的欢乐和不快都烟消…

JavaEE课程设计——校园招聘管理系统(vue框架分析)

目录 Vue架构 登录 Vue架构 前端执行命令 npm run serve 这是整个前端的目录结构 vue.config.js是对前端vue的一个配置, // var webpack require(webpack); const path require(path)function resolve(dir) {return path.join(__dirname, dir) }function pu…

每日学术速递6.13

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Tracking Everything Everywhere All at Once 标题:一次跟踪所有地方的一切 作者:Qianqian Wang, Yen-Yu Chang, Ruojin Cai, Zhengqi Li, Bharath Hariha…

数据结构 栈(C语言实现)

绪论 时间就是生命,时间就是速度,时间就是气力。——郭沫若;本章继续学习数据结构,本章主要讲了什么是栈以及栈的基本功能和实现方法。 话不多说安全带系好,发车啦(建议电脑观看)。 附&#xff…

专业科普:什么是单片机?

一、什么是单片机 单片机诞生于20世纪70年代末,它是指一个集成在一块芯片上的完整计算机系统。单片机具有一个完整计算机所需要的大部分部件:CPU、内存、内部和外部总线系统,目前大部分还会具有外存。同时集成诸如通讯接口、定时器&#xff…

AI日报|GitHub报告:开发者正将AI视为新机会;突破ChatGPT的能力极限;AI会让我们变得愚蠢吗?

今日值得关注的人工智能新动态: AI 会让我们变得愚蠢吗?安永:与老板们不同,大多数工人正在拥抱 AI突破 ChatGPT 的能力极限谷歌推出AI虚拟试穿工具Gannett 涉足生成式 AIGitHub 报告:开发者将 AI 视为一个新机会专家敦…

Nik Color Efex 滤镜详解(4/5)

油墨效果 Ink 模拟特种相纸和调色剂的冲印效果。 颜色组合 Color Set 可选择不同的颜色组合。 强度 Strength 调整滤镜效果程度。 层次和曲线 Levels & Curves 用色阶和曲线来调整图像的影调和色调。常与其它滤镜组合使用。 通道 Channel 选择调节色调的通道。 通道除了…

C++基础(10)——函数模板和类模板

前言 本文主要介绍了C中函数模板和类模板基本知识 6.1&#xff1a;函数模板 模板函数的定义 template<typename T>函数的定义或声明 模板函数的两种使用方法&#xff08;编译器自动推测、显示指定T的类型&#xff09; 注意事项&#xff1a;模板一定要确定指出T的数据…

nuxt打包后文件过大的优化

在使用nuxt.js来做项目的时候&#xff0c;遇到了加载缓慢的问题。解决思路如下 1、大文件拆分 2、文件压缩 大文件拆分 通过nuxt build --analyze或者nuxt build -a命令来启用 在package.json中 添加–analyze&#xff0c;然后执行npm run build 打包后如下&#xff1a; …

MySQL数据库——事物

MySQL数据库——事物 一、事务的概念二、事务的ACID特点1.原子性2.一致性3.隔离性4.持久性5.事务隔离级别的作用范围 三、事务级别的查看与设置1.查询全局事务隔离级别2.查询会话事务隔离级别3.设置全局事务隔离级别4.设置会话事务隔离级别 四、事务控制语句1.测试提交事务2.测…