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

使用Mathematica绘制Peano Curve

皮亚诺(Peano)曲线,是一条可以填充平面的曲线。在Mathematica中,内置了函数PeanoCurve,可以用来绘制不同深度的皮亚诺曲线。这个函数,返回的是一个Line对象,为一串折线,可以使用Graphics函数,将相应图形绘制出来。

使用如下代码:

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

可以得到如下对比图案:

可以通过DataRange指定坐标范围。

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

指定坐标范围之后,可以使用BSplineFuntion将Line对象,转成参数函数。

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

在Mathematica中,这种转化方式,也灵活多变,比如,也可以采用如下方式:

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

有了这样的参数化之后,就很容易来做绘制过程了:

tempFunc00 = BSplineFunction[PeanoCurve[6, 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}]

上面的动画效果,也可以不是用BSplineFunction的参数化,而直接使用Line对象的前面i段,来实现动态效果。

With[ {curve = PeanoCurve[4]}, Manipulate[ Graphics[ {curve, Red, Thick, Line[ Take[First[curve], i] ] }, ImageSize -> Medium ], {i, 1, 6561, 1} ] ]

http://www.dtcms.com/a/171818.html

相关文章:

  • Linux 入门:操作系统进程详解
  • C++惯用法:In-Place Construction 和placement new
  • 【C++】封装unordered_set和unordered_map
  • ROS2学习笔记|C++ 实现 ROS 2 订阅与发布功能的完整流程
  • 《马小帅的Java闯关记》
  • NV228NV254固态美光颗粒NV255NV263
  • 网络编程,使用select()进行简单服务端与客户端通信
  • 用 PyTorch 轻松实现 MNIST 手写数字识别
  • 【MySQL】索引(重要)
  • [Java]Java的三个阶段
  • C++类_成员函数指针
  • vae笔记
  • 修复笔记:SkyReels-V2项目中的 from_config 警告
  • 学习黑客Linux权限
  • bc 命令
  • 31.软件时序控制方式抗干扰
  • 四年级数学知识边界总结思考-上册
  • FPGA----基于ZYNQ 7020实现EPICS通信系统
  • CATIA高效工作指南——曲面设计篇(一)
  • [GESP202503 四级] 二阶矩阵c++
  • [python]非零基础上手之文件操作
  • 【人工智能学习笔记 二】 MCP 和 Function Calling的区别与联系
  • 动态规划(5)路径问题--剑指offer -珠宝的最大值
  • 【AI论文】Phi-4-reasoning技术报告
  • nginx 核心功能 02
  • 软件架构方之旅(5):SAAM 在软件技术架构评估中的应用与发展研究
  • 基于python生成taskc语言文件--时间片轮询
  • 0.0973585?探究ts_rank的score为什么这么低
  • KaiwuDB X 遨博智能 | 构建智能产线监测管理新系统
  • LLVM Pass