色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

JavaScript實(shí)現(xiàn)像雪花一樣的Hexaflake分形

瀏覽:98日期:2023-10-22 09:38:55

編寫(xiě)如下的函數(shù):

function drawHexagon(x,y,L) { ctx.beginPath(); ctx.moveTo(x-sqrt3/2*L,y-L/2); ctx.lineTo(x-sqrt3/2*L,y+L/2); ctx.lineTo(x,y+L); ctx.lineTo(x+sqrt3/2*L,y+L/2); ctx.lineTo(x+sqrt3/2*L,y-L/2); ctx.lineTo(x,y-L); ctx.closePath(); ctx.fillStyle = '#00FFFF'; ctx.fill(); }

函數(shù)中sqrt3的值為Math.sqrt(3)。該函數(shù)的功能是:以坐標(biāo)(x,y)為中心點(diǎn),繪制一個(gè)邊長(zhǎng)為L(zhǎng)的正六邊形并進(jìn)行填充,如下圖所示。

JavaScript實(shí)現(xiàn)像雪花一樣的Hexaflake分形

編寫(xiě)如下的調(diào)用語(yǔ)句:

var x=250; var y=250; var L=200; drawHexagon(x,y-2*L/3,L/3); drawHexagon(x,y,L/3); drawHexagon(x,y+2*L/3,L/3); drawHexagon(x-sqrt3/3*L,y+L/3,L/3); drawHexagon(x-sqrt3/3*L,y-L/3,L/3); drawHexagon(x+sqrt3/3*L,y+L/3,L/3); drawHexagon(x+sqrt3/3*L,y-L/3,L/3);

可以繪制出如下圖所示的7個(gè)小正六邊形,這7個(gè)小正六邊形正好填充在以(x,y)為中心邊長(zhǎng)為L(zhǎng)的大正六邊形中。

JavaScript實(shí)現(xiàn)像雪花一樣的Hexaflake分形

Hexaflake分形圖案的構(gòu)造過(guò)程是:以(x,y)為中心點(diǎn)繪制一個(gè)邊長(zhǎng)為L(zhǎng)的正六邊形并進(jìn)行顏色填充;在這個(gè)正六邊形中找到7個(gè)點(diǎn),以這7個(gè)點(diǎn)為中心分別繪制7個(gè)邊長(zhǎng)為L(zhǎng)/3的正六邊形并進(jìn)行顏色填充,替換掉原來(lái)邊長(zhǎng)為L(zhǎng)的正六邊形;重復(fù)以上操作直至達(dá)到要求的層數(shù),可以繪制出Hexaflake分形圖案,如下圖所示。

JavaScript實(shí)現(xiàn)像雪花一樣的Hexaflake分形

Hexaflake分形采用遞歸過(guò)程易于實(shí)現(xiàn),編寫(xiě)如下的HTML代碼。

<!DOCTYPE html><head><title>Hexaflake分形</title></head><body><canvas style='border:3px double #996633;'></canvas><script type='text/javascript'> var canvas = document.getElementById(’myCanvas’); var ctx = canvas.getContext(’2d’); var maxdepth =4; var sqrt3=Math.sqrt(3); function drawHexagon(x,y,L) { ctx.beginPath(); ctx.moveTo(x-sqrt3/2*L,y-L/2); ctx.lineTo(x-sqrt3/2*L,y+L/2); ctx.lineTo(x,y+L); ctx.lineTo(x+sqrt3/2*L,y+L/2); ctx.lineTo(x+sqrt3/2*L,y-L/2); ctx.lineTo(x,y-L); ctx.closePath(); ctx.fillStyle = '#00FFFF'; ctx.fill(); } function drawHexaflake(n,x,y,L) { if(n>0) { drawHexaflake(n-1,x,y-2*L/3,L/3); drawHexaflake(n-1,x,y,L/3); drawHexaflake(n-1,x,y+2*L/3,L/3); drawHexaflake(n-1,x-sqrt3/3*L,y+L/3,L/3); drawHexaflake(n-1,x-sqrt3/3*L,y-L/3,L/3); drawHexaflake(n-1,x+sqrt3/3*L,y+L/3,L/3); drawHexaflake(n-1,x+sqrt3/3*L,y-L/3,L/3); } else drawHexagon(x,y,L); } drawHexaflake(maxdepth,250,250,200);</script></body></html>

