2017-04-06 11 views
0

oepnGL javaで円を描く関数を作成しました。円周上に別の円を回転させたいのですか?円の円周上のオブジェクトをどのように回転させるのですか?

円を作成するための関数です。これを円周上に円を描くためにどのように変更するのですか?

たとえば、最初の円の中心座標点を使用して新しい円を作成しますか?

private void rotateAroundOz(GL2 gl, int r, double cx, double cy) { 
     int step = 1; 

     gl.glLineWidth(5); 
     gl.glBegin(GL.GL_LINE_LOOP); 
      for (int i=0; i<360; i+=step) { 
       gl.glColor3d(1, 0, 0); 
       gl.glVertex2d(cx + r * Math.cos(Math.toRadians(i)), cy + r * Math.sin(Math.toRadians(i))); 
      } 
     gl.glEnd(); 
    } 

答えて

0
あなたはちょうどあなたがあなたの新しい関数のパラメータとして positionOnCircumferenceInDegreesdrawnCircle_Radiusを追加することができますが、

cx + r * Math.cos(Math.toRadians(i)), cy + r * Math.sin(Math.toRadians(i))

// This is the attributes of the invisible circle: "PositionCircle" 
//that will gives you the circumference 
float positionCircle_Radius = 1.0; 
float positionCircle_CenterX = 0.0; 
float positionCircle_CenterY = 0.0; 

// This is actually the circle that you want to draw from the 
// "PositionCircle" 
int positionOnCircumferenceInDegrees = 90; 
float drawnCircle_Radius = 2.0; 
float drawnCircle_CenterX = positionCircle_CenterX + positionCircle_Radius * Math.cos(Math.toRadians(positionOnCircumferenceInDegrees)); 
float drawnCircle_CenterY = positionCircle_CenterY + positionCircle_Radius * Math.sin(Math.toRadians(positionOnCircumferenceInDegrees)); 

rotateAroundOz(gl, drawnCircle_Radius, drawnCircle_CenterX, drawnCircle_CenterY) 

から計算位置を使用して(rotateAroundOz()で)円を描画する必要が

(これは私の最初の応答です:それは分かりやすいと思っています)

関連する問題