1. 程式人生 > >用vc++實現IFS分形演算法畫一棵樹

用vc++實現IFS分形演算法畫一棵樹

void IFS()
{
	double a[][8]={
		0,0.195,-0.488 ,0.344 ,0.433 ,0.4431 ,0.2452 ,0.25 ,\
		0,0.462 ,0.414 ,-0.252 ,0.361 ,0.2511 ,0.5692 ,0.25,\
		0,-0.058 ,-0.07 ,0.453 ,-0.111 ,0.5976 ,0.0969 ,0.25 ,\
		0,-0.035 ,0.07 ,-0.469 ,-0.022 ,0.4884 ,0.5069 ,0.2,\
		0,-0.637 ,0 ,0 ,0.501 ,0.8562 ,0.2513 ,0.05};
	double aa,bb;
	aa = a[0][1];
	double x = 900;

	srand( (unsigned)time( NULL ) );

	double x0,y0;
	x0=0;
	y0=0;
	initgraph(1000,1000);
	//setorigin(getwidth() / 2, getheight() / 2);         // 設定座標原點為視窗中心
	for (int k=0;k<10000;k++){
		int r = rand()%100;
		double x1,y1;

		if(r<=25){
			x1 = a[0][1]*x0+a[0][2]*y0+a[0][5];
			y1 = a[0][3]*x0+a[0][4]*y0+a[0][6];
		}else if(r<=50){
			x1 = a[1][1]*x0+a[1][2]*y0+a[1][5];
			y1 = a[1][3]*x0+a[1][4]*y0+a[1][6];
		}else if (r<=75){
			x1 = a[2][1]*x0+a[2][2]*y0+a[2][5];
			y1 = a[2][3]*x0+a[2][4]*y0+a[2][6];
		}else if (r<=95){
			x1 = a[3][1]*x0+a[3][2]*y0+a[3][5];
			y1 = a[3][3]*x0+a[3][4]*y0+a[3][6];
		}else{
			x1 = a[4][1]*x0+a[4][2]*y0+a[4][5];
			y1 = a[4][3]*x0+a[4][4]*y0+a[4][6];
		}
		x0 = x1;
		y0 = y1;
		putpixel(x1*x,1000-y1*x,HSLtoRGB(200,r*6,200));


		}
	getch();
	closegraph();
}
用到了www.easyx.cn

相關推薦

vc++實現IFS演算法

