当前位置: 首页 > 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} ] ]

相关文章:

  • 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++
  • 五一车市消费观察:政策赋能、企业发力,汽车消费火热
  • “五一”假期第四天,全社会跨区域人员流动量预计超2.7亿人次
  • 全国铁路昨日发送2311.9万人次,同比增长11.7%创历史新高
  • 国内锂矿“双雄”开局业绩PK:从巨亏中崛起,或深陷泥淖谋求多元转型
  • 三大上市猪企:前瞻应对饲料原材料价格波动
  • 200枚篆刻聚焦北京中轴线,“印记”申遗往事