求教OPENGL中使用鼠标选取矩形进行缩放的问题

Snow_1980 2007-08-09 08:19:58
在三维视图中,使用鼠标选取矩形区域进行放大或缩小操作,若保持模型矩阵不变,投影矩阵是如何变化的?
若保持投影矩阵不变,模型矩阵又该是如何变化的?

困扰了很长时间了,请大家指点一下……
...全文
381 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Snow_1980 2007-08-13
  • 打赏
  • 举报
回复
有些道理……

不过使用glulookat(),我该如何计算得出新的坐标位置……

晕了,晕了……
emptyness 2007-08-13
  • 打赏
  • 举报
回复
两部分.
1
考虑一个矩形(大小为x) 你距离它y等于什么时候覆盖满整个窗口..
这个通过你的投影函数和视口设置函数 就可以算出来..几何问题.
到时候我们的glulookat()就走到这里..

2.
获得鼠标所截的窗口坐标,这个简单..
然后再通过gluproject获得openGL模型坐标..
//这个你可以百度下这个函数的用法,我用它每次都很不成功..网上关于它的讨论很多.查查.
然后确定鼠标所化的矩形的位置...
emptyness 2007-08-12
  • 打赏
  • 举报
回复
所以楼上兄弟的那个相当于你人走到靠近那个矩形的地方的方法是行不通的。

.....

我这个方法的意思就是说 将模型矩阵变换.....(晕). 使用glulookat();能实现走路功能...

我想说的是,呃/.
比如说cs...
你看到墙上有个图标, 你现在想把这个图标放大点(不知道是不是你的本意)...
最直接的办法就是人向前走...站在图标面前...这样图标就很大咯..甚至覆盖了你的窗口全部..
所以办法就是让人站在鼠标所分割那个矩阵的面前...我倒觉得郁闷的地方估计会是 程序获得鼠标分割的矩阵在openGL中的坐标是什么.. 这个才是难的地方..

Snow_1980 2007-08-10
  • 打赏
  • 举报
回复
具体功能就是像二维图像的矩形缩放一样,用鼠标选取一个矩形区域,然后放大或缩小该矩形区域。

现在有个问题,系统已经将投影矩阵固定死了,所以只能通过修改模型矩阵的方式来进行缩放,所以楼上兄弟的那个相当于你人走到靠近那个矩形的地方的方法是行不通的。

我现在采取的是计算出选取矩形的中心点和与当前窗口的比率,然后平移模型到矩形中心点再进行缩放,出现的问题是Z轴也有缩放,于是出现了选取的区域有一部分显示在了窗口外部,给人一种缩放效果不精确的感觉。

效果好当然还是直接修改投影矩阵比较好,我就是想请教一下有没有修改模型矩阵的方法,能和去修改投影矩阵有一样的效果~
emptyness 2007-08-10
  • 打赏
  • 举报
回复
具体想要什么样的功能
emptyness 2007-08-10
  • 打赏
  • 举报
回复
使用鼠标选取矩形区域进行放大或缩小操作,

要求窗口全部显示 你鼠标所选的矩形吗??

那不就相当于 你人走到靠近那个矩形的地方么????

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