2013-11-30 3 views
1

Как рисовать полукруг в OpenGl? Я попытался это:Рисунок OpenGL

float step=5.0; 
glBegin(GL_LINE_STRIP); 
for(float angle=0.0f; angle <= 360; angle+=step) 
{ 
    float rad = 2*angle/180; 
    x = radius*sin(rad); 
    y = radius*cos(rad); 
    glVertex3f(x,y,0.0f); 

} 

glEnd(); 

, но я получил полукруг, который не по прямой line..it это inclined.How может я решить эту проблему?

+0

Что вы имеете в виду «не по прямой линии ... она склонна»? Как выглядят ваши проекционные и матричные модели? – user1118321

ответ

1

Ваше преобразование степеней в радианы неверно, вам нужно умножить свое значение степени на PI/180, чтобы получить правильное значение. И чтобы получить круг «вверх по кругу», замените свое использование функций sin и cos.

3

Ваш вопрос трудно понять, особенно последняя часть.

Если я правильно понимаю, что вы пытаетесь сказать, что вы рисуете что-то вроде этого:

http://www.mathopenref.com/images/circles/semiarc.png

Но то, что вы хотите, это:

http://abyss.uoregon.edu/~js/images/half_circle.gif

причина в том, что вы используете линию полоса, которая соединяет каждый сегмент линии, но не создает сегмент, который возвращается назад к первая точка. Вместо этого используйте GL_LINE_LOOP, и у вас будет полукруг, который «по прямой».

0

эти 2 функции нарисуйте 2 полукруга, 1 полна, а другой является полым. (В C++)

void drawLeftCircle() // the filled one 
{ 
    float radius = 70; 
    float twoPI = 2 * PI; 

    glBegin(GL_TRIANGLE_FAN); 

    for (float i = PI; i <= twoPI; i += 0.001) 
     glVertex2f((sin(i)*radius), (cos(i)*radius)); 

    glEnd(); 
    glFlush(); 
} 


void drawRightHalfCircle() // the empty one 
{ 
    float radius = 70; 
    float twoPI = 2 * PI; 

    glBegin(GL_POINTS); 

    for (float i = 0.0; i <= twoPI/2; i += 0.001) 
     glVertex2f((sin(i)*radius), (cos(i)*radius)); 

    glEnd(); 
    glFlush(); 
} 
Смежные вопросы