Flaker
@Flaker

(C++, GLUT) Рисование круга. Из-за чего несоответствие между радиусом и позицией?

Использую GLUT для рисования 2D графики.

Рисую круг:
double _tmpPoint;
    glBegin(GL_TRIANGLE_FAN);
		glVertex2f(posX, posY);
		for( int i = 0; i <= radius; i++ ) 
		{
			_tmpPoint = (float)i / radius * 3.1415f * 2.0f;
			glVertex2f(posX + cos(_tmpPoint) * (radius / 10), 
				posY + sin(_tmpPoint) * (radius / 10));
		}
    glEnd();


Собственно, круг рисуется как надо, но когда устанавливаю позицию x=radius и y=radius, круг устанавливается на позицию равную 10 радиусам.

Грубо говоря:
// Устанавливается не так, как надо
Ball->setPosition(Ball->getRadius(), Ball->getRadius());

//Устанавливается верно:
Ball->setPosition(Ball->getRadius() / 10, Ball->getRadius() / 10);


Остальные объекты (Прямоугольники) отрисовываются нормально.

В чем может быть проблема?
  • Вопрос задан
  • 7028 просмотров
Решения вопроса 1
WNeZRoS
@WNeZRoS
glVertex2f(posX + cos(_tmpPoint) * (radius / 10), 
                posY + sin(_tmpPoint) * (radius / 10));

У вас в вычислении координат используется не сам радиус, а радиус делённый на 10.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы