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

使用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}]]

http://www.xdnf.cn/news/4089.html

相关文章:

  • 观察者模式(Observer Pattern)
  • 解锁DeepSeek模型微调:从小白到高手的进阶之路
  • 【AND-OR-~OR锁存器设计】2022-8-31
  • AfuseKt2.4.2 | 支持阿里云盘、Alist等平台视频播放,具备自动海报墙刮削功能的强大播放器
  • GEMM inTriton (Split-K and Stream-K)
  • 经典的 Masked + Self-supervised learning 的模型方法
  • 学习路线(视觉)
  • Deep-Live-Cam-实时换脸开源部署和使用
  • sqli-labs靶场11-17关(POST型)
  • 小白学习java第16天(下):javaweb
  • 【C/C++】inline关键词
  • 第六章:6.1 ESP32教学:多任务处理与FreeRTOS实战
  • 谷歌SMR测试环境搭建
  • Spring 框架中 @Configuration 注解详解
  • Springboot循环依赖
  • FOC算法开环控制基础
  • Java开发者面试实录:微服务架构与Spring Cloud的应用
  • 学习黑客Nmap 原理
  • 什么是外联模板(extern template)?
  • 【阿里云大模型高级工程师ACP学习笔记】2.9 大模型应用生产实践 (下篇)
  • C++竞赛指南
  • 搜索速度迅猛,能在0.001秒内迅速找到文件,但遗憾的是,该软件已经停止更新
  • 前端- ElementPlus入门
  • yolov11 epoch100轮 训练笔记5 kaggle comet
  • Android学习总结之GetX库篇(优缺点)
  • 进程的程序替换——exec系列函数的使用
  • 效整理文件信息!一键生成文件夹目录的工具
  • 8.渐入佳境 -- 域名及网络地址
  • Unity:Surface Effector 2D(表面效应器 2D)
  • OSE2.【Linux】练习:查找项目的main函数入口