gpt4 book ai didi

c++ - OpenGL glTranslate 和 glRotate

转载 作者:搜寻专家 更新时间:2023-10-31 01:20:46 24 4
gpt4 key购买 nike

我需要一个函数来将类似 glTranslate() 的翻译应用于一个点。有人知道像 glTranslate()glRotate() 这样的函数可以修改和检索要相乘的矩阵吗?

最佳答案

有成千上万的free matrix classe在外面。在谷歌上搜索一下,然后您就可以设置平移和旋转,而无需使用 gl* 函数...

编辑:如果你真的只是想创建矩阵而不使用一个非常方便的矩阵类,那么你可以定义 glRotatef( angle, x, y, z ) 如下:

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
};

摘自 wikipedia .

平移矩阵非常容易创建:glTranslatef( x, y, z) 定义如下:

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
};

您可以很容易地查找矩阵乘法和矩阵 vector 乘法。

不过,为了简化您的生活,您可以只下载一个矩阵类,它会为您完成所有这些......

关于c++ - OpenGL glTranslate 和 glRotate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4439214/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com