在瀏覽器中打開(kāi)包含這段HTML代碼的html文件,可以看到在瀏覽器窗口中繪制出的Hexaflake分形圖案,如下圖所示。

JavaScript實(shí)現(xiàn)像雪花一樣的Hexaflake分形

執(zhí)行語(yǔ)句:

ctx.fillStyle='black';ctx.fillRect(0,0,500,500);

將屏幕背景設(shè)置為黑色,將繪制的正六邊形用白色填充,則在瀏覽器窗口中繪制出的Hexaflake分形圖案像雪花兒一樣,如下圖所示。

JavaScript實(shí)現(xiàn)像雪花一樣的Hexaflake分形

將Hexaflake分形的生成過(guò)程進(jìn)行動(dòng)態(tài)展示,編寫(xiě)如下的HTML文件。

<!DOCTYPE html><head><title>Hexaflake分形</title></head><body><canvas style='border:3px double #996633;'></canvas><script type='text/javascript'> var canvas = document.getElementById(’myCanvas’); var ctx = canvas.getContext(’2d’); var depth =0; var sqrt3=Math.sqrt(3); function drawHexagon(x,y,L) { ctx.beginPath(); ctx.moveTo(x-sqrt3/2*L,y-L/2); ctx.lineTo(x-sqrt3/2*L,y+L/2); ctx.lineTo(x,y+L); ctx.lineTo(x+sqrt3/2*L,y+L/2); ctx.lineTo(x+sqrt3/2*L,y-L/2); ctx.lineTo(x,y-L); ctx.closePath(); ctx.fillStyle = '#FFFFFF'; ctx.fill(); } function drawHexaflake(n,x,y,L) { if(n>0) { drawHexaflake(n-1,x,y-2*L/3,L/3); drawHexaflake(n-1,x,y,L/3); drawHexaflake(n-1,x,y+2*L/3,L/3); drawHexaflake(n-1,x-sqrt3/3*L,y+L/3,L/3); drawHexaflake(n-1,x-sqrt3/3*L,y-L/3,L/3); drawHexaflake(n-1,x+sqrt3/3*L,y+L/3,L/3); drawHexaflake(n-1,x+sqrt3/3*L,y-L/3,L/3); } else drawHexagon(x,y,L); } function go() { ctx.fillStyle = '#000000'; ctx.fillRect(0,0,500,500); drawHexaflake(depth,250,250,200); depth++; if (depth>4) { depth=0; } } window.setInterval(’go()’,1500);</script></body></html>

在瀏覽器中打開(kāi)包含這段HTML代碼的html文件,在瀏覽器窗口中呈現(xiàn)出如下圖所示的Hexaflake分形動(dòng)態(tài)生成效果。

JavaScript實(shí)現(xiàn)像雪花一樣的Hexaflake分形

以上就是JavaScript實(shí)現(xiàn)像雪花一樣的Hexaflake分形的詳細(xì)內(nèi)容,更多關(guān)于JavaScript Hexaflake分形的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 久草免费在线 | 国产一区二区三区免费观看 | 日本japanesevideo黑人| 欧产日产国产精品精品 | 亚洲视频偷拍自拍 | 欧美一级带 | 99久久精品99999久久 | 在线成人播放毛片 | 日本三级11k影院在线 | 亚洲一区二区三区精品影院 | 精品国产美女福利到在线不卡 | 九九99 | 国产精品在线观看 | 97在线免费视频 | 香港三级日本三级妇人三级 | 日本精品在线观看 | 欧美在线一级片 | 欧美私人网站 | 美女在线看永久免费网址 | 九月婷婷亚洲综合在线 | 欧美亚洲精品在线 | 毛片在线视频 | 波多野结衣视频免费观看 | 九九热爱视频精品视频高清 | 欧美手机手机在线视频一区 | 国内国语一级毛片在线视频 | 色偷偷888欧美精品久久久 | 久久精品国产400部免费看 | 日本a级毛片视频播放 | 99国产精品九九视频免费看 | 国产精品美女视视频专区 | a毛片免费在线观看 | 国产人妖xxxx做受视频 | 久久香焦 | 成人免费一区二区三区视频软件 | 欧美一级专区免费大片野外交 | 精品国产一区二区三区在线 | 欧美日韩一区二区三区在线播放 | 久久2017| 一区三区三区不卡 | 欧美视频在线看 |