在Mathematica中,内置的函数MeshPrimitives,其调用语法为:
MeshPrimitives[mreg,d] 返回网格区域mreg中的d维cell相应的图像素元
MeshPrimitives[mreg,cellspec] 返回网格区域mreg中的由cellspec指定的图像素元
关于这个函数,可以参考官方文档的基本案例:
使用MeshPrimitives返回1维图像素元即线段之后,然后再把这些素元转化成圆环或者长方形。圆环和长方形的生成语法为:
Annulus[{x,y},{r_inner,r_outer}]
返回中心在{x,y}内半径为r_inner外半径为r_outer的圆环 Rectangle[{xmin,ymin},{xmax,ymax}]
之后,将线段映射为圆环即可:
Graphics[ MeshPrimitives[ CantorMesh[6], 1] /. {Line[{{x1_}, {x2_}}] :> Annulus[{0.5, 0}, Sort[Abs[{0.5, 0.5} - {x1, x2}]]]} ]
Graphics[ MeshPrimitives[ CantorMesh[3], 1] /. { Line[{{x1_}, {x2_}}] :> Annulus[{-0.01, 0}, Sort[Abs[{-0.01, -0.01} - {x1, x2}]]] (*这里是为了避免半径为0的情况发生*) } ]
运行如下代码
Graphics[ MeshPrimitives[ CantorMesh[4], 1] /. Line[{{x1_}, {x2_}}] :> Rectangle[{x1, 0}, {x2, 1} ] ]