鉴于我做这样的事情:
void glOrtho( GLdouble left,
GLdouble right,
GLdouble bottom,
GLdouble top,
GLdouble nearVal,
GLdouble farVal);
结果是:http://www.opengl.org/sdk/docs/man/xhtml/glOrtho.xml w我可以得到一个像这样的矩阵:
http://cairographics.org/manual/cairo-matrix.html
我尝试了这个:
cairo_matrix_t mat;
mat.xx = 2 / (right - left);
mat.yx = 0;
mat.xy = 2 / (top - bottom);
mat.yy = 0;
mat.x0 = 0;
mat.y0 = 0;
cairo_set_matrix(cr,&mat);
但这没有用。我如何才能达到GlOrtho在开罗制作的矩阵?
谢谢
最佳答案
我不知道开罗,所以如果有更好的答案,我会删除答案。
根据开罗的文档:
x_new = xx * x + xy * y + x0;
y_new = yx * x + yy * y + y0;
当您使用OpenGL时,公式类似于:(
m
是矩阵)x_new = m(1,1) * x + m(1,2) * y + m(1,3) * z + m(1,4)
y_new = m(2,1) * x + m(2,2) * y + m(2,3) * z + m(2,4)
z_new = m(3,1) * x + m(3,2) * y + m(3,3) * z + m(3,4)
(请注意,为简单起见,我没有提及第四个坐标)
因此,您要做的就是简单地匹配两个公式:
mat.xx = 2 / (right - left);
mat.yy = 2 / (top - bottom);
mat.xy = 0;
mat.yx = 0;
mat.x0 = -(right + left) / (right - left);
mat.y0 = -(top + bottom) / (top - bottom);
请尝试这个
关于c++ - GlOrtho矩阵的开罗矩阵等价物?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3589517/