关于opengl二维图形旋转的问题
我现在已经画好了一条直线,现在怎么以鼠标点击的一点为中心直线绕其旋转啊!急!期末作业啊!希望大家帮忙!是二维的!二维的我已经做好了呵呵原来书上有的!谢谢各位帮忙,能否给个...
我现在已经画好了一条直线,现在怎么以鼠标点击的一点为中心直线绕其旋转啊!急!期末作业啊!希望大家帮忙!是二维的!
二维的我已经做好了呵呵原来书上有的!谢谢各位帮忙,能否给个三维图形的旋转或者观察有3个视角的那种! 展开
二维的我已经做好了呵呵原来书上有的!谢谢各位帮忙,能否给个三维图形的旋转或者观察有3个视角的那种! 展开
3个回答
展开全部
可以先设置旋转矩阵,再左乘平移矩阵(平移到这个点的), 再用glloadmatrix即可。
当然你也可以用gltranslate + glrotate不过注意次序,这个用的是是惯性坐标
第二种方案
glLoadIdentity();
glTranslate(鼠标位置,注意windows和你的gl坐标之间的转换);
glRotate(0,0,z当前的选择角, 如果需要动画,就要不断跟新);
绘制直线
第一种方案: z为本帧动画中,直线绕自己中心旋转的角度
cos(z) -sin(z) 0 0
sin(z) cos(z) 0 0
0 0 1 0
0 0 0 1
乘以
1 0 0 直线中点x
0 1 0 直线中点y
0 0 1 0
0 0 0 1
让后取结果的转置矩阵,调用glLoadMatrix(),
最后再绘制直线即可
当然你也可以用gltranslate + glrotate不过注意次序,这个用的是是惯性坐标
第二种方案
glLoadIdentity();
glTranslate(鼠标位置,注意windows和你的gl坐标之间的转换);
glRotate(0,0,z当前的选择角, 如果需要动画,就要不断跟新);
绘制直线
第一种方案: z为本帧动画中,直线绕自己中心旋转的角度
cos(z) -sin(z) 0 0
sin(z) cos(z) 0 0
0 0 1 0
0 0 0 1
乘以
1 0 0 直线中点x
0 1 0 直线中点y
0 0 1 0
0 0 0 1
让后取结果的转置矩阵,调用glLoadMatrix(),
最后再绘制直线即可
墨刀Modao
2024-12-05 广告
2024-12-05 广告
在制作原型图时,可以选择多种软件工具来满足不同的需求和偏好。以下是一些常见的原型图软件:墨刀 :墨刀是一款在线原型设计工具,界面友好,易于上手,适合产品经理快速创建移动应用和网页的低保真原型。其协作功能便于团队实时共享设计和反馈。Sketc...
点击进入详情页
本回答由墨刀Modao提供
展开全部
三维就不能以你鼠标的位置为中心旋转了,因为程序判断不了鼠标所在的深度,自然就确定不了鼠标的三维位置。但是可以让他绕一个固定的点旋转
glTranslatef(a, b, c);//将当前点(a,b,c)作为旋转中心
glRotatef(m_fxAngle, 1.0f, 0.0f, 0.0f);//绕x轴旋转,m_fxAngle为旋转角度
glRotatef(m_fzAngle, 0.0f, 0.0f, 1.0f);//绕z轴旋转,m_fzAngle为旋转角度
glTranslatef(a, b, c);//将当前点(a,b,c)作为旋转中心
glRotatef(m_fxAngle, 1.0f, 0.0f, 0.0f);//绕x轴旋转,m_fxAngle为旋转角度
glRotatef(m_fzAngle, 0.0f, 0.0f, 1.0f);//绕z轴旋转,m_fzAngle为旋转角度
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
其实一个三维的工作台就可以实现绘图功能,你把Z轴换成汽缸就可以了!市场上这样的成型产品也很多,原理也相识,你可以去了解一下雕刻机!硬件部分就这样,关键是软件部分的效果!
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询