Рисование карманов бильярдного стола с использованием OPENGL GLUT

#opengl

#opengl

Вопрос:

Как следует из названия, я нарисовал остальную часть стола, просто возникли проблемы с рисованием карманов..

 #pragma region Table Drawing Code

void drawTable()
{

glBegin(GL_QUADS); // RIGHT
glNormal3f(0,0,1);
glColor3d(0.5,0.35,0.05);
glVertex3f(m_TableX, 0.0f, m_TableWidth); //bottom left
glVertex3f(m_TableLength, 0.0f, m_TableWidth);//bottom right
glVertex3f(m_TableLength, 0.0f, m_TableWidth);//top right
glVertex3f(m_TableX, 0.0f, m_TableWidth); //top left        
glEnd();

glBegin(GL_QUADS); //BACK
glNormal3f(1,0,0);
glColor3d(0.5,0.35,0.05);
glVertex3f(m_TableLength, 0.0f,  m_TableWidth);
glVertex3f(m_TableLength, 0.0f, m_TableZ);
glVertex3f(m_TableLength, 0.0f, m_TableZ);
glVertex3f(m_TableLength, 0.0f, m_TableWidth);
glEnd();

glBegin(GL_QUADS); //FRONT
glNormal3f(-1,0,0);
glColor3d(0.5,0.35,0.05);
glVertex3f(m_TableX, 0.0f, m_TableZ);
glVertex3f(m_TableX, 0.0f, m_TableWidth);
glVertex3f(m_TableX, 0.0f, m_TableWidth);
glVertex3f(m_TableX, 0.0f, m_TableZ);
glEnd();

glBegin(GL_QUADS); //lEFT
glNormal3f(0,0,-1);
glColor3d(0.5,0.35,0.05);
glVertex3f(m_TableX, 0.0f, m_TableZ);
glVertex3f(m_TableLength, 0.0f, m_TableZ);
glVertex3f(m_TableX, 0.0f, m_TableZ);
glVertex3f(m_TableLength, 0.0f, m_TableZ);
glEnd();

glBegin(GL_QUADS); //BOTTOM
glNormal3f(0,-1,0);
glColor3d(0.5,0.35,0.05);
glVertex3f(m_TableX, -0.001f,  m_TableWidth);
glVertex3f(m_TableLength, -0.001f,  m_TableWidth);
glVertex3f(m_TableLength, -0.001f, m_TableZ); 
glVertex3f(m_TableX, -0.001f, m_TableZ);
glEnd();


}

#pragma endregion
  

Я новичок в OpenGL, поэтому я не уверен, что использовать, чтобы получить кривую, которая соединена с подушками и отверстием в столе для падения мяча.

Комментарии:

1. Скриншоты того, что у вас есть, чего вы ожидаете и т.д.

2. flickr.com/photos/61783705@N06/5619348261/in/photostream Я новый пользователь, поэтому не могу опубликовать скриншот. Я хочу иметь возможность получить кривую, в которой пробелы в таблице

Ответ №1:

попробуйте использовать gluPartialDisk, чтобы нарисовать форму «C» для угла кармана, например

аннулировать диск () {

gluPartialDisk(gluNewQuadric(),1, 1.2, 10, 1, 0.0, -180); }

затем объявите disk(); в вашем методе рисования