计算机图形学,computer-graphics,简称cg看了GAMES101-现代计算机图形学入门,做下笔记more2D和3D点的表示计算机图形学中有个有趣的表示,那就是用向量和他的冗余值来表示对象,举例子来说,[2,1,1]表示点(2,1),[2,1,0]表示向量(2,1),两者的不同在于后者的冗余表示为0.冗余值对于线性代数中的计算非常有帮助。比如下面就是一个先逆时针旋转45度,再移动(1,0)的例子。由于冗余1的存在,在线代计算中,变换矩阵的最后一列就有了意义。2D点旋转与移动用了Eigen作为线性代数运算库,官方文档为http://eigen.tuxfamily.org。下面我们要把一个点(2,1),先逆时针旋转45度,再平移(1,2),那么数学上的运算就是3个矩阵相乘。三维上会复杂点,但基本原理差不多。constexprdoublePI =3.1415926535;doubleangle =45;doubleradian = angle * PI /180.0f;Eigen::Vector3fp(2.0f,1.0f,1.0f);// 点(2,1)// 旋转Eigen::Matrix3f r3;
r3 << std::cos(radian), -std::sin(radian),0,
std::sin(radian), std::cos(radian),0,0,0
...
继续阅读
(36)