Хорошо, у вас есть четыре значения, которые вам нужны для поворота в OpenGL:
- Theta - количество градусов в градусах
- Координата, относительно которой выполняется ротация
- Normal - вектор нормали, вращающийся вокруг - в данном случае (0.0f, 0.0f, 1.0f) - вектор, выходящий из экрана на ваше лицо, когда вы смотрите на звезду.
Тета, у вас есть - вы захотите сделать таймер или поместить его в поток событий / обратный вызов, чтобы его можно было обновлять, чтобы он продолжал вращаться - в противном случае вы поворачиваете его немного, и он остается таким же навсегда
Таким образом, вам нужно перевести (используя glTranslatef) координаты x и y центра звезды - это будет вращать звезду вокруг ее собственного центра - в отличие от вращения ее вокруг другой точки (например, перевести в центр другого объекта около звезды, вместо этого звезда будет вращаться вокруг этого объекта). Эти значения не нужно менять, если только не меняется звезда.
Нормальный вектор - это 3-я часть вращения - поскольку мы находимся в трех измерениях, мы должны указать, куда мы хотим, чтобы он вращался ... поэтому, если бы мы выбрали (1.0f, 0.0f, 0.0f) вместо той, о которой я упоминал ранее, звезда, казалось бы, сжимается, исчезает, а затем возвращается - она вращается вокруг оси на экране, но поскольку звезда вращается на 2d, вы начинаете видеть плоскую сторону, как если бы вы смотрели на край листа бумаги, вы даже не можете увидеть его там, если бумага достаточно тонкая. Это значение не нужно менять, если вы не хотите менять ось, вокруг которой оно вращается. Это, как говорится, это
Итак, у вас отличный код - просто используйте следующее для glRotatef:
gl11.glRotatef(theta,0.0f,0.0f,1.0f);
Удачи!