青城豪生国际酒店 小姐:告诉你一个最适用的方法
来源:百度文库 编辑:偶看新闻 时间:2024/09/21 08:59:52
不要使用opengl自带的移动旋转,缩放矩阵函数,而是自己写矩阵,这样灵活多了。
最后使用glMultMatrixd()这个函数,就可以了。
可以这样做,首先是位置变换,当点击画面上一个图片的时候,把这个图片的位置保存到一个矩阵中,
如果图片的位置是(x,y,z,1)的话,那么矩阵T为
1,0,0,x
0,1,0,y
0,0,1,z
0,0,0,1
然后再做一个缩放矩阵S
x,0,0,0
0,y,0,0
0,0,z,0
0,0,0,1
其中x,y,z是可以任意给的变量
然后再做旋转矩阵,如果使用四元数的话,要方便一些,但是四元数的类和四元数转换为矩阵的操作都要自己写,如果使用欧拉角的话,这里就分别做3个矩阵,然后再相乘。
旋转矩阵是怎样的楼主自己看书,任何一本计算机图形学的书都有的,假设现在分别绕x,y,z轴的矩阵都有了,Rx,Ry,Rz
那么现在只要把这些矩阵合在一起,做一个刚体变换矩阵M就可以了。
那么
M = T × Rx×Ry×Rz ×S
最后在使用opengl的函数glMultMatrixd(M),就可以了
这里要注意的是,opengl中的矩阵是以一维数组的形式保存的,所以这里的M,也要是个一维的数组,矩阵乘法楼主自己写一个就是了,不复杂。只是要注意M中元素的保存顺序
M0, M1, M2, M3
M4, M5, M6 ,M7
M8, M9, M10,M11
M12,M13,M14,M15
要这样保存,然后对操作的图片应用这个矩阵就可以了。
glPushMatrix();
glMultMatrixd(M);
// 显示图片的代码
glPopMatrix();
最后使用glMultMatrixd()这个函数,就可以了。
可以这样做,首先是位置变换,当点击画面上一个图片的时候,把这个图片的位置保存到一个矩阵中,
如果图片的位置是(x,y,z,1)的话,那么矩阵T为
1,0,0,x
0,1,0,y
0,0,1,z
0,0,0,1
然后再做一个缩放矩阵S
x,0,0,0
0,y,0,0
0,0,z,0
0,0,0,1
其中x,y,z是可以任意给的变量
然后再做旋转矩阵,如果使用四元数的话,要方便一些,但是四元数的类和四元数转换为矩阵的操作都要自己写,如果使用欧拉角的话,这里就分别做3个矩阵,然后再相乘。
旋转矩阵是怎样的楼主自己看书,任何一本计算机图形学的书都有的,假设现在分别绕x,y,z轴的矩阵都有了,Rx,Ry,Rz
那么现在只要把这些矩阵合在一起,做一个刚体变换矩阵M就可以了。
那么
M = T × Rx×Ry×Rz ×S
最后在使用opengl的函数glMultMatrixd(M),就可以了
这里要注意的是,opengl中的矩阵是以一维数组的形式保存的,所以这里的M,也要是个一维的数组,矩阵乘法楼主自己写一个就是了,不复杂。只是要注意M中元素的保存顺序
M0, M1, M2, M3
M4, M5, M6 ,M7
M8, M9, M10,M11
M12,M13,M14,M15
要这样保存,然后对操作的图片应用这个矩阵就可以了。
glPushMatrix();
glMultMatrixd(M);
// 显示图片的代码
glPopMatrix();
最舒服最适用不用避孕套的避孕方法是什么方法???
最适用的智能手机
问一个不想告诉你他名字的人的名字的方法。
推荐一个普通人最适用的医疗保险,谢谢。
求求你告诉戒烟方法
脑血栓的治疗方法?(不告诉你偿命!)
告诉你最讨厌的一句话(有追加分!)
你心底最深的秘密会告诉谁?
我想问一下,忘记一个你曾经爱过人的最有效的方法是什么?
告诉大家一个好方法
请告诉一个实用的快速止血的方法
紧急求知!大家告诉一个快速瘦大腿的方法吧!
跪求一个显卡驱动和最适用的ATI催化剂..
把你看过的最让你感动的,最精彩的,和最搞笑的电影告诉大家!谢谢!
大学生适用的护肤方法(产品)
便宜又简单适用的美容方法
避孕的方式有哪些最适用?
现在的手机什么型号最适用
怎样选择自己最适用的护肤品
6100集成显卡最适用的驱动程序版本?
先在最适用的英文输入法是什么?
最适用的日常减肥法?
求最适用的正版杀毒软件
<告诉你一个真实的韩国>作者是谁