CS184.1X 计算机图形学导论 作业0】的更多相关文章

1.框架下载 在网站上下载了VS2012版本的作业0的框架,由于我的电脑上的VS是2017版的,根据提示安装好C++的版本,并框架的解决方案 重定解决方案目标为2017版本. 点击运行,可以出来界面. 根据提示测试各个按钮功能,均没有问题,框架测试完毕. 2.修改颜色 先上原始的图: 作业要求我们修改壶的光照颜色,而且告诉了我们在哪一行代码要改哪个数值了,所以很简单. 按照提示打开mytest3.cpp文件,在124行把light_specular数组的第二个元素修改为1,保存重新运行,即可得到…
一.观察:正交投影 1.特性:保持平行线在投影后仍然是平行的 2.一个长方体,对处在只有深度不同的位置上的同一物体来说,它的大小不会改变. 3.透视投影:平行线在远处会相交(例如铁轨) 4.glOrtho()函数:这个函数描述了一个平行修剪空间.这种投影意味着离观察者较远的对象看上去不会变小(与透视投影相反).在3D笛卡尔坐标中想象这个修剪空间,左边和右边是最小和最大的X值,上边和下边是最小和最大的Y值,近处和远处是最小和最大的Z值. 正射投影,又叫平行投影.这种投影的视景体是一个矩形的平行管道…
组合变换 连接矩阵的优点是可以使用这些矩阵单独操作. 多个变换依然是一个矩阵. 连接矩阵不可交换,因为矩阵乘法不具有交换性. 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方向变换 二维情况下可以调换…
最容易填写的函数就是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的值加上…
罗德里格斯公式推导 图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来表示.…
这几天一直在忙着期末考试,所以一直没有更新我的博客,今天刚把我的期末作业完成了,心情澎湃,所以晚上不管怎么样,我也要写一篇博客纪念一下我上课都没有听,还是通过强大的度娘完成了我的作业的经历.(当然作业不是百度来的,我只是百度了一些示例代码的意思,怎么用!算了,越解释万一越黑呢!哈哈O(∩_∩)O哈哈~) ----------------------------------------------------------------分界线------------------------------…
下面代码需要插入到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…