opengl中的旋转

发布于 2024-11-16 10:03:20 字数 304 浏览 1 评论 0原文

我有一个平面,我想绕 y 轴旋转它。平面坐标位于:

Vec4f(-1,-1, -5, 1),
Vec4f( 1,-1, -5, 1),
Vec4f( 1, 1, -5, 1),
Vec4f(-1, 1, -5, 1),

我只想让平面旋转,而不是绕圈,所以我将其平移回原点 a 然后进行旋转:

glTranslatef(0,0,-5);
glRotatef(50.0*t, 0, 1, 0);

draw(plane);

但平面仍然绕原点转一圈。我做错了什么?

I have a plane and I want to rotate it around the y axis. The planes coordinates are in:

Vec4f(-1,-1, -5, 1),
Vec4f( 1,-1, -5, 1),
Vec4f( 1, 1, -5, 1),
Vec4f(-1, 1, -5, 1),

I just want the plane to rotate, not go around in circles, so I translate it back to origin a then do the rotation:

glTranslatef(0,0,-5);
glRotatef(50.0*t, 0, 1, 0);

draw(plane);

But the plane still makes a circle around the origin. What am I doing wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

扬花落满肩 2024-11-23 10:03:20

转换以与乘法相反的顺序应用,而且您可能希望转换回它的来源。所以像这样改变它:

translation = -5;
if(translate_back) glTranslatef(0,0,-translation);
glRotatef(50.0*t, 0, 1, 0);
glTranslatef(0,0,+translation);

Transformations apply in the opposite order in which you multiply them, also you might want to translate back to where it came from. So change it like this:

translation = -5;
if(translate_back) glTranslatef(0,0,-translation);
glRotatef(50.0*t, 0, 1, 0);
glTranslatef(0,0,+translation);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文