重点归纳:
- 3D 变换 (以旋转为重点):
- 绕 x, y, z 轴旋转矩阵的差别,循环对称性 (列向量顺序问题)
- 旋转的分解以及欧拉角,Rodrigues' Rotation Formula(绕过原点的轴的旋转)
- 四元数,主要为了旋转间的差值 (课程无), 因为旋转矩阵不太适合作差值,三角函数不是线性的,(15 + 25)/2 != 20
- Viewing 变换:
- View(视图)/Camera 变换
- 3D 到 2D 的投影变换 (Orthographic/Perspective, 正交/透视)
- View 变换
- 标准相机位置的定义
- 相机和模型的一起变换
- 投影变换
- 正交投影,无近大远小
- 简单的正交投影方法和常用的正交投影方法
- 透视投影,平行线会相交,可以分解成"挤压"变换和正交投影变换
- "挤压"变换的推导
重点归纳:
- 2D 变换:
- 线性变换 (Linear):缩放 (scale)、切变 (shear)、旋转 (rotatrion)、镜像 (Reflection)
- 非线性变换:平移 (translation)
- 仿射变换 (Affine): 线性变换 + 平移
- 齐次坐标
- 用线性矩阵来描述上述所有的变换
- 点与向量的表示
- 变换的组合与分解
- 变换的先后顺序
- 绕任意点的旋转
Parallel201 笔记 + 课后作业,课程传送门:
Parallel101 笔记 + 课后作业,课程传送门:
今天有个初学编程的朋友问了我一个关于 scanf() 的问题,大概就是对书上一段有关"%d%c"的解释不太明白,但作为 Cpp 学习者的我,老实说有一万年没有用过这个 C 函数了,虽说 printf()/scanf() 在开销上是比 C++ 的 cout/cin 要小的,但我其实连 cin 都不怎么用,刚好借着这个机会来回顾回顾 scanf() 的用法,这篇文章不仅是给朋友写的,也算是我个人的一个复习,希望不要误人子弟 (ゝ ∀・)
Linux 作为我的主力机已经有快半年时间了,从 Manjaro 到 Archlinux ,从 dwm 到 kde-kwin-tiling,从 Neovim + CoC 到 VSCode-Neovim 插件,充分说明了什么叫生命不息,折腾不止,渐渐地我已经完全适应了 Linux 下的生活,也构建起来一套自己的工作流,除了玩游戏,很少再打开磁盘上的 window。
尽管 Linux 的高自定义度非常对我胃口,但对于我这种较新的机器(Lenovo Legion R9000P)来说,硬件驱动始终是个硬伤,就比如最近在 Linux-lts、nvidia-lts 更新到 5.15.24 之后,我的电脑才能正常地调节亮度,此前我一直用的是自己写的蹩脚 xrandr 脚本,依靠改变 Color Channel 来对亮度进行伪调节。
大概也是因为驱动的问题,在我的机器上,Linux 的耗电速度比 windows 要快,还好有 tlp 能救一把,配合 kde plasma 自带的电源管理,我现在 Linux 的耗电速度已经基本和 windows 持平了,这里就记录一下我的 tlp 做了哪些配置。