所以,我一直在研究这个程序,用于从使用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
}
}
我的代码输出:
目标输出(我通常的目标,而不是两者):