2017-08-06 100 views
0

我想用opengl绘制弧线。圆弧应从特定点开始,并在给定点结束。给定半径,圆弧中心和弧长,起始角度和结束角度。 我曾尝试以下功能:如何在opengl中以给定的起点绘制弧线?

for (double theta = start_angle1; theta < end_angle1; theta += angle_increment) 
    { 
     glVertex2f((arcCenX+ r * sinf(theta)),(arcCenY+ r * cosf(theta))); 
    } 

此功能使弧正常,但引弧点是不同的。 如何指定弧的起点?

编辑:我也有试过这个

  for (angleIndex = 0; angleIndex < arc_len; angleIndex = 
       angleIndex+arcSegmentIndex) 
         { 

         glVertex2f((x + (cosf(start_angle1 + angleIndex 
         ))* r), (y + (sinf( 
         start_angle1 + angleIndex))* r)); 
         } 

但是这也不能正常工作。

回答

1

应该

glVertex2f((arcCenX+ r * cosf(theta)),(arcCenY+ r * sinf(theta))); 

其bascially圆的参数方程,从而

x = r cos(0) 
y = r sin(0) 

其中 “R” 是圆的半径。你有你的X和Y坐标交换也许这是什么原因造成的问题。

编辑: - 要清除它,起弧点取决于您输入的第一个theta值。因此,如果例如第一个进入theta的值是90度,那么电弧直接从中心开始距离r处的圆圈。

+0

我仍然收到相同的错误。 – Yashu

+0

@Yashu - 你说的圆弧起点究竟是什么意思呢?如果你想控制弧开始的位置,你必须控制theta的初始值。 –