Games101-Lecture 04 Transformation Cont

重点归纳:

  1. 3D 变换(以旋转为重点):
    • 绕x, y, z轴旋转矩阵的差别, 循环对称性(列向量顺序问题)
    • 旋转的分解以及欧拉角, Rodrigues’ Rotation Formula(绕过原点的轴的旋转)
    • 四元数, 主要为了旋转间的差值(课程无), 因为旋转矩阵不太适合作差值, 三角函数不是线性的, (15 + 25)/2 != 20
  2. Viewing 变换:
    • View(视图)/Camera 变换
    • 3D 到 2D 的投影变换(Orthographic/Perspective, 正交/透视)
  3. View 变换
    • 标准相机位置的定义
    • 相机和模型的一起变换
  4. 投影变换
    • 正交投影, 无近大远小
    • 简单的正交投影方法和常用的正交投影方法
    • 透视投影, 平行线会相交, 可以分解成”挤压”变换和正交投影变换
    • “挤压”变换的推导

Games101-Lecture 03 Transformation

重点归纳:

  1. 2D 变换:
    • 线性变换(Linear):缩放(scale)、切变(shear)、旋转(rotatrion)、镜像(Reflection)
    • 非线性变换:平移(translation)
    • 仿射变换(Affine): 线性变换 + 平移
  2. 齐次坐标
    • 用线性矩阵来描述上述所有的变换
    • 点与向量的表示
  3. 变换的组合与分解
    • 变换的先后顺序
    • 绕任意点的旋转

std::string() = "abc"
const int ** = int ** ?

const int ** = int ** ?

一直以来我都觉得自己的const完全学会了,直到我的朋友问了我一个问题我才知道我是学废了doge

本文包括判断const修饰内容的方法和标题行不通的原因


Parallel101-1.学C++从CMake学起
就像回到了从前——scanf是如何工作的

就像回到了从前——scanf是如何工作的

今天有个初学编程的朋友问了我一个关于scanf()的问题,大概就是对书上一段有关”%d%c”的解释不太明白,但作为 Cpp 学习者的我,老实说有一万年没有用过这个 C 函数了,虽说 printf()/scanf() 在开销上是比 C++ 的 cout/cin 要小的,但我其实连 cin 都不怎么用,刚好借着这个机会来回顾回顾 scanf() 的用法,这篇文章不仅是给朋友写的,也算是我个人的一个复习,希望不要误人子弟(ゝ∀・)


使用 tlp 来为 linux 省电

Linux 作为我的主力机已经有快半年时间了,从 ManjaroArchlinux ,从 dwmkde-kwin-tiling,从 Neovim + CoCVSCode-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 做了哪些配置。


Conda init 设置拖慢 shell 启动速度的解决方法

最近发现zsh的启动速度变慢了,经常打了几个字母,终端才缓过神来,导致我输入命令被打断,按理说不应该,毕竟我用的 Alaritty + zsh + zshfw 的组合,Alacritty使用GPU加速渲染,zimfw号称第三快的zsh配置框架,性能方面肯定是没问题的,那就只能是我.zshrc的问题了。

而恰巧我的.zshrc又比较精简,除了一点点必备的插件其他啥也没有,所以很快啊,我的目光聚焦在了 conda init 往我的配置文件里写的那几行上: