一.观察:正交投影 1.特性:保持平行线在投影后仍然是平行的 2.一个长方体,对处在只有深度不同的位置上的同一物体来说,它的大小不会改变. 3.透视投影:平行线在远处会相交(例如铁轨) 4.glOrtho()函数:这个函数描述了一个平行修剪空间.这种投影意味着离观察者较远的对象看上去不会变小(与透视投影相反).在3D笛卡尔坐标中想象这个修剪空间,左边和右边是最小和最大的X值,上边和下边是最小和最大的Y值,近处和远处是最小和最大的Z值. 正射投影,又叫平行投影.这种投影的视景体是一个矩形的平行管道…
罗德里格斯公式推导 图1(复制自wiki) 按照教程里,以图1为例子,设k为旋转轴,v为原始向量. v以k为旋转轴旋转,旋转角度为θ,旋转后的向量为vrot. 首先我们对v进行分解,分解成一个平行于k和垂直于K的向量,分别为v∥和v⊥. 则v∥=<k,v>k (因为这里设了k是单位向量,所以|k|=1) v⊥=v-v∥ 为了方便研究旋转后的向量,我们以k和v的叉乘w以及v∥和v⊥建立坐标系. w=kXv 设vrot的分量为v⊥',和v∥',显而易见的v∥'=v∥ 而v⊥'可以由v⊥和w来表示.…
组合变换 连接矩阵的优点是可以使用这些矩阵单独操作. 多个变换依然是一个矩阵. 连接矩阵不可交换,因为矩阵乘法不具有交换性. X3=RX2 X2=SX1 X3=R(SX1)=(RS)X1 X3≠SRX1 逆变换: 方法1 求相乘结果的逆矩阵 方法2 求每个变换的逆矩阵,同时交换位置 也就是最后一个变换必须最先解除 M=M1M2M3 M-1=,M3-1M2-1M1-1 三维旋转 回顾二维矩阵 旋转矩阵是正交的 即R^TR=E 三维空间 二维旋转可以看成围绕Z轴的特殊旋转,因为Z轴保持不变 因此矩阵…
二维空间的变换 L3V1这一课主要讲了二维空间的变换,包括平移.错切和旋转. 缩放 缩放矩阵 使用矩阵的乘法来完成缩放 缩放矩阵是一个对角矩阵,对角线上的值对应缩放倍数 错切(shear) 错切可以将矩形变成平行四边形 一般来说,中心线不错切,也就是0错切 上部分错切a 下部分错切-a y坐标不变化,x坐标变换 假设y坐标为1 所以矩阵第二行为[0 1] 第一行为之前的x值加上a乘以y坐标的值 即[1 a]. 旋转变换(二维) 二维的旋转变换,先在X坐标进行变换再在Y方向变换 二维情况下可以调换…
1.框架下载 在网站上下载了VS2012版本的作业0的框架,由于我的电脑上的VS是2017版的,根据提示安装好C++的版本,并框架的解决方案 重定解决方案目标为2017版本. 点击运行,可以出来界面. 根据提示测试各个按钮功能,均没有问题,框架测试完毕. 2.修改颜色 先上原始的图: 作业要求我们修改壶的光照颜色,而且告诉了我们在哪一行代码要改哪个数值了,所以很简单. 按照提示打开mytest3.cpp文件,在124行把light_specular数组的第二个元素修改为1,保存重新运行,即可得到…
最容易填写的函数就是left.输入为旋转的角度,当前的eye与up这两个三维向量 void Transform::left(float degrees, vec3& eye, vec3& up) { // YOUR CODE FOR HW1 HERE } 1.Transform是一个类,在Transform.h中可查看,类中声名了四个方法 2.:: 类作用域符,用法(class::name)一种从属关系 class A {public: int test();} int A::test()…
一.齐次变换 1.平移变换 变换矩阵不能包含X,Y,Z等坐标变量 如果x坐标向右平移了5个单位长度,则x~=x+5.在变换矩阵中表示的时候添加一个w坐标变量.通过加入一个w坐标,可以实现平移变换 1>如果w>0,这表示一个真实物理世界的点,因为你可以用x,y,z三个坐标初一w得到这个真是的点. 2>如果w=0,表示一个无穷远处的点 3>在实际应用中,w等于0通常用来表示一个向量 齐次坐标的优点:只需在渲染管线的最后做一次 除法(除以w)就能将齐次坐标转换为非齐次. 一般的平移矩阵:…
第一单元(介绍关于变换的数学知识) :基本二维变换 模型坐标系,世界坐标系 1.缩放 Scale(规模,比例) Sx表示在x方向上放大的倍数,Sy表示在y方向上放大的倍数,因此X坐标乘以Sx,Y坐标乘以Sy 缩放的你操作就是用x坐标和Y坐标分别乘以Sx和Sy的倒数.因此,如果放大了2倍,则其逆操作就是放大1/2倍,就是Sx和Sy的倒数 缩放矩阵是一个对角矩阵,将坐标乘以对应的缩放系数即可. 2.错切 Y坐标不发生变化,因此矩阵的第二行仍然是[0  1],乘起来仍然是y x的值等于之前的x的值加上…
这几天一直在忙着期末考试,所以一直没有更新我的博客,今天刚把我的期末作业完成了,心情澎湃,所以晚上不管怎么样,我也要写一篇博客纪念一下我上课都没有听,还是通过强大的度娘完成了我的作业的经历.(当然作业不是百度来的,我只是百度了一些示例代码的意思,怎么用!算了,越解释万一越黑呢!哈哈O(∩_∩)O哈哈~) ----------------------------------------------------------------分界线------------------------------…
作业题目: 图形变换:实现一个图形绕任意直线旋转的程序. 要求:把一个三维图形绕任意一条直线旋转,需要有初始图形,和旋转后的图形,最好也可以实时控制旋转. 最少要做出绕z轴旋转. 原理:http://inside.mines.edu/~gmurray/ArbitraryAxisRotation/ArbitraryAxisRotation.html 或参见<计算机图形学> 1: #include "stdafx.h" 2: #include<gl/glut.h>…
最近严重感觉到数学知识的不足! http://bbs.gameres.com/showthread.asp?threadid=10509 [译]Mathematics for Computer Graphics Mathematics for Computer Graphics数学在计算机图形学中的应用Greg Turk, August 1997 “学习计算机图形学需要多少的数学?”这是初学者最经常问的问题.答案取决于你想在计算机图形学领域钻研多深.如果仅仅使用周围唾手可得的图形软件,你不需要知…
本书參照<<图形学扫盲>> 整理的,原文内容引子: http://www.cppblog.com/lai3d/archive/2008/12/30/70796.html 前言:   以我如今的水平观之,3D图形学分3大块的学习内容:   a.空间几何数学:空间几何变换,加速算法,多边形技术,曲线和曲面,相交測试,碰撞測试.   b.光照着色系统:光照,纹理贴图,高级象素着色光照,艺术性渲染.   c.程序技术性应用:公告板,精灵,天空盒,体绘制,材质系统,场景图,渲染队列.    …
<计算机图形学>(第四版)正在学习中,学习目的是为了在Unity中使用shader实现不同的渲染效果. 希望在这里能把学习过程中学到的知识和遇到的问题记录下来. 工作环境是:Xcode 8.3.2.  Deployment Target: 10.8. 代码目录是:https://github.com/p0e0o0p0l0e0/Computer_Graphics.git 目标学习内容有以下几章,已经学到第8章. 第3章:计算机图形学软件 第4章:输出图元 第5章:图元的属性 第6章:实现图元及属…
[3D计算机图形学]变换矩阵.欧拉角.四元数 旋转矩阵.欧拉角.四元数主要用于:向量的旋转.坐标系之间的转换.角位移计算.方位的平滑插值计算.   一.变换矩阵: 首先要区分旋转矩阵和变换矩阵: 旋转矩阵:向量绕某一个轴旋转,用3x3的矩阵表示. 变换矩阵:向量的移动.旋转.缩放,用4x4的矩阵表示. 这里额外补充一个知识,就是三维坐标变换是用4x4矩阵(采用齐次坐标)而不是3x3矩阵的原因是:统一平移和缩放(本来是向量加法来描述)为矩阵乘法的形式来计算.所以旋转矩阵也扩展为4x4矩阵,这样一来…
计算机图形学(第2版 于万波 于硕 编著)第45页的Bresenham算法有错误: 书上本来要写的是以x为阶越步长的方法,但是他写的是用一部分y为阶越步长的方法(其实也写的不对),最后以x为阶越步长的方法总结. 分析书上的算法得: l  K初始值<=0  画出的是 x=0; l  0<K初始值<1  画出的是 1/k的直线; l  K初始值>=1  画出的是 y=x; 以下黑色的线是使用MoveTo,Lineto画出的,红色的是书上的程序画出的,蓝色的线是我修改后的直线(有除法),…
引言 shader到底是干什么用的?shader的工作原理是什么? 其实当我们对这个问题还很懵懂的时候,就已经开始急不可耐的要四处搜寻有关shader的资料,恨不得立刻上手写一个出来.但看了一些资料甚至看了不少cg的语法之后,我们还是很迷茫,UNITY_MATRIX_MVP到底是个什么矩阵?它和v.vertex相乘出来的又是什么玩意?当这些问题困扰我们很久之后,我们才发现,原来我们是站在浮沙上筑高台,根基都没有打牢当然不可能盖得起高楼大厦了. 那根基是什么呢?大牛曰,计算机图形学. shader…
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-…
第 1 章 图形系统概述        如今.计算机图形学的作用与应用已经得到了广泛承认.大量的图形硬件和软件系统已经应用 到了差点儿全部的领域.通用计算机甚至很多手持计算器也已经普遍具备 二维及三维应用的图形功能 . 在个人计算机上也能够配用多种交互输入设备及图形软件包 .对于高性能应用.能够选择很多高级 的专用图形硬件系统和技术 .本章将探讨图形硬件和图形软件包的基本特性 . 1.1    视频显示设备 图形系统一般使用视频显示器作为其主要的输出设备. 大部分视频监视器的操作是基于标准的 阴…
引言 shader到底是干什么用的?shader的工作原理是什么? 其实当我们对这个问题还很懵懂的时候,就已经开始急不可耐的要四处搜寻有关shader的资料,恨不得立刻上手写一个出来.但看了一些资料甚至看了不少cg的语法之后,我们还是很迷茫,UNITY_MATRIX_MVP到底是个什么矩阵?它和v.vertex相乘出来的又是什么玩意?当这些问题困扰我们很久之后,我们才发现,原来我们是站在浮沙上筑高台,根基都没有打牢当然不可能盖得起高楼大厦了. 那根基是什么呢?大牛曰,计算机图形学. shader…
<计算机图形学方法原理应用> Opengl语言    光线跟踪   贝塞尔曲线  射线追踪   色彩理论  纹理映射 逆向运动   MPI  仿射   绘制流水线   透视变换   bresenham算法 扫描线插值   gouraud  homegeneous坐标   环境映射  终采样 光照模型phong  漫反射 rgb  hsl色彩 修枝相交  jacobi  gauss-seidel  southwell     Hermite    catmull-rom Bessel-overh…
计算机图形学 opengl版本 第三版------胡事民 第四章  图形学中的向量工具 一   基础 1:向量分析和变换   两个工具  可以设计出各种几何对象 点和向量基于坐标系定义 拇指指向z轴正方向    从x轴的正向握向y轴的正向,  可以分为左手和右手坐标系. 点A到点B的位移称为向量v       则v=B-A     尾-头 一个n维向量是一个n元组      w=(w1,w2,w3,...) 用矩阵来表示向量  更加方便清晰 2:向量的基本运算法则 向量a b      标量s…
opengl  计算机图形学 第三版   第二部分   第三章更多的绘图工具 3.1   概述 第2章中  我们绘图使用的是屏幕窗口的基础坐标系    以像素为单位 屏幕坐标从左下角x从0延伸到screenWidth-1         y从0向上延伸到screenHeight-1       只能使用非负的x和y 程序中用于描述对象几何信息    此过程为建模任务 在屏幕中如何将这个对象  按照一定比例显示出来    是一个观看的任务 使用最适合与手中问题的坐标系来描述对象,并且可以自动的缩放…
每年由美国计算机协会(Association of Computing Machinery,简称ACM)计算机图形专业组举办的年会SIGGRAPH,是全球最负盛名的图形学和交互技术盛会.今年已经是这场图形学盛宴的第四十四届,本届大会于7月30日至8月3日在美国洛杉矶举行. 作为著名的好莱坞所在地,洛杉矶聚集了大量影视特效等工业界的从业人员,而SIGGRAPH正是工业界展示自己炫酷技术,以及和学术界交流的一个绝佳平台,所以SIGGRAPH组委会多次选择洛杉矶作为大会举办地. 除了像其它学术会议一样…
计算机图形学:贝塞尔曲线(Bezier Curve) 贝塞尔能由贝塞尔样条组合而成,也可产生更高维的贝塞尔曲面.…
计算机图形学(Conputer Graphics):非均匀有理B样条 非均匀有理B样条(Non-Uniform Rational B-Spline)英文缩写,NURBS. 它是贝塞尔曲线的一个推广,而贝塞尔曲线可以视为均匀有理B样条.NURBS是计算机辅助设计(CAD).制造(CAM)和工程(CAE)中重要的组成部分,同时也是很多业界广泛采用的标准的一部分,例如IGES, STEP和PHIGS. 连续性 一个结构的曲面,例如,一艘机动游艇的船体,通常由几个NURBS曲面构成,称之为包(patch…
下面代码需要插入到MFC项目中运行,实现了计算机图形学中的L系统分形树. class Node { public: int x,y; double direction; Node(){} }; CString way[3] ;//提供三种生成规则 CString rule,temprule; int len ; //单步长 int angle; //旋转转角度 int degree ; //迭代次数 int x,y ; //原点坐标 Node stack[1024]; int stackpoin…
为方便大家学习,我将自己计算机图形学的课件分享. 下载链接:http://pan.baidu.com/s/1kV5BW8n 密码:eqg4 注:本课件与教材配套PPT有所不同.教材配套PPT是编写教材的几位老师根据自己所编内容提供的PPT组合而成.本课件主要是我自己在计算机图形学中所采用.因此两者还是有一些差别,以方便学习,同时也便于对照发现教材中一些错误. 有错误.问题或任何建议欢迎反馈给我(wpxu08@gmail.com). 谢谢!…
我的新书<计算机图形学基础(OpenGL版)>今年6月份在清华大学出版社出版了!新书与原在机械工业出版社出的<计算机图形学>相比,主要有以下不同: 1.加重OpenGL的内容,每章都附有一个完整的OpenGL实例代码: 2.实验教程更新并增加了2个实验,使图形学实验上机可以有更多的灵活性: 3.更新了部分模拟题: 4.增加了一章内容简单介绍动画(第10章): 5.在第一章绪论中,对图形学的内容体系做了一些阐述,希望能让读者对图形学有一个更好的整体认识. 为便于老师和同学们的学习.使…
0 引言 最近想学一下计算机图形学方面的知识,原因如下.目前本人接触了数字图像处理(opencv)以及点云处理(PCL)方面的知识,对从图像和点云中提取特征信息,并将特征转化为底层/中层语义信息有了一定经验.另一方面,通过组内交流,本人对计算机视觉中从图像/点云获取高层语义信息也有了一定的了解.但是,对于如何从语义到图形/图像这个过程我了解不多,而计算机图形学正是研究解决这个问题的学科.从OpenGL图形流水线开始学习计算机图形学是一条相当不错的途径,这便是本文的目的所在. 1 学习资料整理 (…
原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/12166896.html 为什么引入齐次坐标的变换矩阵可以表示平移呢? - Yu Mao的回答 - 知乎 https://www.zhihu.com/question/26655998/answer/43847213为什么引入齐次坐标的变换矩阵可以表示平移呢? - Yu Mao的回答 - 知乎 https://www.zhihu.com/question/26655998/answer/438…