
- StdDraw.java下载地址
https://introcs.cs.princeton.edu/java/stdlib/StdDraw.java - 将StdDraw.java放置在某个文件夹下(例如:E盘根目录 e:\,当然也可以是其它目录)
- 在Eclipse的import操作中导入StdDraw.java程序文件
- 修改module-info.java,添加文字: requires java.desktop
- 修改导入的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;
}
}