2017-04-06 133 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

你必须使用你从

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) 

计算位置,以便您可以添加positionOnCircumferenceInDegreesdrawnCircle_Radius为参数,为您的新功能来画一个圆(与rotateAroundOz()) 。

(这是我对SO的第一个回应:希望它能被理解!)