关于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(),
最后再绘制直线即可
东莞大凡
2024-11-19 广告
2024-11-19 广告
标定板认准大凡光学科技,专业生产研发厂家,专业从事光学影像测量仪,光学投影测量仪.光学三维测量仪,光学二维测量仪,光学二维测量仪,光学三维测量仪,光学二维测量仪.的研发生产销售。东莞市大凡光学科技有限公司创立于 2018 年,公司总部坐落于...
点击进入详情页
本回答由东莞大凡提供
展开全部
三维就不能以你鼠标的位置为中心旋转了,因为程序判断不了鼠标所在的深度,自然就确定不了鼠标的三维位置。但是可以让他绕一个固定的点旋转
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轴换成汽缸就可以了!市场上这样的成型产品也很多,原理也相识,你可以去了解一下雕刻机!硬件部分就这样,关键是软件部分的效果!
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询