最近,我在看一本《java游戏编程与实践》的书籍,按照书上的代码敲了一个画扇形和六边形的小程序,但画六边形处有点小问题,希望有好心的道友给予指导。
书上代码如下:
class DrawPanel extends JPanel{
private int startAngle;
@Override
public void paint(Graphics g) {//绘制图形
// TODO Auto-generated method stub
int x1=50,y1=50,x2=50,y2=150;
int radius=100;//半径
int starAngel=-90;//起始角度
int arcAngle=180;//弧的角度
g.drawLine(x1, y1, x2, y2);//画线
g.drawArc(x1-radius/2, y1, radius, radius, starAngel, arcAngle);
Polygon p=new Polygon();
x1+=150; y1+=50;radius/=2;
for(int i=0;i<6;i++)
p.addPoint((int)(x1+radius*Math.cos(i*Math.PI/6)), (int)(y1+radius*Math.sin(i*2*Math.PI/6)));
g.drawPolygon(p);
}
}
然而运行结果确不尽人意:
据我推测主要是这句代码出了点小问题:
for(int i=0;i<6;i++)
p.addPoint((int)(x1+radius*Math.cos(i*Math.PI/6)), (int)(y1+radius*Math.sin(i*2*Math.PI/6)));
后来我没有用循环的方法确定每个点的位置,一个个点的确定点的位置,把这部分代码改了一下:
//for(int i=0;i<6;i++)
//p.addPoint((int)(x1+radius*Math.cos(i*Math.PI/6)), (int)(y1+radius*Math.sin(i*2*Math.PI/6)));
p.addPoint(150, 50);
p.addPoint(200,50);
p.addPoint(220, 90);
p.addPoint(200, 120);
p.addPoint(150, 120);
p.addPoint(130, 90);
g.drawPolygon(p);
这样总算画出了一个六边形,如果有道友知道循环那个算法是怎么回事,求指点一下,贫道数学不太好,坐标不太会算。
这是贫道的邮箱欢迎道友与我交流599490685@qq.com,非诚勿扰哦!