图形学入门
学习图形学基础的记录
蓝线不会弯
这个作者很懒,什么都没留下…
展开
-
GAME101作业3
作业三的第一二步是在作业2的基础上添加几个插值 这一段代码的解释可以看传送门 叫做透视矫正插值。 float Z = 1.0 / (alpha / v[0].w() + beta / v[1].w() + gamma / v[2].w()); float zp = alpha * v[0].z() / v[0].w() + beta * v[1].z() / v[1].w() + gamma * v[2].z() / v[2].w(); zp *= Z; 但是在作业中对w值做了处理,将其变成了0。w本原创 2020-09-06 21:15:00 · 680 阅读 · 0 评论 -
Bresenham直线算法
参考了wiki,不得不说wiki给出的伪代码实现非常简洁,包含了所有情况的直线 void Rasterizer::DrawLine(int x0, int y0, int x1, int y1, Color& c) { //处理斜率大于1的情况 bool steep = abs(y1 - y0) > abs(x1 - x0); if (steep) { swap(x1, y1); swap(x0, y0); } //处理从右向左画的情况 if (x0 > x1)原创 2020-09-06 10:35:21 · 257 阅读 · 0 评论 -
现代计算机图形学入门作业二
博客仅用于个人记录学习过程中的想法和遇到的错误,可能不适合学习目的的阅读。 所有图片都来自现代计算机图形学入门-闫令琪 第一部分 要求是把两个三角形栅格化,填写一个判断点是否再三角形内部的函数和一个光栅化函数。 判断点在三角形内部只要用向量叉乘就能实现 判断点 static bool insideTriangle(float x, float y, const Vector3f* _v) { // TODO : Implement this function to check if the原创 2020-08-22 11:46:02 · 594 阅读 · 4 评论 -
现代计算机图形学入门作业一
博客仅用于个人记录学习历程,可能不适合他人阅读。 十分感谢闫大佬的视频,让我能从0开始学习图形学 所有图片都来自现代计算机图形学入门-闫令琪 第一次作业是填充模型变换和投影变换矩阵,按照课程视频的来就很简单。 要注意作业框架中的相机已经规定了相机看的方向是-z,上方向是y。 正交投影 正交投影是最好理解的,把整个场景移动到0,0,0的位置,随后压缩成一个222的立方体,再进行光栅化就得到了需要的画面,作业中不需要把物体移动到0,0,0位置,因为作业的框架是把相机永远置于0,0,0,物品随之移动保证相对原创 2020-08-21 22:34:00 · 942 阅读 · 5 评论