日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 画希尔伯特曲线

發布時間:2025/4/16 python 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 画希尔伯特曲线 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

給你一個問題:
讓你在一個N×N的點陣,讓你畫一條連續曲線,使得這條曲線經過這個點陣中的每個點,并且每個點只經過一次,N滿足條件:N=2kk?Z

德國的數學家 David Hilbert就構造了一條滿足上面要求的曲線。如下圖

1階希爾伯特曲線

2階希爾伯特曲線

3階希爾伯特曲線

4階希爾伯特曲線

看出來了沒有,其實希爾伯特曲線的構造方法是一個遞歸過程,要構造n階的希爾伯特曲線,先構造4個n-1階的希爾伯特曲線,這4個n-1階的希爾伯特曲線通過特定的順序連接起來。其實連接順序就只有4種,跟1階希爾伯特相似,不過開口方向不同而已。

有了這個認識,編程就不難了,python的代碼如下:

# encoding=utf-8from tkinter import *def show_order(startx, starty, shape, order):global segx, segyif order == 1:if shape == 1:canvas.create_line(10 + startx * segx, 10 + starty * segy,10 + startx * segx, 10 + (starty + 1) * segy,tags="pic")canvas.create_line(10 + startx * segx, 10 + (starty + 1) * segy,10 + (startx + 1) * segx, 10 + (starty + 1) * segy,tags="pic")canvas.create_line(10 + (startx + 1) * segx, 10 + (starty + 1) * segy,10 + (startx + 1) * segx, 10 + starty * segy,tags="pic")elif shape == 2:canvas.create_line(10 + startx * segx, 10 + starty * segy,10 + (startx + 1) * segx, 10 + starty * segy,tags="pic")canvas.create_line(10 + (startx + 1) * segx, 10 + starty * segy,10 + (startx + 1) * segx, 10 + (starty + 1) * segy,tags="pic")canvas.create_line(10 + (startx + 1) * segx, 10 + (starty + 1) * segy,10 + startx * segx, 10 + (starty + 1) * segy,tags="pic")elif shape == 3:canvas.create_line(10 + startx * segx, 10 + (starty + 1) * segy,10 + startx * segx, 10 + starty * segy,tags="pic")canvas.create_line(10 + startx * segx, 10 + starty * segy,10 + (startx + 1) * segx, 10 + starty * segy,tags="pic")canvas.create_line(10 + (startx + 1) * segx, 10 + starty * segy,10 + (startx + 1) * segx, 10 + (starty + 1) * segy,tags="pic")elif shape == 4:canvas.create_line(10 + (startx + 1) * segx, 10 + starty * segy,10 + startx * segx, 10 + starty * segy,tags="pic")canvas.create_line(10 + startx * segx, 10 + starty * segy,10 + startx * segx, 10 + (starty + 1) * segy,tags="pic")canvas.create_line(10 + startx * segx, 10 + (starty + 1) * segy,10 + (startx + 1) * segx, 10 + (starty + 1) * segy,tags="pic")else:if shape == 1:show_order(startx, starty, 2, order-1)canvas.create_line(10 + startx * segx, 10 + (starty + EXP[order-1] - 1) * segy,10 + startx * segx, 10 + (starty + EXP[order-1]) * segy,tags="pic")show_order(startx, starty + EXP[order-1], 1, order-1)canvas.create_line(10 + (startx + EXP[order-1] - 1) * segx, 10 + (starty + EXP[order-1]) * segy,10 + (startx + EXP[order-1]) * segx, 10 + (starty + EXP[order-1]) * segy,tags="pic")show_order(startx + EXP[order-1], starty + EXP[order-1], 1, order-1)canvas.create_line(10 + (startx + EXP[order] - 1) * segx, 10 + (starty + EXP[order-1]) * segy,10 + (startx + EXP[order] - 1) * segx, 10 + (starty + EXP[order-1] - 1) * segy,tags="pic")show_order(startx + EXP[order-1], starty, 4, order-1)elif shape == 2:show_order(startx, starty, 1, order-1)canvas.create_line(10 + (startx + EXP[order-1] - 1) * segx, 10 + starty * segy,10 + (startx + EXP[order-1]) * segx, 10 + starty * segy,tags="pic")show_order(startx + EXP[order-1], starty, 2, order-1)canvas.create_line(10 + (startx + EXP[order-1])*segx, 10 + (starty + EXP[order-1] - 1) * segy,10 + (startx + EXP[order-1])*segx, 10 + (starty + EXP[order-1]) * segy,tags="pic")show_order(startx + EXP[order-1], starty + EXP[order-1], 2, order-1)canvas.create_line(10 + (startx + EXP[order-1] - 1) * segx, 10 + (starty + EXP[order] - 1)*segy,10 + (startx + EXP[order-1]) * segx, 10 + (starty + EXP[order] - 1) * segy,tags="pic")show_order(startx, starty + EXP[order-1], 3, order-1)elif shape == 3:show_order(startx, starty + EXP[order-1], 2, order-1)canvas.create_line(10 + startx * segx, 10 + (starty + EXP[order-1]) * segy,10 + startx * segx, 10 + (starty + EXP[order-1] - 1) * segy,tags="pic")show_order(startx, starty, 3, order-1)canvas.create_line(10 + (startx + EXP[order-1] - 1) * segx, 10 + (starty + EXP[order-1] - 1) * segy,10 + (startx + EXP[order-1]) * segx, 10 + (starty + EXP[order-1] - 1) * segy,tags="pic")show_order(startx + EXP[order-1], starty, 3, order-1)canvas.create_line(10 + (startx + EXP[order] - 1) * segx, 10 + (starty + EXP[order-1] - 1) * segy,10 + (startx + EXP[order] - 1) * segx, 10 + (starty + EXP[order-1]) * segy,tags="pic")show_order(startx + EXP[order-1], starty + EXP[order-1], 4, order-1)elif shape == 4:show_order(startx + EXP[order-1], starty, 1, order-1)canvas.create_line(10 + (startx + EXP[order-1])*segx, 10 + starty*segy,10 + (startx + EXP[order-1] - 1) * segx, 10 + starty * segy,tags="pic")show_order(startx, starty, 4, order-1)canvas.create_line(10 + (startx + EXP[order-1] - 1) * segx, 10 + (starty + EXP[order-1] - 1) * segy,10 + (startx + EXP[order-1] - 1) * segx, 10 + (starty + EXP[order-1]) * segy,tags="pic")show_order(startx, starty+EXP[order-1], 4, order-1)canvas.create_line(10 + (startx + EXP[order-1] - 1) * segx, 10 + (starty + EXP[order] - 1) * segy,10 + (startx + EXP[order-1]) * segx, 10 + (starty + EXP[order] - 1) * segy,tags="pic")show_order(startx + EXP[order-1], starty + EXP[order-1], 3, order-1)def display():if ord1.get() == "":returncanvas.delete("pic")global segx, segysegx = (WIDTH - 20) / (EXP[int(ord1.get())] - 1)segy = (HEIGHT - 20) / (EXP[int(ord1.get())] - 1)show_order(0, 0, 1, int(ord1.get())) segx = None segy = NoneEXP = 10 * [1] for i in range(1, 10):EXP[i] = EXP[i-1] * 2WIDTH = 700 HEIGHT = 700window = Tk() window.title("希爾伯特曲線") canvas = Canvas(window, width=WIDTH, height=HEIGHT, bg="white") canvas.pack()frame = Frame(window) frame.pack(anchor=W) lbl1 = Label(frame, text="Enter the order: ") lbl1.pack(side=LEFT) ord1 = StringVar() entry1 = Entry(frame, textvariable=ord1, width=10) entry1.pack(side=LEFT) but1 = Button(frame, text="Display", command=display) but1.pack() window.mainloop()

