国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網(wǎng)站 > WEB開發(fā) > 正文

使用多邊形繪制圖像

2024-04-27 15:10:42
字體:
供稿:網(wǎng)友

介紹

早在8年前,也就是2008年,Roger Johansson使用C#做了一個利用遺傳算法使用不同的多邊形繪制圖像的程序EvoLisa(嗯,讓我想想我當(dāng)時在干什么。。。),這里是展示。

達爾文的像 這里寫圖片描述

代碼是如何工作的

為了方便理解代碼是如何工作的,現(xiàn)在假如你正在徒步通往真理的殿堂,你所能借助的唯一的工具就是一個能告訴你現(xiàn)在你接近真理殿堂距離的儀器,而你又是處于迷茫的狀態(tài),完全不知道應(yīng)該往那邊走,那么現(xiàn)在應(yīng)該怎么辦? 不妨先大膽的邁出一步,這時候再看看自己的距離是不是變小了?如果是,那說明自己至少大致走對了方向;如果發(fā)現(xiàn)距離并沒有減小吶?那就退回來,換個方向再試一下,總有一個方向會是對的。每到達一個新的位置,就重復(fù)上面的過程,雖然過程中會有不斷的失敗,但是通過大量的努力(選擇),就可以不斷地接近目的地。

作者Roger Johansson在源代碼中也是使用了這種思想,通過不斷的嘗試,不斷的保留更優(yōu)解(到達一個新的位置),這樣使得最后使用多邊形層疊出來的圖像跟原始圖像盡可能的接近。這里是源代碼(云梯自備),以及CSDN下載執(zhí)行文件,源代碼

代碼實現(xiàn)邏輯:

每幅圖像是由一定數(shù)量的多邊形疊加而成; 每個多邊形是由頂點色彩組成 由于每個多邊形的頂點和色彩的不同導(dǎo)致層疊出的圖像也就不同,所以成等點和色彩為每幅圖像的基因

對基因進行變異: 對所有的多邊形按照一定的幾率進行增加刪除,或者移動上下的位置(層疊的次序)對每一個多邊形按照一定的概率``增加減少它的頂點數(shù)目對每一個多邊形按照一定的概率移動頂點的位置對每一個多邊形按照一定的概率改變其rgba的數(shù)值將所有的多邊形在畫布上繪制出,并獲取像素信息將繪制出的圖形和原圖形的所有相應(yīng)位置上像素差值的平方之和作為適應(yīng)度,越小表示兩個圖像越接近,效果越好如果適應(yīng)度減小,則保留當(dāng)前多邊形組合的基因;否則,放棄此次變異,回滾到上一次變異的結(jié)果。如果對生成圖像的效果不滿意,重復(fù)步驟1

JS代碼實現(xiàn)

自己使用js代碼實現(xiàn)了一遍,最后的效果如下:

Chrome 這里寫圖片描述這里寫圖片描述 GEM.鄧紫棋 這里寫圖片描述

這里寫圖片描述這里寫圖片描述 這里寫圖片描述這里寫圖片描述

對于簡單的圖像,程序能在很短的時間內(nèi)使用多邊形繪制出一個比較像的圖像,但是對于復(fù)雜的,那只能是等一會了,一般要好幾個小時。

其實自己實現(xiàn)了一遍代碼,最后發(fā)現(xiàn)其中最難的,或者說獲得時間最多的并不是理解其中的原理以及敲代碼,而是能夠使用適當(dāng)?shù)膮?shù)保證程序能夠盡快的得出自己滿意的結(jié)果,我大部分時間都在調(diào)參數(shù)了o(╥﹏╥)o

代碼地址github

由于Chrome瀏覽器的同源策略問題,所以代碼要在火狐瀏覽器中才能夠順利運行


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 资兴市| 闸北区| 邻水| 荆门市| 冷水江市| 奉新县| 石狮市| 曲麻莱县| 临清市| 察哈| 垣曲县| 二连浩特市| 许昌县| 垦利县| 巴东县| 高唐县| 宝清县| 井陉县| 城口县| 北票市| 宁远县| 昌宁县| 阜新市| 青川县| 平定县| 金湖县| 卢氏县| 贵溪市| 博爱县| 铁力市| 邯郸市| 大化| 罗定市| 东至县| 赤峰市| 隆德县| 珲春市| 淮阳县| 宁乡县| 安义县| 新巴尔虎左旗|