参考了一下两篇博客:
http://blog.youkuaiyun.com/zhongjling/article/details/8488844
http://blog.youkuaiyun.com/lyx2007825/article/details/8792475
视图概念的理解
整个过程说的非学术点的话,就是一个向量与几个矩阵相乘后,得到另一个向量,那么这个向量就是你想要的结果。
完成代码
说明:用的是freeglut glew库,由于最近正用opencv,为了偷懒所以矩阵的运算用的是opencv2里的mat。当然,自己改用数组的运算也是可以的。
#include <vgl.h>
#include <opencv2/core/core.hpp>
#include <iostream>
#include <vector>
using namespace std;
using namespace cv;
GLfloat g_x = 7, g_y = 6, g_z = 4;
GLint viewport[4] = { 0 };
GLdouble modelview[16] = { 0.0f };
GLdouble projection[16] = { 0.0f };
Mat arr2mat(double *arr, int n){
vector<float> mvec;
for (int i = 0; i < n; i++)
mvec.push_back(arr[i]);
Mat mat = Mat(mvec).reshape(1, 4).t();
return mat;
}
void init() {
glClearColor(0.0, 0.0, 0.0, 0.0);
glEnable(GL_DEPTH_TEST);
}