opengl怎么用鼠标实现魔方各层面的旋转,键盘旋转各面已经实现,求大神指点下
展开全部
这个要用ray tracing(光线跟踪)原理,在观测窗口点鼠标,camera位置和观察平面点击处形成一个直线,该直线在物理世界与你的魔方相交,交点就是你选中的魔方块。然后你就可以定义操作,比如拖动鼠标的时候按对应魔方轴(法线)旋转该层面,如果拖动鼠标和法线的交角小于45度也可以定义为旋转整个魔方体。
更多追问追答
追问
老大能不能详细点给个代码什么的,我这个是毕业设计,有点不懂鼠标的操作,键盘旋转都搞定了 就差这一个了
追答
鼠标操作很简单,直接用glut的鼠标回调函数就得到鼠标点击在观察平面的位置了,
void glutMouseFunc(void (*func)(int button, int state,
int x, int y));
ray tracing比较复杂,网上有很多例子是ray tracking到固定平面。对应魔方体没有现成的代码。因为魔方是个凸体,而且各个基本面还可能旋转。这个代码要自己做了。一个方法是用前面三个面和光线交点来定位,只要定位到魔方块,后面的旋转操作就简单了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询