You need to enable JavaScript to run this app. 基于StdDraw的Java递归三角形绘制代码无递归效果及填色求助
优惠活动
大模型
产品
解决方案
定价
更多

基于StdDraw的Java递归三角形绘制代码无递归效果及填色求助

递归逻辑不生效的核心排查
  • 坐标偏移逻辑完全缺失:当前递归调用始终传入和外层完全一致的(x,y)作为起点,所有递归层级的绘制内容全叠在同一个坐标位置,视觉上和单次绘制没有区别,会直接误以为递归没有触发。
  • 尺寸参数计算完全错误:初始size仅为1.0,递归时每次将size减去固定值3,第一次递归调用传入的size就变为-2,后续绘制的线条全是负长度,超出StdDraw默认[0,1]的画布显示范围,完全不可见。
  • 线条绘制参数传值混乱:当前所有StdDraw.line()的传参不符合“起点x、起点y、终点x、终点y”的参数要求,大量参数错把y值当x值传入,根本画不出预期的三角形轮廓,进一步干扰对递归执行状态的判断。
  • 递归拆分逻辑完全缺失:分形三角形的递归逻辑需要将当前大三角形拆分为3个尺寸减半、位置分别对应大三角形三个顶点的子三角形,分别发起递归调用;当前代码仅发起了1次指向原位置的递归,没有做分拆,自然看不到重复绘制的效果。
三角形颜色填充的实现方案
  • 先修正无效的颜色设置逻辑:当前代码里调用StdDraw.setPenColor(StdDraw.BLUE)后马上又调用StdDraw.setPenColor(StdDraw.BLACK),蓝色设置会被立刻覆盖,完全无法生效。
  • StdDraw提供原生的多边形填充能力,无需逐边描线实现填充:先通过StdDraw.setPenColor(目标填充色)设置画笔颜色,再将三角形三个顶点的x坐标存入一个double数组、y坐标存入对应数组,调用StdDraw.filledPolygon(xs, ys)即可直接画出带填充色的三角形。
  • 如果需要同时保留三角形的黑色轮廓边框,可在填充完成后,重新设置画笔为边框颜色,调用StdDraw.polygon(xs, ys)再绘制一次空心的三角形轮廓即可。
  • 注意不要用描边的方式尝试实现填充:仅靠StdDraw.line()逐边绘制的三角形只会有轮廓,没有内部填充效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 12:15:11