(C++, GLUT) Рисование круга. Из-за чего несоответствие между радиусом и позицией? Использую GLUT для рисования 2D графики.
Рисую круг:double _tmpPoint;
glBegin(GL_TRIANGLE_FAN);
glVertex2f(posX, posY);
for( int i = 0; i setPosition(Ball->getRadius(), Ball->getRadius());
//Устанавливается верно:
Ball->setPosition(Ball->getRadius() / 10, Ball->getRadius() / 10);
Остальные объекты (Прямоугольники) отрисовываются нормально.
В чем может быть проблема?

21 Авг 2019 в 06:16
265 +1
0
Ответы
1

Проблема скорее всего заключается в том, что вы делите радиус на 10 при вычислении координат вершин круга. Замените radius / 10 на просто radius внутри функции glVertex2f:

_tmpPoint = floatfloatfloati / radius * 3.1415f * 2.0f;
glVertex2fposX+cos(tmpPoint)∗radius,posY+sin(tmpPoint)∗radiusposX + cos(_tmpPoint) * radius,
posY + sin(_tmpPoint) * radius
posX+cos(t mpPoint)radius,posY+sin(t mpPoint)radius
;

Таким образом, вы используете полный радиус для вычисления координат вершин круга, а не десятую часть радиуса. После этого установление позиции x=radius и y=radius должно работать корректно.

20 Апр 2024 в 13:21
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир