4

完全な円を描くために完全に機能するこのメソッドを使用します(メモリから書いたコードテキストのタイプミスかもしれません):

drawCircle(GLAutodrawble drawble){
  GL gl = drawble.getGL();
  gl.glTranslatef(0.0f,0.0f,-7.0f);
  gl.glBeginf(GL_LINE_LOOP);
  gl.glColorf(0.0f,0.0f,0.0);
  final dobule  PI = 3.141592654;
  double angle = 0.0;
  int points = 100;
  for(int i =0; i < points;i++){
    angle = 2 * PI * i / points;
    gl.glVertexf((float)Math.cos(angle),(float)Math.sin(angle));
  }
  gl.glScalef(1.0f,1.0f,0.0f);
  gl.glEnd();
}

同じ原則を使用して、半円を作成するメソッドを作成したいのですが、cos sin のものをどうすればよいかわかりません。誰でも見て、私を助けることができますか?

問題を見てくれたすべての人に感謝します!

4

3 に答える 3

5

交換 :

angle = 2 * PI * i / points;

と :

angle = PI * i / points;

2*PI は完全な円である 360 (度単位) であるため、2 乗数を削除したことに注意してください。PI (180 度) は半円

于 2012-05-13T08:40:52.657 に答える
2

この行を変更します。

angle = 2 * PI * i / points;

これに:

angle = 1 * PI * i / points;
于 2012-05-13T08:41:04.777 に答える
0

円を描くことは、それらをつなぐ線を描くことに似ています。また、スムーズな曲線を作成するには、ポイントが互いに近すぎる必要があります。次のコードを使用して、opengl で半円を描画できます。

 float PI = 3.14
 float step=5.0;// How far is the next point i.e it should be small value
 glBegin(GL_LINE_STRIP)
 for(float angle=0.0f,angle<=180; angle+=step)
 {
    float rad  = PI*angle/180;
   x  = centerX+radius*cos(rad);
   y  = centerY+radius*sin(rad);
   glVertex(x,y,0.0f);

}
glEnd();
于 2012-11-03T06:15:44.113 に答える