2014-10-08 47 views
0

我的意思是用五角形画出从顶点到中心的线条。这些'武器'正在绘制正确,但是当我尝试连接顶点时,它被错误地绘制。为了连接线条,我在循环中放置了另一个绘图函数,如下所示,它应该将绘制的第一条线的终点坐标作为起点,并绘制迭代中绘制的下一个“手臂”的终点坐标,作为其终点。我在这里错过了什么吗?我错误地在第二次抽签中使用'i +角度'?为什么这段代码不允许我连接绘图的顶点?

for (int i = 0; i < arms; i += angle) { 
      double endPointX = armLength * Math.cos(i*angle-Math.PI/2); 
      double endPointY = armLength * Math.sin(i*angle-Math.PI/2); 
      double endPointX2 = armLength * Math.cos((i+angle)*angle-Math.PI/2); 
      double endPointY2 = armLength * Math.sin((i+angle)*angle-Math.PI/2); 
      g2d.drawLine(centreX, centreY,centreX+ (int) endPointX,centreY+ (int) endPointY); 
      g2d.drawLine(centreX+ (int) endPointX,centreY+ (int) endPointY, (int) endPointX2,(int) endPointY2); 
     } 
+0

角度似乎是度。使用'double angleRad = Math.toRadians(angleDeg)'将角度转换为弧度,然后在任何三角函数中使用它,例如'sin'或'cos' – Marco13 2014-10-08 16:45:03

+0

它应该是'(i + 1)* angle' instad '第(i +角度)* angle' – Marco13 2014-10-08 16:55:13

回答

0

我在PolygonFactory此here解决

抽象地,生成具有n个点正多边形的办法是把在单位圆上这些点。所以:

  • 计算你的角度一步,这是2 * PI/#vertices
  • 计算你的半径
  • 角度出发0(或偏移,如果你想)使用Math.sin(角)和Math.cos(角度)来计算顶点的x和y坐标
  • 将顶点指向某处/以某种方式存储。如果您看到Polygon类或我写的类,可以通过对转换为java.awt.Polygon友好的方式获得一些想法。
相关问题