我正在尝试在OpenGl和C ++中实现移动和旋转多边形
移动和旋转沿XZ平面(仅2D变换)
多边形由中心点和一组顶点定义,这些顶点的坐标存储为距中心点的偏移量
通过简单地将移动的距离添加到中心点并通过将偏移值添加到中心坐标来更新顶点,基于用户的按键在X或Z方向上移动多边形。
通过使用glRotatef()函数实现相对于中心点的旋转
但我需要知道碰撞检测计算的顶点坐标。
有没有机会只检索变换多边形的顶点坐标而不自己执行矩阵运算?
答案 0 :(得分:2)
是否有可能只检索变换多边形的顶点坐标......
OpenGL不是数学库。它仅用于绘图。此外,固定功能OpenGL的矩阵操作功能已经过时,已经从OpenGL-3核心中删除了。
我自己不进行矩阵运算?
事实上,这是推荐的方法。请记住:OpenGL只是您的绘图工具,而不是3D渲染器 - 游戏 - 模拟 - 引擎 - 数学 - 几何 - 工具包。
答案 1 :(得分:2)
glRotatef函数创建一个矩阵,该矩阵与堆栈上存在的当前矩阵相乘,以获得屏幕上的旋转。即使你可以获得那个矩阵,你仍然需要将它与你的向量相乘以获得你想要的值,这就是你自己做数学所必须做的事情。就像datenwolf所说的那样,你最好自己创建一个数学库来执行操作2D或3d世界中物体所需的所有必要的东西。