У меня есть функция, которая рисует круг.Проблема с радиусом круга OpenGL при рисовании квадрата
glBegin(GL_LINE_LOOP);
for(int i = 0; i < 20; i++)
{
float theta = 2.0f * 3.1415926f * float(i)/float(20);//get the current angle
float rad_x = ratio*(radius * cosf(theta));//calculate the x component
float rad_y = radius * sinf(theta);//calculate the y component
glVertex2f(x + rad_x, y + rad_y);//output vertex
}
glEnd();
Это работает денди. Я сохраняю значения x, y и радиуса в моем объекте.
Однако, когда я пытаюсь нарисовать квадрат следующего вызова функции:
newSquare(id, red, green, blue, x, (x + radius), y, (y + radius));
я получаю следующее изображение.
Как вы видите, площадь почти в два раза шире (больше похож на диаметр). Следующий код - это то, как я создаю квадрат. Как видите, он начинается в центре круга, в котором он должен. И должен растянуться до края круга.
glBegin(GL_QUADS);
glVertex2f(x2, y2);
glVertex2f(x2, y1);
glVertex2f(x1, y1);
glVertex2f(x1, y2);
glEnd();
Я не могу понять, почему это так!
Ваш код выглядит правильно (при условии, что 'ratio = 1'). Вероятно, вы установили неправильные параметры при построении круга. Очевидно, что обе переменные «radius» не совпадают. –
Мое соотношение - это ширина/высота родительского окна! Я буду исследовать. –
О, так вы делаете ручную проекцию. Вы должны оставить это в матрице проекции. Это гарантирует, что все объекты находятся в одной и той же системе координат. Например. у вас нет x-исправленного вашего квадроцикла. –