You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JPanel中调整科赫雪花绘制程序的三角形边长

问题解决方法

1. 需要修改的代码位置

你要调整的是KochSnowFlake类kochsnowflake方法中硬编码的三个初始顶点坐标,当前代码如下:

Point p1 = new Point(100, 100);
Point p2 = new Point(300, 100);
Point p3 = new Point(200, 263);

当前初始三角形的边长为200像素(p1到p2的x轴差值为300-100=200),按比例放大三个顶点的坐标差值即可放大三角形边长,比如要把边长放大到原来的2倍,可以修改为:

// 边长放大为400像素,同时调整偏移量避免图形超出画布
Point p1 = new Point(200, 200);
Point p2 = new Point(600, 200);
Point p3 = new Point(400, 546);

2. 更灵活的可配置写法

你可以把边长、偏移量抽成常量,后续调整大小只要修改常量即可,不用手动计算三个点的坐标:

// 在KochSnowFlake类中添加常量定义
private static final int EDGE_LENGTH = 600; // 自定义三角形边长
private static final int OFFSET_X = 150; // 画布X轴偏移量
private static final int OFFSET_Y = 150; // 画布Y轴偏移量

// 替换原有三个顶点的定义代码
Point p1 = new Point(OFFSET_X, OFFSET_Y);
Point p2 = new Point(OFFSET_X + EDGE_LENGTH, OFFSET_Y);
Point p3 = new Point(OFFSET_X + EDGE_LENGTH/2, OFFSET_Y + (int)(EDGE_LENGTH * Math.sqrt(3)/2));

3. 可参考的搜索关键词

  • Java Swing 图形坐标缩放
  • 科赫雪花 尺寸调整
  • Java Graphics 绘制图形大小修改

额外注意

你现有代码的paintComponent方法里调用了super.paintComponents(g);,多了末尾的s,正确写法是super.paintComponent(g);,否则会出现图形重影、刷新异常的问题。

内容的提问来源于stack exchange,提问作者zackchess3

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 00:18:03