天堂国产午夜亚洲专区-少妇人妻综合久久蜜臀-国产成人户外露出视频在线-国产91传媒一区二区三区

當(dāng)前位置:主頁(yè) > 論文百科 > 論文創(chuàng)新 >

混沌分形之謝爾賓斯基(Sierpinski)

發(fā)布時(shí)間:2016-10-23 09:44

  本文關(guān)鍵詞:謝爾賓斯基,,由筆耕文化傳播整理發(fā)布。


本文以使用混沌方法生成若干種謝爾賓斯基相關(guān)的分形圖形。   (1)謝爾賓斯基三角形   給三角形的3個(gè)頂點(diǎn),和一個(gè)當(dāng)前點(diǎn),然后以以下的方式進(jìn)行迭代處理:   a.隨機(jī)選擇三角形的某一個(gè)頂點(diǎn),計(jì)算出它與當(dāng)前點(diǎn)的中點(diǎn)位置;   b.將計(jì)算出的中點(diǎn)做為當(dāng)前點(diǎn),再重新執(zhí)行操作a   相關(guān)代碼如下:   復(fù)制代碼 class SierpinskiTriangle : public FractalEquation { public: SierpinskiTriangle() { m_StartX = 0.0f; m_StartY = 0.0f; m_StartZ = 0.0f;   m_triangleX[0] = 0.0f; m_triangleY[0] = FRACTAL_RADIUS;   m_triangleX[1] = FRACTAL_RADIUS*sinf(PI/3); m_triangleY[1] = -FRACTAL_RADIUS*sinf(PI/6);   m_triangleX[2] = -m_triangleX[1]; m_triangleY[2] = m_triangleY[1]; }   void IterateValue(float x, float y, float z, float& outX, float& outY, float& outZ) const { int r = rand()%3; outX = (x + m_triangleX[r])*0.5f; outY = (y + m_triangleY[r])*0.5f; outZ = z; }   private: float m_triangleX[3]; float m_triangleY[3]; }; 復(fù)制代碼 關(guān)于基類FractalEquation的定義見:混沌與分形   最終生成的圖形為:       通過這一算法可以生成如下圖像:       (2)謝爾賓斯基矩形   既然能生成三角形的圖形,那么對(duì)于矩形會(huì)如何呢?嘗試下吧:   復(fù)制代碼 class SierpinskiRectangle : public FractalEquation { public: SierpinskiRectangle() { m_StartX = 0.0f; m_StartY = 0.0f; m_StartZ = 0.0f;   m_ParamA = 1.0f; m_ParamB = 1.0f;   m_rectX[0] = FRACTAL_RADIUS; m_rectY[0] = FRACTAL_RADIUS;   m_rectX[1] = FRACTAL_RADIUS; m_rectY[1] = -FRACTAL_RADIUS;   m_rectX[2] = -FRACTAL_RADIUS; m_rectY[2] = -FRACTAL_RADIUS;   m_rectX[3] = -FRACTAL_RADIUS; m_rectY[3] = FRACTAL_RADIUS; }   void IterateValue(float x, float y, float z, float& outX, float& outY, float& outZ) const { int r = rand()%4; outX = (x + m_rectX[r])*0.5f; outY = (y + m_rectY[r])*0.5f; outZ = z; }   bool IsValidParamA() const {return true;} bool IsValidParamB() const {return true;}   void SetParamA(float v) { m_ParamA = v;   m_rectX[0] = FRACTAL_RADIUS*m_ParamA; m_rectX[1] = FRACTAL_RADIUS*m_ParamA; m_rectX[2] = -FRACTAL_RADIUS*m_ParamA; m_rectX[3] = -FRACTAL_RADIUS*m_ParamA; }   void SetParamB(float v) { m_ParamB = v;   m_rectY[0] = FRACTAL_RADIUS*m_ParamB; m_rectY[1] = -FRACTAL_RADIUS*m_ParamB; m_rectY[2] = -FRACTAL_RADIUS*m_ParamB; m_rectY[3] = FRACTAL_RADIUS*m_ParamB; }   private: float m_rectX[4]; float m_rectY[4]; }; 復(fù)制代碼 圖形如下:       噢,SHIT,毫無規(guī)律可言。   那就變動(dòng)一下吧:   復(fù)制代碼 class FractalSquare : public FractalEquation { public: FractalSquare() { m_StartX = 0.0f; m_StartY = 0.0f; m_StartZ = 0.0f;   m_rectX[0] = FRACTAL_RADIUS; m_rectY[0] = FRACTAL_RADIUS;   m_rectX[1] = FRACTAL_RADIUS; m_rectY[1] = -FRACTAL_RADIUS;   m_rectX[2] = -FRACTAL_RADIUS; m_rectY[2] = -FRACTAL_RADIUS;   m_rectX[3] = -FRACTAL_RADIUS; m_rectY[3] = FRACTAL_RADIUS; }   void IterateValue(float x, float y, float z, float& outX, float& outY, float& outZ) const { int r = rand()%10; if (r < 4) { outX = (x + m_rectX[r])*0.5f; outY = (y + m_rectY[r])*0.5f; } else { outX = x*0.5f; outY = y*0.5f; } outZ = z; }   private: float m_rectX[4]; float m_rectY[4]; }; 復(fù)制代碼     看上去還有點(diǎn)樣。   (3)謝爾賓斯基五邊形   四邊形是不行的,那再試下五邊:   復(fù)制代碼 // 五邊形 class SierpinskiPentagon : public FractalEquation { public: SierpinskiPentagon() { m_StartX = 0.0f; m_StartY = 0.0f; m_StartZ = 0.0f;   for (int i = 0; i < 5; i++) { m_pentagonX[i] = sinf(i*PI*2/5); m_pentagonY[i] = cosf(i*PI*2/5); } }   void IterateValue(float x, float y, float z, float& outX, float& outY, float& outZ) const { int r = rand()%5; outX = (x + m_pentagonX[r])*0.5f; outY = (y + m_pentagonY[r])*0.5f; outZ = z; }   private: float m_pentagonX[5]; float m_pentagonY[5]; }; 復(fù)制代碼     有點(diǎn)樣子,那就以此算法為基礎(chǔ),生成幅圖像看看:       有人稱謝爾賓斯基三角形為謝爾賓斯基墳垛,當(dāng)我看到這幅圖時(shí),有一種恐怖的感覺。邪惡的五角形,總感覺里面有數(shù)不清的骷髏。   看來二維空間中謝爾賓斯基的單數(shù)可以生成分形圖形,而雙數(shù)則為無序的混沌。   (4)謝爾賓斯基四面體   再由二維擴(kuò)展到三維看看:   復(fù)制代碼 class SierpinskiTetrahedron : public FractalEquation { public: SierpinskiTetrahedron() { m_StartX = 0.0f; m_StartY = 0.0f; m_StartZ = 0.0f;   m_vTetrahedron[0] = YsVector(0.0f, 0.0f, 0.0f); m_vTetrahedron[1] = YsVector(0.0f, 1.0f, 0.0f); m_vTetrahedron[2] = YsVector(YD_REAL_SQRT_3/2, 0.5f, 0.0f); m_vTetrahedron[3] = YsVector(YD_REAL_SQRT_3/6, 0.5f, YD_REAL_SQRT_3*YD_REAL_SQRT_2/3);   YsVector vCenter = m_vTetrahedron[0] + m_vTetrahedron[1] + m_vTetrahedron[2] + m_vTetrahedron[3]; vCenter *= 0.25f;   m_vTetrahedron[0] -= vCenter; m_vTetrahedron[1] -= vCenter; m_vTetrahedron[2] -= vCenter; m_vTetrahedron[3] -= vCenter;   m_vTetrahedron[0] *= FRACTAL_RADIUS; m_vTetrahedron[1] *= FRACTAL_RADIUS; m_vTetrahedron[2] *= FRACTAL_RADIUS; m_vTetrahedron[3] *= FRACTAL_RADIUS; }   void IterateValue(float x, float y, float z, float& outX, float& outY, float& outZ) const { int r = rand()%4; outX = (x + m_vTetrahedron[r].x)*0.5f; outY = (y + m_vTetrahedron[r].y)*0.5f; outZ = (z + m_vTetrahedron[r].z)*0.5f; }   bool Is3D() const {return true;}   private: YsVector m_vTetrahedron[4]; };

