03 2024 档案
摘要:这段代码将输出 -x 的值,比如令 x = 123,那么输出 -123。 如果你问我为什么不直接用 -x……那样的话,这个表达式就不 “奇怪” 了。
阅读全文
摘要:这段时间没有怎么练习,昨晚打 Div.4 的时候居然卡在 E 了 = =。不过,我觉得这两件事情并没有联系,纯粹是我太菜的缘故。 看 E 的官方题解时发现了一个比较 counter-intuitive 的东西: 注意最后一行:“所有小于等于 的数最多有 个因子”。作
阅读全文
摘要:今天主要是在纸上推导了观察矩阵、正射投影矩阵和透视投影矩阵。 剩下还有两节 lesson,分别讲 shadow mapping 和 ambient occlusion——我先不打算做,因为 GAMES202 里面有相关的内容,等学完了再做。 做到这里花了 4 个晚上……比我预想得要快。
阅读全文
摘要:TL;DR 移除了 fRange 函数。 实现了 Z-Buffer 算法——可以正确处理遮挡关系了! 引入了可编程 Shader(目前仅支持顶点着色器和片段着色器)。 引入了透视除法、NDC 和视口变换 (这些都是顶点着色器连带的东西,所以顺便实现了) 把 Model 封装成类,将模型的加载和渲染解
阅读全文
摘要:绘制线框三角形 def triangleWireframed(self, v0, v1, v2, color): self.line(v0[0], v0[1], v1[0], v1[1], color) self.line(v1[0], v1[1], v2[0], v2[1], color) sel
阅读全文
摘要:先前代码改动 给 setPixel 增加了边界检测。(之后这部分可能会再修改,因为目前是直接在屏幕坐标系上操作,还没有透视除法、NDC 之类的东西) def setPixel(self, x, y, color): x = int(x) y = int(y) if x >= 0 and x < se
阅读全文
摘要:Repo 引言 最近在上学校开设的《计算机图形学研究进展 / Advances in Computer Graphics》,打算同步学习 GAMES202……听起来非常美好,但我突然发现一件恐怖的事情——自己图形学的基础知识都忘得差不多了! 因此我决定跟着 TinyRenderer 的教程做一遍,当
阅读全文
摘要:E. Vlad and an Odd Ordering 我很喜欢这道题,第一是因为它对我来说很难,第二是因为它体现了数学中的一些美妙而神奇的性质。惭愧的是,初见时我并没能做出来,看了 editorial 后也似懂非懂,直到两个星期之后,才总算理清楚思路,并且给出了一种略微复杂的解法——不知道和官方题
阅读全文
摘要:最近渐渐地会做一些基础的 DP 题了,但是因为细节上没处理好,常常花很多时间去 debug,导致效率不高,因此打算写这样一篇(一系列)文章分析下 DP 的细节处理。 以这道 1500* 的 E. Block Sequence 为例,当我们得出了: (点击展开) $$ \begin{gather*}
阅读全文
摘要:B. Equalize by Divide D. Divide and Equalize 做到 D. Divide and Equalize 的时候感觉似曾相识,翻了下以前写过的题解,发现自己确实做过类似的题,叫 B. Equalize by Divide,所以就想,不妨把所有这类题都收集在一起,提
阅读全文
摘要:之前做 CG 课 lab2 的时候遇到了如标题所示的问题,当时并不知道原因。不久前又一次遇到该问题,这次我决定把它搞明白。 我使用 RenderDoc 对出错的部分进行了 profiling,发现传递给 GPU 的 uniform 变量 viewMatrix 里面有大量的 NaN 项,考虑到我的观察
阅读全文
摘要:NOTE1: 本文并不包含树状数组的原理及实现。 NOTE2: 主要参考 树状数组 - OI Wiki 写成。 逆序对 对于给定数组 ,记下标为 的元素为 ,定义逆序对 为满足: 的数对。 使用暴力方法求逆序
阅读全文