Пример кода, который вы вставили, неполон, потому что вы не показали, как вы применяли эти вычисления через glRotate et al. Вот как бы я это сделал. Хотя вы, безусловно, могли бы оптимизировать его, выполнив матричные вычисления самостоятельно за один шаг, это, вероятно, не является необходимым.
// Move object out to its radius
glTranslatef(radius, 0, 0);
// Apply latitudinal rotation (aka "Yrot")
glRotatef(latitude, 0, 1, 0);
// Apply longitudinal rotation (aka "Xrot")
glRotatef(longitude, 0, 0, 1);
После этого вы можете сделать рисунок. Вы также захотите обернуть все это в вызовы к glPushMatrix
и glPopMatrix
, чтобы изолировать это преобразование.