OpenGL glTranslate and glRotate
我需要一个将
有人知道像
有成千上万的免费矩阵类。有一个狩猎谷歌搜索,然后您可以设置平移和旋转,而根本不使用gl *功能...
编辑:如果您真的只想创建矩阵而不使用多于方便的矩阵类,则可以如下定义glRotatef(angle,x,y,z):
1 2 3 4 5 6 7 | const float cosA = cosf( angle ); const float sinA = sinf( angle ); float m[16] = { cosA + ((x * x) * (1 - cosA)), ((x * y) * (1 - cosA)) - (z * sinA), ((x * z) * (1 - cosA)) + (y * sinA), 0.0f, ((y * x) * (1 - cosA)) + (z * sinA), cosA + ((y * y) * (1 - cosA)), ((y * z) * (1 - cosA)) - (x * sinA), 0.0f, ((z * x) * (1 - cosA)) - (y * sinA), ((z * y) * (1 - cosA)) + (x * sinA), cosA + ((z * z) * (1 - cosA)), 0.0f, 0.0f, 0.0f, 0.0f, 1.0f }; |
摘自维基百科。
翻译矩阵真的很容易创建:glTranslatef(x,y,z)的定义如下:
1 2 3 4 5 | float m[16] = { 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, x, y, z, 1.0f }; |
您可以非常轻松地查找矩阵乘法和矩阵向量乘法。
为了使您的生活变得简单,您可以下载一个矩阵类,为您完成所有这些工作...
在这里,您可以找到有关使用矩阵进行转换的一般信息。
在这里,您可以找到执行矩阵乘法(缩放,旋转或其他操作)的示例和完整函数。它是用目标C编写的,但是用c ++重写它应该不难。