gpt4 book ai didi

opengl - 四元数 -> 矩阵 [16] - 好的,现在呢? (如何从四元数显示对象?)

转载 作者:行者123 更新时间:2023-12-04 06:42:57 24 4
gpt4 key购买 nike

我在四元数中有对象的旋转和平移,我已将其转换为矩阵 [16]。

我如何将该矩阵提供给 OpenGL?我想我可以用我的新花式裤子矩阵 glLoadMatrix() ,一切都会好起来的,但我得到了一个空白屏幕。

(我有点像 GL n00b,所以请慢慢输入并使用小字;)

我的代码看起来像这样:

glPushMatrix();

[quaternion makeIdentity]; // reset quat
[quaternion setPitch: rotation.x yaw: rotation.y roll: rotation.z]; // Set up with rotation coords (NOTE: setPitch:yaw:roll: is smart about degrees->radians)

GLdouble matrix[16];
[quaternion matrix: &matrix[0]]; // get quat -> matrix
matrix[12] = location.x; // fill in the translation
matrix[13] = location.y;
matrix[14] = location.z;

glLoadMatrixd(matrix);

glScaled(scale.x, scale.y, scale.z);

// draw geometry here -- snip

glPopMatrix();

我想我已经很接近了,但是当我使用这段代码时,我得到了一个空白显示(一切都是 glClearColor。)

注意:当我跳过四元数部分并执行以下操作时:
glPushMatrix();

glTranslatef(location.x, location.y, location.z);

glRotated(rotation.z, 0, 0, 1.0);
glRotated(rotation.x, 1.0, 0, 0);
glRotated(rotation.y, 0, 1.0, 0);

// draw geometry here -- snip

glPopMatrix();

显示符合预期。唯一的问题是我的旋转很奇怪,因为是按顺序应用的。因此我希望使用四元数。

最佳答案

如果您没有忘记将当前矩阵模式设置为 GL_MODELVIEW ,您的矩阵应该正确加载。检查您的 quat -> 矩阵计算。我将从零角度旋转开始并将结果与​​单位矩阵进行比较。

关于opengl - 四元数 -> 矩阵 [16] - 好的,现在呢? (如何从四元数显示对象?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4021004/

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