雪花曲線《一》

2021-09-01 17:38:34 字數 2027 閱讀 5757

很高興能接觸到分形這麼美的圖形,一直想發一篇這樣的部落格,實屬自己老是忘記,雖然分形的文件已經寫了,但是自己的部落格卻一直沒有發。

剛看到分形時,我正在做科赫曲線,也就是雪花曲線。覺得這個圖形很好玩,因此打算去做做。後來經龍哥展示了斌牛做的乙個圖形,頓時,自己都感到震驚。一條直線,不斷的彎曲,彎曲。。。最終形成乙個圖形美麗的圖形,神奇。

一、雪花曲線。

1.基本圖形

2.圖形的變化規則

3.**產生的圖形

雪花圖形大家都知道,類似雪花,開始是由乙個正三角形,經過不斷的變化,產生出美麗的雪花

我們可以看成:            一條直線-------->去掉中間的三分之一,畫乙個60度角,兩條相等的邊------------->每條直線,去掉中間的三分之一,畫乙個60度角,兩條相等的邊------------>重複的做下去

我們也可以看成:        一條直線--------->變成四條直線,中間有乙個60度的角--------------->每條直線,變成四條直線,中間有乙個60度的角----------->重複做下去

我們還可以看成:       一條有方向的直線--------->向上旋轉60度,向下旋轉(180-60)度,向上再轉60度--------->每條直線,向上旋轉60度,向下旋轉(180-60)度,向上再轉60度-------->不斷重複

對於前面兩種的做法,我們可以根據1與2,算出3,4,5的座標,然後再連線兩點之間的座標得出圖形,但是這樣往在第一次變形比較容易,一旦線的斜率發生變化,我們就開始很難處理。

第二種做法,我們出去考慮斜率不存在的麻煩,只需考慮傾斜角,通過第乙個點+直線的長度+角度的變化,一次得出個個點的座標。

只考慮傾斜角

/**

*

* @param deepth//表示遞迴的次數,及分形的層次

*/ public void kochv(graphics g, double ax, double ay, double bx, double by,int deepth )else

//頂點的

dy = cy + math.sin(alpha + pi / 3) * l;

dx = cx + math.cos(alpha + pi / 3) * l;

//遞迴的呼叫,並且層次減1

kochv(g,ax, ay, cx, cy,deepth-1);

kochv(g,ex, ey, bx, by,deepth-1);

kochv(g,cx, cy, dx, dy,deepth-1);

kochv(g,dx, dy, ex, ey,deepth-1);

} }

對不deepth層次的控制,傾斜角的考慮。

執行結果如下:

根據一條直線規律,我們就可以同時做三條直線,也就是乙個正三角型開始,只需再新增2條直線即可

實現:寫道

由上面的雪花曲線我們可以知道整個流程:

這裡的處理單元就相當於旋轉60的問題

3.**產生的圖形

當基本的圖形(直線)不斷微小化時,演化成點,曲線的的菱角將不在尖銳,圖形的面積不斷的增加,直到極限值,形成雪花圖案。

雪花雪花雪花

e.雪花雪花雪花 記憶體限制 256 mib 時間限制 1000 ms 標準輸入輸出 題目型別 傳統 評測方式 文字比較 題目描述 有n片雪花,每片雪花由六個角組成,每個角都有長度。第i片雪花六個角的長度從某個角開始順時針依次記為ai,1,ai,2,ai,6。因為雪花的形狀是封閉的環形,所以從任何乙...

雪花點 雪花點的顯示 (一)

1 doctype html 2 html 34 head 5 meta charset utf 8 6 title title 7 style type text css 8.snow container 1920 snow 3435 snow.foreground 4041 snow.foreg...

137 雪花雪花雪花 hash

有n片雪花,每片雪花由六個角組成,每個角都有長度。第i片雪花六個角的長度從某個角開始順時針依次記為ai,1,ai,2,ai,6 因為雪花的形狀是封閉的環形,所以從任何乙個角開始順時針或逆時針往後記錄長度,得到的六元組都代表形狀相同的雪花。例如ai,1,ai,2,ai,6 和ai,2,ai,3,ai,...