最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

《虛數(shù)不虛》第十一節(jié) 電腦繪圖指南

2022-11-09 23:29 作者:qazopq  | 我要投稿

寫在前面:

1.本文為筆者原創(chuàng)。為了方便理解,我創(chuàng)設了一則《花生漫畫》的小故事穿插其中。這是我第一次嘗試,不足之處請多多指正。

2.完整的代碼在文末給出,供有需要的讀者使用。

3.本代碼參閱了《虛數(shù)不虛》原作者(Stephencwelch)在Github公開的代碼,對此筆者深表感謝!

前言:來自萊納斯的承諾

我們?nèi)绾斡秒娔X實現(xiàn)這個效果?

今天,就讓萊納斯教大家怎么實現(xiàn)它!


預備工作

下載Anacoda,打開Jupyter Notebook
這是我的筆記本,里面寫好了今天要用到的代碼


都準備好了嗎?Ready, go!

第一步:開啟筆記本圖像顯示,加載所需第三方庫

matplotlib的Logo,強大的開源繪圖庫

第二步:導入一張JPEG圖像,我今天選擇的是——史努比!

這幅史努比的分辨率為500*500,每個像素點由紅、綠、藍按不同比例混合而成

在下一步操作之前,我們要明確圖像的橫坐標縱坐標

我們首先要確定每個像素點的橫坐標和縱坐標

第三步:創(chuàng)建每個像素點變換前的坐標 (xInput,yInput)

以及他們變換后的坐標?(xOutput,yOutput)

第四:創(chuàng)白畫布用于繪制變換的圖像

這里是整個代碼的核心,需要用心去理解

?第六步:利用二重循環(huán)將每個像素的原坐標變換到新坐標

這里的變換:f(z)=i*z(把圖像繞原點逆時針旋轉(zhuǎn)90°)

好,看看我們的結(jié)果!

繞原點逆時針旋轉(zhuǎn)90°......誒,怎么圖像跑到了這里?

為什么圖像的原點跑到了左下角?

我們要改進代碼

第七步:我們以畫布的中心為新的原點,把坐標軸平移到這里

為了方便,我特意在原點處沿正方向繪制了新的x軸y軸


這便是我們要把坐標軸平移到的位置

第八步,我們對第六步的代碼加以修改

加入條件判斷,對變換后超出畫布邊界的點不予繪制

整體平移變換后的像素點,使畫布中心成為新的坐標原點

我們再來看一下繞原點逆時針旋轉(zhuǎn)90°的效果:

Success!!
你知道我是怎么做的嗎?

正在這時...

這時,萊納斯的大姐姐上線了!

露西是女強人,是《花生漫畫》中塑造很成功的一名角色,筆者很喜歡她。

尤其是那種神態(tài),筆者在生活中真遇見過!

第九步:實現(xiàn)f(z)=z2

我們只需要將第8行的代碼改成:

就可以實現(xiàn)指數(shù)為2的冪變換。實際操作中,我們需要把圖像縮小才能容納變換后的圖像,我選擇的縮放比例是0.00308

結(jié)果

因為對變換后的坐標進行了取整操作,所以會出現(xiàn)摩爾紋。

進階指南

制作屬于你的復變函數(shù)動畫

雖然露西脾氣大,但她可是對弟弟負責到底的

第十步:平移圖像

如果你仔細看了我之前的代碼,你便不難想到,只需將原來的

z=x+i*y??改寫成??z=(x+Δx)+i*(y+Δy)? 就可以了

其中(Δx,Δy)便是向x軸,y軸正向移動的位移。

最后一步:制作動畫

別擔心,你也能做出屬于自己的動畫

我們知道,動畫是由一幀幀圖片組成,每張都都有細微的差別

我們可以通過引入一個循環(huán),讓程序生成一系列圖片。


我們先看最簡單的例子:從原點開始,沿x軸正向平移

f(z)=z+10*frame

frame=1,2,3...,30

我們得到了30張圖片,就差用把它們拼接成GIF了

完成結(jié)果
這是拼接起來的效果

看起來很無聊,但我們已經(jīng)制作第一幅數(shù)學動畫!

最后,我們來制作f(z)=z到f(z)=z2的漸變動畫

f(z)=0.03*z^(1?+?frame/30)

frame=1,2,3,...,30

老實說,筆者看到這么壯觀的變換,竟無話可言!

有數(shù)學家是這么形容該過程的:

原來的正交的網(wǎng)格變成了彼此正交的拋物線,直觀上看就好像是將復平面沿負實半軸剪開,然后繞著原點環(huán)抱,形成雙層結(jié)構(gòu)。

通過動畫,我們窺見了復變換更深層的結(jié)構(gòu)。

這也是我們下一節(jié)課要探討的內(nèi)容

感謝觀看!

最后說一句:從網(wǎng)頁復制代碼時,請檢查縮進。

《虛數(shù)不虛》第十一節(jié) 電腦繪圖指南的評論 (共 條)

分享到微博請遵守國家法律
建宁县| 进贤县| 苏州市| 青川县| 嘉黎县| 平武县| 陆川县| 且末县| 孝义市| 泸定县| 道真| 温宿县| 界首市| 阿克陶县| 定西市| 德阳市| 武平县| 庆云县| 运城市| 巴彦县| 卓资县| 遵义县| 昌宁县| 光山县| 涞水县| 宜川县| 三明市| 鹿邑县| 贵德县| 鲁山县| 班玛县| 清原| 信丰县| 北宁市| 遂宁市| 广宗县| 云霄县| 湾仔区| 颍上县| 桐庐县| 澜沧|