3.7[Q]CV
对于一个由cmake构建的项目,什么时候应该执行cmake指令?什么时候执行make指令?即,一个cmake构建的项目,各步骤的意义是什么?当我修改了部分代码后,重启项目该执行什么命令?
view,model,projection等三个矩阵的作用都是什么?进行运算时的先后顺序是什么?如果矩阵分别失效了,最后呈现的图像会发生什么变化?
对于这个代码来说,最初时,物体是怎样的?坐标是什么?什么叫处于局部坐标系?为什么经过model矩阵后就到世界坐标系了?
在代码中,indices是什么意思?
那一开始的时候,eye_pos的坐标也是局部坐标系下的吗?model矩阵是否作用于eye_pos?
完成文档中提到的提高项作业,并修改程序控制,添加能够对get_rotation进行自由测试的控制逻辑
Eigen::Matrix4f get_rotation(Eigen::Vector3f axis, float angle) {
// 归一化轴向量
Eigen::Vector3f n = axis.normalized();
float theta = angle * MY_PI / 180.0f;
float cos_t = cos(theta);
float sin_t = sin(theta);
Eigen::Matrix3f I = Eigen::Matrix3f::Identity();
Eigen::Matrix3f nnT = n * n.transpose();
Eigen::Matrix3f N;
N << 0, -n.z(), n.y(),
n.z(), 0, -n.x(),
-n.y(), n.x(), 0;
Eigen::Matrix3f R_3x3 = cos_t * I + (1 - cos_t) * nnT + sin_t * N;
Eigen::Matrix4f R = Eigen::Matrix4f::Identity();
R.block<3,3>(0,0) = R_3x3;
return R;
}
这个代码能实现旋转的背后原理是什么?详细解释?
"代码通过归一化轴向量n = axis.normalized()
确保旋转轴为单位向量,避免缩放效应。"什么是缩放效应?有什么后果?
“theta = angle * MY_PI / 180.0f
将角度转换为弧度”为什么要将角度转为弧度?角度与弧度有什么区别?
什么是罗德里格斯公式?详细解释原理?
罗德里格斯公式是怎么推导的?详细解释?
罗德里格斯公式推导过程及理解 - 零号原味机 - 博客园
v是如何分解到平行于k的分量和垂直于k的分量上的?为什么那两个式子就是?
什么是叉乘矩阵?为什么要定义旋转轴k的反对称矩阵?为什么?
nnT是什么?有什么意义?有什么用?
矩阵乘法的公式是什么?如何理解?
图形渲染(1)光栅化
什么叫“将透视视锥体“挤压”为长方体,实现近大远小的视觉效果”?为什么将透视视锥体挤压成长方体就能实现近大远小的效果?
从数学原理上推导这几个矩阵的由来?