opengl怎么用鼠标实现魔方各层面的旋转,键盘旋转各面已经实现,求大神指点下

 我来答
zt_archer
2015-04-13 · TA获得超过916个赞
知道小有建树答主
回答量:418
采纳率:0%
帮助的人:406万
展开全部
这个要用ray tracing(光线跟踪)原理,在观测窗口点鼠标,camera位置和观察平面点击处形成一个直线,该直线在物理世界与你的魔方相交,交点就是你选中的魔方块。然后你就可以定义操作,比如拖动鼠标的时候按对应魔方轴(法线)旋转该层面,如果拖动鼠标和法线的交角小于45度也可以定义为旋转整个魔方体。
更多追问追答
追问
老大能不能详细点给个代码什么的,我这个是毕业设计,有点不懂鼠标的操作,键盘旋转都搞定了 就差这一个了
追答
鼠标操作很简单,直接用glut的鼠标回调函数就得到鼠标点击在观察平面的位置了,
void glutMouseFunc(void (*func)(int button, int state,
int x, int y));

ray tracing比较复杂,网上有很多例子是ray tracking到固定平面。对应魔方体没有现成的代码。因为魔方是个凸体,而且各个基本面还可能旋转。这个代码要自己做了。一个方法是用前面三个面和光线交点来定位,只要定位到魔方块,后面的旋转操作就简单了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式