关于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(),
最后再绘制直线即可
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
展开全部
三维就不能以你鼠标的位置为中心旋转了,因为程序判断不了鼠标所在的深度,自然就确定不了鼠标的三维位置。但是可以让他绕一个固定的点旋转
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轴换成汽缸就可以了!市场上这样的成型产品也很多,原理也相识,你可以去了解一下雕刻机!硬件部分就这样,关键是软件部分的效果!
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询