目前,我有一个带有多个坐标系的openGL太阳能系统。也就是说,太阳有自己的轨道坐标系统,用于围绕它运行的行星和它自己的代表太阳的圆的坐标系。每个行星都有自己的轨道CS和CS形状。
我使用GL_TRIANGLE_FAN为行星制作球体。
然后,当我收到鼠标坐标时,我使用glUnProject将它们从窗口转换为世界坐标。然后,我尝试将这些世界坐标转换为本地坐标,以确定鼠标是否在行星形状内。如果是这样,它会输出行星的名称 - 困难的部分是让行星点击识别起作用。
我似乎无法弄清楚如何正确地做到这一点。如果((pow(target_LCS [0],2)+ pow(target_LCS [1],2))< pow(radius,2))似乎无法正常工作,我使用的公式为真。不是确定点击是否在形状中,而是永远不会。我也不知道如何用TRIANGLE_FAN正确确定半径。
答案 0 :(得分:0)
OpenGL对对象一无所知。使用GL_TRIANGLE_FAN
创建球体时,必须具有告诉opengl绘制球体的位置以及半径的代码。如果你想进行相交测试,你需要跟踪行星半径和行星位置你自己。所以只需使用从绘图代码中指定的位置和半径。