程序運行截圖

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的python 画希尔伯特曲线的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 中文字幕精品在线视频 | 亚洲欧美综合精品久久成人 | 婷婷伊人 | 亚洲成人经典 | 午夜精品在线 | 久久欧| 国产精品变态另类虐交 | 欧美日韩国产在线播放 | 最新中文字幕av | 五月天激情影院 | 中文字幕一区二区三区人妻四季 | 水蜜桃影库 | 国产一区不卡 | 亚洲欧洲精品一区二区 | 国产裸体美女永久免费无遮挡 | 久久久伊人网 | 国产99久久久 | 青青青视频免费观看 | 高清一区二区在线 | 夏目彩春娇喘呻吟高潮迭起 | 伊人99在线 | 夜夜干夜夜 | 日韩高清片 | www.色天使 | 日韩 欧美 亚洲 国产 | 亚洲jizzjizz| 欧美乱日 | 亚洲成人黄色在线观看 | 欧美精品区| 高清二区 | 操批网站 | 美女扒开尿口给男人看 | 97香蕉久久夜色精品国产 | 午夜在线视频 | 成人va视频| 亚洲开心网 | 毛片久久久久 | 麻豆av影视| 欧美午夜精品久久久久久蜜 | 最近日韩中文字幕中文 | 九色91在线 | 女性毛片| 亚洲午夜无码久久久久 | 99久久久无码国产精品6 | 天天躁夜夜操 | a视频在线 | 欧美日色 | 久久精品5 | 美女国产一区 | 欧美色图激情小说 | 精品人妻少妇一区二区 | 91黄色入口| 成人区视频 | 中文字幕高清一区 | 成人91视频 | 亚洲国产精品无码久久久 | 99re视频这里只有精品 | 欧美色图亚洲激情 | 天天操网站 | 日本美女视频一区 | 91手机在线视频 | 一本色道无码道dvd在线观看 | 已满十八岁免费观看 | 国产片天天弄 | 在线一本 | 香蕉久久夜色精品国产使用方法 | 97超碰人 | 国产精品久久久久久久久久免费 | 中文字幕在线观看视频网站 | 国产精品999视频 | 国产欧美日本 | 懂色av蜜臀av粉嫩av喷吹 | 青青草激情视频 | 性史性dvd影片农村毛片 | 欧美色欧美色 | 欧美色综合网站 | 6080福利| 波多野结衣在线免费观看视频 | 在线 日本 制服 中文 欧美 | 91精品久久久久久久99蜜桃 | 在线观看福利网站 | 欧美激情一区二区三区p站 欧美mv日韩mv国产网站app | 欧美成片vs欧美 | 国产理论片在线观看 | 亚洲一区,二区 | 久久久片 | 秋霞在线一区 | 婷婷四房综合激情五月 | 99久视频| 91精品国产高潮对白 | 欧美日日骚 | 波多av| 亚欧洲精品视频在线观看 | 色午夜婷婷 | 国产精品国产精品国产专区蜜臀ah | 大尺度做爰啪啪床戏 | 色综合视频网 | 四虎影院在线 | 欧美一级视频免费观看 |