void IFS() { double a[][8]={ 0,0.195,-0.488 ,0.344 ,0.433 ,0.4431 ,0.2452 ,0.25 ,\ 0,0.462 ,0.414 ,-0.252 ,0.361 ,0.2511 ,0.5692 ,0.

vue + d3

結果預覽 github pages vue 和 d3 的角色 畫圖可分為兩步: 元素座標計算 資料繫結 座標計算只需要一些 api,本文使用 d3。 資料繫結既可以藉助 d3,也可以使用 vue。d3 通過操作 dom 實現,有點像 jQuery,d3 針對資料和 do

非遞迴演算法得出的高度

計算二叉樹樹高的遞迴演算法我想各位朋友們都已經很熟悉了,那麼我們今天就來介紹一種非遞迴的演算法,主要利用的還是層次遍歷 /** * 得出一棵樹的高度(非遞迴演算法) */

【181113】VC++遞迴法實現簡單圖形示例程式原始碼

原始碼下載簡介 VC++遞迴法實現簡單分形圖形示例程式,比如扣氏曲線類定義等。大家在C/C++學習時都會遇到遞迴,課本上以汗諾塔為例進行講解,然後大家都希望自己找到一個遞迴的例項。本程式碼以一個最簡單

java實現七種排序演算法

 很多時候,聽別人在討論快速排序,選擇排序,氣泡排序等,都覺得很牛逼,心想,臥槽,排序也分那麼多種,就覺得別人很牛逼呀,其實不然,當我們自己去了解學習後發現,並沒有想象中那麼難,今天就一起總結一下各種排序的實現原理並加以實現。                         -WH 一、文章

經典的演算法

轉載自:http://www.douban.com/note/230496472/ 被譽為大自然的幾何學的分形(Fractal)理論,是現代數學的一個新分支,但其本質卻是一種新的世界觀和方法論。它與動力系統的混沌理論交叉結合,相輔相成。它承認世界的區域性可能在一定條件下,在

C++實現七種排序演算法,可選擇排序方法,簡單易懂。

       最近學習演算法,先從簡答的開始學起,用C++做了一個實現七種排序演算法的介面,可選擇想要用的選擇演算法,不過,由於時間倉促,沒有來得及優化和程式碼註釋,後期還會加上程式碼註釋,隨便優化一下程式碼,提高執行效率; /***********************

VC實現特定編輯框上對回車鍵響應

摘要:本文講述了在指定的編輯框上能響應從鍵盤輸入回車鍵的一種方法,對程序內訊息的解析、動態獲取指定資源ID等技術也作了簡要描述。   一、引言   在通常的以CEditView為基類的單文件/多文件檢視程式中,可以很好的響應鍵盤輸入的回車鍵,只需比較最近兩次的輸入的字元,看看最新輸入的字元是否內碼是13(0x

python實現簡單的遺傳演算法

今天整理之前寫的程式碼,發現在做數模期間寫的用Python實現的遺傳演算法,感覺還是挺有意思的,就拿出來分享一下。 首先遺傳演算法是一種優化演算法,通過模擬基因的優勝劣汰,進行計算(具體的演算法思路什麼的就不贅述了)。大致過程分為初始化編碼、個體評價、選擇,交叉,變異

JS實現前端頁的簡單方法

<!DOCTYPE html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>分頁</title> <script

Python實現快速排序(Quicksort)演算法

1.快速排序(Quicksort)演算法介紹 快速排序(Quicksort)是對氣泡排序的一種改進,但是不是穩定的排序演算法 2.演算法思想 1)設定兩個變數i、j,排序開始的時候:i=0,j=N-1; 2)以第一個陣列元素作為關鍵資料,儲存在key中,即key=

無聊的時候java實現的推箱子演算法~

相信對於推箱子這種東西大家都一定很熟悉了吧,本人身為一個宅男最近迷上了一款叫做遊戲俱樂部的game,聽上去是不是很高大上的樣子。。。結果----這TM不就是個推箱子麼!!! 當時被這個關卡卡的欲仙欲死。。。所以果斷拿出了自己大學的存貨,自動推箱子搞起! ---------

VC++實現Console程式顯示彩色文字

  用vc++寫console程式時,整天對著黑紙白字的螢幕,感覺很鬱悶吧?很多人想用CONIO.H/GRAPHICS.H中的一些函式來實現,卻發現VC++根本沒有這些標頭檔案。當然了CONIO.H/GRAPHICS.H是BORLAND TC/BC專有的標頭檔案,所以vc++

VC++實現應用程式視窗的任意分割(2)

一、關於CSplitterWnd類 我們在使用CuteFtp或者NetAnt等工具的時候,一般都會被其複雜的介面所吸引,在這些介面中視窗被分割為若干的區域,真正做到了視窗的任意分割。那麼我們自己如何建立類似的介面,也實現視窗的任意的分割呢?在VC6.0中這就需要使用到CSplitterWnd類。CSplitt

假設二叉中每個結點的值為單個字元, 設計一個演算法以二叉鏈方式儲存的二叉 b 轉換成對應的順序儲存結構 a。——含具體實現工程

假設二叉樹中每個結點的值為單個字元, 設計一個演算法將一棵以二叉鏈方式儲存的二叉樹 b 轉換成對應的順序儲存結構 a。——李春葆資料結構第五版第七章,P246,第十題 思路解析: 解:設二叉樹的順序儲存結構型別為SqBTree,先將順序儲存結構a中所有元素置為‘#’(表示空結點)。將b轉

線性規劃專題——SIMPLEX 單純演算法

線性規劃,以前一直小瞧它了,它其實一種特別表達能力特別強的工具,只要能夠將問題定義成線性規劃的問題,那麼就可以使用單純形法來解決。 為什麼說,線性規劃的表達能力很強呢?因為像經典的網路流演算法、最小費用流演算法、多物品流演算法都可以寫成線性規劃的形式,一旦劃歸成線性規劃,那麼就可以使

EasyLearn--JAVA實現32個經典演算法設計():A*演算法

A*演算法是一種靜態路網中求解最短路徑最有效的直接搜尋方法,其中經典的圖形有網格影象如下: 根據這個影象來對演算法進行說明主要思想:該演算法又稱為啟發式演算法,啟發之處在於公式F=G+H,F為最終結果值,G為所行走的步數,H就是預估值,其中H可根據不同的策略採用不同的規

python中的遞迴小樹

先給出畫一顆小樹的程式碼: #tree.py from turtle import Turtle def tree(plist, l, a, f):# plist is list of pens# l is the length of brantch# is half of

Qt實現一個桌面彈幕程式()--前期準備

Qt的安裝 快到Qt官網 或者點選這裡 快快點我 去下載相應系統下的安裝包,開始你的Qt程式之旅吧~ 幾點建議 儘量選擇離線安裝包,除非你確信你的網路夠好撐得起線上安裝。 如果是windows系統下做Qt程式開發建議下載編譯器為mingw的版本,相容性更

Python實現古詩詞填字遊戲(

## Created by PosPro ## http://blog.csdn.net/pospro import re i=3200 # PosPro says:在測試時無需讀取全部資訊,可以通過此引數調整讀入行數,加快測試 INDEXNUM=0 EMPTYLINE=0 STATEFLAG=0 d