(轉(zhuǎn)載請(qǐng)注明出處和本文鏈接)

+1

0人


  本文關(guān)鍵詞:謝爾賓斯基,由筆耕文化傳播整理發(fā)布。



本文編號(hào):150217

資料下載
論文發(fā)表

本文鏈接:http://sikaile.net/wenshubaike/shangbiaozhuanli/150217.html


Copyright(c)文論論文網(wǎng)All Rights Reserved | 網(wǎng)站地圖 |

版權(quán)申明:資料由用戶4f582***提供,本站僅收錄摘要或目錄,作者需要?jiǎng)h除請(qǐng)E-mail郵箱bigeng88@qq.com
91精品蜜臀一区二区三区| 日本一本在线免费福利| 日韩精品少妇人妻一区二区| 六月丁香六月综合缴情| 亚洲一区二区三区日韩91| 中文字幕日韩无套内射| 国产精品免费不卡视频| 精品熟女少妇一区二区三区| 国产级别精品一区二区视频| 亚洲成人久久精品国产| 亚洲色图欧美另类人妻| 黄色国产自拍在线观看| 亚洲妇女作爱一区二区三区| 日本久久精品在线观看| 色综合久久超碰色婷婷| 成人午夜激情免费在线| 好吊色免费在线观看视频| 久久精品国产第一区二区三区| 熟女乱一区二区三区四区| 色好吊视频这里只有精| 久久91精品国产亚洲| 日本高清中文精品在线不卡| 丰满少妇高潮一区二区| 91人妻人人做人碰人人九色| 日韩成人中文字幕在线一区| 国产欧美日韩精品成人专区| 欧美成人高清在线播放| 欧美国产亚洲一区二区三区| 粉嫩国产一区二区三区在线| 五月天六月激情联盟网| 国产老女人性生活视频| 亚洲高清中文字幕一区二三区| 国产欧美精品对白性色| 亚洲天堂国产精品久久精品| 成人三级视频在线观看不卡| 日韩精品毛片视频免费看| 日韩一级欧美一级久久| 草草夜色精品国产噜噜竹菊| 国产精品欧美激情在线| 99秋霞在线观看视频| 国产精品一区二区视频|