为什么这段代码不允许我连接图纸的顶点?

时间:2014-10-08 16:39:34

标签: java graphics trigonometry

我的意思是绘制一个五边形,从顶点到中心的线条。这些“手臂”正在被正确绘制,但是当我尝试连接顶点时,它被绘制得不正确。为了连接线,我在循环中放置了另一个绘制函数,如下所示,它应该绘制第一条线的终点坐标作为起点,以及迭代中绘制的下一个“臂”的终点坐标,作为它的终点。我在这里错过了什么吗?我错了在第二次抽奖中使用'i + angle'吗?

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);
        }

1 个答案:

答案 0 :(得分:0)

我在PolygonFactory

中有这个here的解决方案

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

  • 计算角度步长,即2 * pi / #vertices
  • 计算半径
  • 从角度0开始(或者如果需要,可以使用偏移量)使用Math.sin(角度)和Math.cos(角度)来计算顶点的x和y坐标
  • 将顶点存储在某处/某种方式。如果你看一下Polygon类或我写的类,你可以通过一种友好的转换为java.awt.Polygon的方式获得一些关于如何做到这一点的想法。