У меня есть какой-то проект OpenGL 3D с цилиндрами, мне нужен цилиндр для проецирования круга (или овала) на мою поверхность.
Теперь я использую:
org.lwjgl.util.glu.Cylinder cyl = new org.lwjgl.util.glu.Cylinder();
glColor4f(1.0f, 1.0f, 0.0f, 0.60f);
glTranslatef((float) (0.55f - (25.0 / 58.0)), 0.05f, 0f);
glRotatef(rot, 0f, -1f, -1f);
glRotatef(25, 0f, 1f, 0f);
cyl.draw(0.1001f,
0.1001f,
0.75f,
50,
50);
Disk disk = new Disk();
disk.draw(0f, 0.1f, 50, 50);
cylFacetDraw();
glColor4f(1.0f, 1.0f, 0.0f, 0.60f);
glTranslatef(0f, 0, 0.75f );
Disk disk2 = new Disk();
disk2.draw(0f, 0.1f, 50, 50);
//project onto my surface
glTranslatef(0, 0f, -0.75f - 0.05f);
glRotatef(25, 0f, -1f, 0f);
Disk disk3 = new Disk();
disk3.draw(0f, 0.1f, 50, 50);
Но это только проецирует круг, который не смещается правильно, если цилиндр вращается или поднимается, а также не становится овальным, как это видно на скриншоте:
Есть ли какие-нибудь способы сделать полную проекцию цилиндра на поверхность?