绘制正多边形(3-12),中心可设置在(0.0)点每个外接圆的半径依次递增。用stddraw

img

  1. StdDraw.java下载地址
    https://introcs.cs.princeton.edu/java/stdlib/StdDraw.java
  2. 将StdDraw.java放置在某个文件夹下(例如:E盘根目录 e:\,当然也可以是其它目录)
  3. 在Eclipse的import操作中导入StdDraw.java程序文件
  4. 修改module-info.java,添加文字: requires java.desktop
  5. 修改导入的StdDraw.java,首行必须是 package demo(即java package的名称)

import java.awt.Color;
import java.util.ArrayList;
import java.util.List;
import edu.princeton.cs.algs4.StdDraw;

public class DrawPolygons {
    private static final double CENTER_X = 0.5;
    private static final double CENTER_Y = 0.5;
    private static final double RADIUS_STEP = 0.05;

    public static void main(String[] args) {
        // 定义正多边形边数
        int nSides = 10;
        // 循环绘制正多边形
        for (int i = 3; i <= nSides; i++) {
            // 计算外接圆半径
            double radius = i * RADIUS_STEP;
            // 计算每条边的夹角
            double angle = 2 * Math.PI / i;
            // 定义多边形各个顶点
            List<Double> xList = new ArrayList<>();
            List<Double> yList = new ArrayList<>();
            for (int j = 0; j < i; j++) {
                double x = CENTER_X + radius * Math.cos(j * angle);
                double y = CENTER_Y + radius * Math.sin(j * angle);
                xList.add(x);
                yList.add(y);
            }
            // 清空窗口
            StdDraw.clear();
            // 绘制多边形
            StdDraw.setPenColor(Color.BLACK);
            StdDraw.polygon(toDoubleArray(xList), toDoubleArray(yList));
            // 显示绘制结果
            StdDraw.show();
        }
    }

    // 将List<Double>转为double[]
    private static double[] toDoubleArray(List<Double> list) {
        double[] arr = new double[list.size()];
        for (int i = 0; i < list.size(); i++) {
            arr[i] = list.get(i);
        }
        return arr;
    }
}