当前位置: 首页 > news >正文

使用Mathematica绘制Sierpinski地毯

在Mathematica中内置的绘制Sierpinski地毯的函数:

SierpinskiCurve[n] 
gives the line segments representing the n-step Sierpiński curve.

注意,直接运行这个函数,返回的是Line对象,例如:

运行如下代码:

GraphicsGrid[ { {Graphics[SierpinskiCurve[1]], Graphics[SierpinskiCurve[2]]}, {Graphics[SierpinskiCurve[3]], Graphics[SierpinskiCurve[4]]} } ]

我们可以得到前面几个地毯的对比图形:

可以通过DataRange,指定参数范围,使得相应的几何图形,能够放在合适的坐标系内:

Graphics[ SierpinskiCurve[3, DataRange -> {{0, 1}, {0, 1}}], PlotRange -> 2, Axes -> True ]

在这个给定的坐标系内,可使用BSplineFunction,将几何图形参数化并绘制出来:

BSplineFunction[ SierpinskiCurve[3, DataRange -> {{-1, 1}, {-1, 1}}][[1]], SplineDegree -> 1]; ParametricPlot[%[t], {t, 0, 1}, PlotPoints -> 400]

也可以采用如下方式来实现:

Graphics[{Thickness[Large], SierpinskiCurve[3] /. Line -> BSplineCurve}]

注意:此时的BSplineFunction的阶数为2(看起来比上面的要更加光滑)。

利用这个参数化,可以直观看到曲线的填充过程:

tempFunc00 = BSplineFunction[ SierpinskiCurve[4, DataRange -> {{-1, 1}, {-1, 1}}][[1]], SplineDegree -> 1]; Animate[ParametricPlot[tempFunc00[t], {t, 0, n}, PlotPoints -> 400, PlotRange -> {{-1, 1}, {-1, 1}}], {n, 0.01, 1, 0.01}]

这样的动态效果,是有连续性的视觉效果。但是如果绘制图形的阶数比较大,也可以使用“整数”的方式,来达到类似的视觉效果。

With[{curve = SierpinskiCurve[6]}, Manipulate[ Graphics[{curve, Red, Thick, Line[Take[First[curve], i]]}, ImageSize -> Medium], {i, 1, 16385, 1}]]

相关文章:

  • ZYNQ笔记(十七):IP核封装与接口定义
  • Java抽象类与接口详解
  • 关于string类的构造函数
  • 基于 jQuery 实现灵活可配置的输入框验证功能
  • 效整理文件信息!一键生成文件夹目录的工具
  • 简单理解MCP:AI如何使用工具
  • 开元类双端互动组件部署实战全流程教程(第1部分:环境与搭建)
  • 网络:cookie和session
  • 使用汇率查询API帮你实时查询汇率,促进货币交流
  • GPU性能加速的隐藏魔法:Dual-Issue Warp Schedule全解析
  • 游戏开发的TypeScript(5)TypeScript的类型转换
  • ciscn_2019_c_1
  • 2025 年 408 真题及答案
  • wordperss AI插件:AI图文+视频+长尾关键词自动生成,已内置deepseek、kimi全模型,支持简单一键接入更多自定义API
  • 数据集-目标检测系列- 牙刷 检测数据集 toothbrush >> DataBall
  • Cadence高速系统设计流程及工具使用
  • WidowX-250s 机械臂的简单数字孪生案例
  • 2025.5.4总结
  • 【信息系统项目管理师-论文真题】2007下半年论文详解(包括解题思路和写作要点)
  • 【信息系统项目管理师-论文真题】2008上半年论文详解(包括解题思路和写作要点)
  • “穿越看洪武”,明太祖及其皇后像台北故宫博物院南院展出
  • 媒体:南京秦淮区卫健委回应一医院涉嫌违规提供试管婴儿服务
  • 印度扩大对巴措施:封锁巴基斯坦名人账号、热门影像平台社媒
  • 辽宁召开假期安全生产工作调度会:绝不允许层层失守,绝不允许“带病运行”
  • 晋城一男子实名举报村支书打伤其67岁父亲,镇政府:案件正在侦办中
  • 全红婵/陈芋汐夺得跳水世界杯总决赛女子双人10米台冠军