游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3167|回复: 4

[求助]关于局部坐标与整体坐标的问题(几乎让我崩溃)

[复制链接]

4

主题

7

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2004-10-24 16:58:00 | 显示全部楼层 |阅读模式
        为了方便观察我所绘制的三维有限元网格,我准备用鼠标来实现对图形的平移,旋转,缩放。具体如下:
       点击鼠标左键,拖动鼠标,抬起鼠标左键。通过鼠标在屏幕上拾取点间的距离与窗口大小与网格代表实际尺寸间的比例换算出网格在整体坐标下 X ,Y方向的平移。
       点击鼠标右键,拖动鼠标,抬起鼠标右键。通过鼠标在屏幕上拾取点间的距离与窗口大小与网格代表实际尺寸间的比例换算出网格在整体坐标下绕X轴方向旋转的角度,绕Y轴方向旋转的角度。
      我发现我用 glPushMatrix(),glPopMatrix(),glTranslated(),glRotated(),无论如何组合也达不到我的目的。举个例子如下(只给个大概流程):
1。 glPushMatrix();
         glRotated(rotatex,1.0,0.0,0.0);
      glPushMatrix();
         glRotated(rotatey,0.0,1.0,0.0);
      glPushMatrix();
         glTranslated(transx,transy,0.0);
      ..........
      glPopMatrix();
      glPopMatrix();
      glPopMatrix();
这样肯定不行,因围绕整体坐标 x周转完后,就绕局部坐标 y周转了!!!
2。glPushMatrix();
        glRotated(rotatex,1.0,0.0,0.0);
     glPopMatrix();
     glPushMatrix();
        glRotated(rotatey,0.0,1.0,0.0);
     glPopMatrix();
     glPushMatrix();
        glTranslated(transx,transy,0.0);
      .......
     glPopMatrix();
这样也不行,因为前两个旋转根没做一样!!!!
我还试过他们的其他组合,也不行!!!
不加glPushMatrix();glPopMatrix();也不行!!!!
归根到底,glRotated,glTranslated是对局部坐标操作!!!!是不是要用到其他的命令呢?
我不想通过调整观察角度的方法达到目的,那我应怎样做呢?!!!







139

主题

2005

帖子

2057

积分

金牌会员

Rank: 6Rank: 6

积分
2057
QQ
发表于 2004-10-24 19:36:00 | 显示全部楼层

Re:[求助]关于局部坐标与整体坐标的问题(几乎让我崩溃)

没看明白问题……

190

主题

1801

帖子

2096

积分

金牌会员

Rank: 6Rank: 6

积分
2096
QQ
发表于 2004-10-25 12:01:00 | 显示全部楼层

Re:[求助]关于局部坐标与整体坐标的问题(几乎让我崩溃)

你没理解push和pop,你那一堆pushpop,除了让你回去一开始的状态外,完全没有起作用

4

主题

7

帖子

7

积分

新手上路

Rank: 1

积分
7
 楼主| 发表于 2004-10-25 16:09:00 | 显示全部楼层

Re:[求助]关于局部坐标与整体坐标的问题(几乎让我崩溃)

     首先解释一下我所说的那个整体坐标是啥意识。它就是指以你的电脑屏幕为xy平面。向右
为x轴,向上y轴,朝你的是z轴。无论局部坐标怎么变,他都不变。而局部坐标的变指的就是
绕整体坐标的平移与旋转。大家动脑想一想,如果你能用鼠标左键与右键实现这一功能,那么
观察三维物体该是一件多么方便的事,openGL一定能实现这个功能!!只是我不知相应的命令
    我知道你是指我 2。那个例子中pop用的没用,但我想让局部坐标绕整体坐标x周转完后绕整体坐标y周转,我不pop出来行吗?但我这时还没画图(画了也没用,局部坐标还没到我指定给他的位置呢)。
   1。当然也不行。因为那只是绕局部坐标原点转!
   我到底该用什么样的命令啊?!!郁闷中~~~

190

主题

1801

帖子

2096

积分

金牌会员

Rank: 6Rank: 6

积分
2096
QQ
发表于 2004-10-25 23:09:00 | 显示全部楼层

Re: [求助]关于局部坐标与整体坐标的问题(几乎让我崩溃)

试试这样
glmatrixmode(gl_modelview)
glloadidentity()
glrotatef(,,,)转全局
glpushmatrix()
gltranslatef(,,,)去局部
glrotatef(,,,)转局部
glpopmatrix();
glrotate(,,,)转全局

建议参考图形学有关部门三维变换一章,看二维变换也行

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-22 23:04

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表