2014-10-08 52 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友好的方式獲得一些想法。
相關問題