日常照书敲代码

       最近,我在看一本《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,非诚勿扰哦!

转载于:https://my.oschina.net/lizupei/blog/768317

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值