2011-12-02 84 views
-2

目前,我在openGL中有一个具有多个坐标系的太阳系。也就是说,太阳有自己的轨道坐标系,用于围绕轨道运行的行星以及代表太阳的圆的自身坐标系。每个行星都有自己的轨道CS和CS。图形 - 从世界坐标确定TRIANGLE_FAN圆和局部坐标的半径

我使用GL_TRIANGLE_FAN为行星制造球体。

然后,当我收到鼠标坐标时,我使用glUnProject将它们从窗口转换为世界坐标。然后,我尝试将这些世界坐标转换为本地坐标,以确定鼠标点击是否在行星形状内。如果是这样,它输出星球的名字 - 难的部分是让星球点击识别工作。

我似乎无法弄清楚如何正确地做到这一点。我使用的公式如果((pow(target_LCS [0],2)+ pow(target_LCS [1],2))< pow(radius,2))看起来没有正常工作,而不是确定点击是否在形状中,它从来就不是真的。我也不知道如何用TRIANGLE_FAN正确确定半径。

回答

0

OpenGL对对象一无所知。当你用GL_TRIANGLE_FAN创建一个球体时,你必须有代码告诉opengl在哪里绘制球体以及半径是多少。如果你想做交叉测试,你需要跟踪行星半径和行星位置你自己。所以只需使用绘图代码中指定的位置和半径。