Java:从具有点连接的多边形圆形中绘制星形

时间:2016-11-17 02:13:11

标签: java loops casting drawing trigonometry

所以,我一直在研究这个程序,用于从使用g.fillPolygon(int, int, int)创建的圆圈中绘制一颗星。我最初在创建整个圈子时遇到了问题,但更改了double angle = (i * 360) to (i * 720)以解决这个问题(可能是一个创可贴修复,还不确定)。现在我正在尝试将所有点连接在一起(如“目标输出”部分所示)。

注意:我认为修改部分中显示的点的标签没有用Java完成。

我的代码:(我现在在哪里)

import java.awt.*;

public class StarSampler {

       public static void main(String[] args)
       {
           DrawingPanel panel = new DrawingPanel(500, 500);
           Graphics2D g = panel.getGraphics();
           g.setColor(Color.YELLOW);

           fillStar(g, 250, 250, 150, 50, .7);
       }

       public static void fillStar(Graphics2D g, int ctrX, int ctrY, int radius, int nPoints, double spikiness)
       {
           double xDouble[] = new double[2*nPoints];
           double yDouble[] = new double[2*nPoints];
           int xPoint[] = new int[100]; 
           int yPoint[] = new int[100];

           for (int i = 0; i < 2*nPoints; i++)
           {
             double iRadius = (i % 2 == 0) ? radius : (radius * spikiness);
             double angle = (i * 720.0) / (2*nPoints);

             xDouble[i] = ctrX + iRadius * Math.cos(Math.toRadians(angle));
             yDouble[i] = ctrY + iRadius * Math.sin(Math.toRadians(angle));

           for (int j = 0; j < nPoints; j++) // Casts for ints and doubles
           {
               xPoint[j] = (int) xDouble[j];
               yPoint[j] = (int) yDouble[j];
           }
           }
           g.fillPolygon(xPoint, yPoint, nPoints); // Creates polygon but 
       }
}

我的代码输出:

Bad Star Drawing

目标输出(我通常的目标,而不是两者):

Good Star Drawing

0 个答案:

没有答案