绘制一个五角星中,五个角的坐标代码问题
我在绘制一个五角星,但是对其中确定五个角的代码理解不了,求大家帮忙解答下,代码如下,加粗部分就是确定五个角坐标的代码,另外就是想问下,为什么要进行坐标变换,原点设成(200,200)?
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class MyCanvas extends Canvas
{ static int pointX[]=new int[5],pointY[]=new int[5];
public void paint(Graphics g)
{
g.translate(200,200); //进行坐标变换,将新的坐标原点设置为(200,200)。
pointX[0]=0;
pointY[0]=120;
double arcAngle=(72*Math.PI)/180;
for(int i=1;i<5;i++)
{
pointX[i]=(int)(pointX[i-1]*Math.cos(arcAngle)-pointY[i-1]*Math.sin(arcAngle));
pointY[i]=(int)(pointY[i-1]*Math.cos(arcAngle)+pointX[i-1]*Math.sin(arcAngle));
}
g.setColor(Color.red);
int starX[]={pointX[0],pointX[2],pointX[4],pointX[1],pointX[3],pointX[0]};
int starY[]={pointY[0],pointY[2],pointY[4],pointY[1],pointY[3],pointY[0]};
g.drawPolygon(starX,starY,6);
}
public static void main(String args[])
{
Frame f=new Frame();
f.setSize(500,450);
f.setVisible(true);
MyCanvas canvas=new MyCanvas();
f.add(canvas,"Center");
f.validate();
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
PrintJob p=f.getToolkit().getPrintJob(f,"ok",null);
Graphics gr=p.getGraphics();
int starX[]={pointX[0]+125,pointX[2]+125,pointX[4]+125,pointX[1]+125,pointX[3]+125,pointX[0]+125};
int starY[]={pointY[0]+125,pointY[2]+125,pointY[4]+125,pointY[1]+125,pointY[3]+125,pointY[0]+125};
gr.drawPolygon(starX,starY,6);
p.end();
}
}