0%

本文翻译自 OpenGL Projection Matrix,仅用于个人学习记录。

概述

计算机显示器是一个 2D 表面。由 OpenGL 渲染的 3D 场景必须被投影为计算机屏幕上的 2D 图像。GL_PROJECTION 矩阵被用于这个投影变换。首先,它将所有顶点数据从视觉坐标 (Eye Coordinates) 转换到裁剪坐标 (Clip Coordinates)。然后,将这些裁剪坐标分别除以裁剪坐标的 \(w\) 分量,转换为标准化设备坐标 (Normalized Device Coordinate, NDC)。

阅读全文 »

树的遍历:按照某种次序访问树中各节点,每个节点被访问恰好一次

遍历方法:

  • 深度优先:先访问子节点,再访问父节点。按照根节点相对于左右子节点的访问顺序,分为前序 (Pre-order)、中序 (In-order) 和后序 (Post-order)
  • 广度优先:层次遍历
阅读全文 »

四元数 (Quaternion) 是由爱尔兰数学家威廉·卢云·哈密顿在 1843 年提出的数学概念。从明确地角度而言,四元数是复数的不可交换延伸。相对于复数为二维空间,如果把四元数的集合考虑成多维实数空间,四元数就代表着一个四维空间。它可以用于描述现实空间的坐标。单位四元数 (Unit Quaternion) 可以用于表示三维空间中的旋转,它与常用的另外两种表示方式,即三维正交矩阵和欧拉角是等价的,但是避免了欧拉角表示法中的万向锁问题。

阅读全文 »

每次干起活儿来都感觉 15 英寸屏幕的 MacBook Pro 还是太小,所以前段时间买了台 26.9 英寸 QHD (2560 × 1440) 的三星。选这台显示器是因为它有 Type-C 口,一根线就可以解决视频、音频、充电以及数据传输,非常方便,实际用起来也是相当不错。但是看习惯了 MacBook Pro 的 Retina 屏,总觉得 macOS 在 2K 分辨率下点对点显示时颗粒感严重,边缘锯齿明显而且字也很糊。所以折腾了一下,强制 macOS 开启 1080P 的 HiDPI,虽然显示的内容少了一点,但是感观舒服了很多。

阅读全文 »

迫于打算用 ROS (Robot Operating System) 来玩机械臂,而 macOS 和 Windows 上的 ROS 依旧处于 Beta 阶段,所以又要折腾一番 Linux。观望了一段时间 Ubuntu 18.04,感觉应该稳定了,更重要的是 18.04 比 16.04 好看的多,所以又拿出了旧笔记本折腾 Linux,顺便做个记录,以备后用。

阅读全文 »

实验室的打印机连在群晖的 NAS 上,要使用打印机首先需要安装群晖助手。然而 macOS 版的群晖助手貌似并不支持打印……经过一段时间打印需要先把文件拷贝到 Windows 上的折磨之后,忽然想到如果能把 Windows 上的打印机共享成 AirPrint,就不需要额外安装驱动了,而且 iPhone 和 iPad 也可以直接使用。

阅读全文 »