Python曲线,python实时曲线
最近在学习空间填充曲线,知乎上有一篇文章《形形色色的空间填充曲线》 里面讲了无需使用画图库,输入曲线的阶数订单,只用绘制精美的图表就可以表现出希尔伯特曲线的方法,其得到的曲线穿过平面区域的坐标点目录很有用。
温柔的雨曲线的代码如下:
def _希尔伯特(方向,旋转,顺序):如果order==0:返回方向=旋转_希尔伯特(方向,-旋转,顺序- 1)步骤1(方向-=旋转_希尔伯特(方向,旋转,顺序- 1)步骤1(方向)_希尔伯特(方向,旋转,顺序- 1)方向-=旋转第一步(方向)_希尔伯特(方向,-旋转,顺序- 1)定义步骤1(方向):next={0: (1,0),1: (0,1),2: (- 1,0),3: (0,- 1)取后两位?全局x,y x . append(x[-1]next[0])y . append(y[-1]next[1])def Hilbert(order):全局x,y x=[0,] y=[0,] _hilbert(0,1,order) return (x,y)注意函数第一步()中使用变量方向确定了走到下一步的坐标点;
变量方向确定曲线下一步行走的方向。
变量循环表示转向,方向=旋转表示向右转,方向-=旋转表示向左转。
通过上述代码大概只看出这些,调用_希尔伯特()时里面变量的正负代表的含义还没有完全看懂,唉,大佬就是大佬,菜鸡只能靠猜的。反正就基于这段希尔伯特曲线的代码,我仿写了生成摩尔曲线的代码,如下:
def _moore(方向,旋转,顺序):if order==0:返回方向-=旋转_希尔伯特(方向,旋转,顺序- 1)第二步(方向)_希尔伯特(方向,旋转,顺序-1)方向-=旋转第二步(方向,旋转,顺序-1)第二步(方向)_希尔伯特(方向,旋转,顺序-1)def第二步(方向):next={ 0:(1,0),1: (0,1),2: (-1,0),3: (0,-1)取后两位?global x,y x . append(x[-1]next[0])y . append(y[-1]next[1])def Moore(order):global x,y x=[2**(order-1)-1,] y=[0,] _moore(2,1,order) return (x,y)每次方向转向后接的步骤函数决定了之后曲线开口的方向。
调用上面的函数可以用:
def main1(): x,y=hilbert(4) plt.plot(x,y) plt.show()def main2(): x,y=moore(4) plt.plot(x,y) plt。show()if _ _ name _ _= _ _ main _ _ :main 2()print(x)print(y)
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。