Как сделать проекцию из цилиндра? - PullRequest
0 голосов
/ 29 января 2020

У меня есть какой-то проект 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);

Но это только проецирует круг, который не смещается правильно, если цилиндр вращается или поднимается, а также не становится овальным, как это видно на скриншоте:

now

Есть ли какие-нибудь способы сделать полную проекцию цилиндра на поверхность?

...