WPF畫N角芒星,正N角星

2022-03-13 11:42:50 字數 2156 閱讀 2968

計算頂部三角形座標方法:

1

///2

///獲取頂三角形座標

3///

4///

外接圓半徑(頂點到中心的距離)

5///

n角星6

///左橫座標

7///

縱座標8

///又橫座標

9private

void getcoordinate(double r, int n, out

double x1, out

double y1, out

double

x2)10

17else

1822

double l = math.pi / 180; //

弧度單位

23double a = math.sin(360 / (2 * n) * l), //

多角芒星各角連中心分割所得的夾角的一半

24 b = math.sin(unitangle/2 * l), //

芒星內角銳角的一半

25 c = math.sin((180 - 360 / (2 * n) - unitangle/2) * l), //

芒星除了內銳角的其他內角與中心點連線的夾角

26 d = math.cos((360 / (2 * n)) *l);

27 x1 = (a * r * b) / c; //

正弦定理

28 y1 = (d * r * b) /c;

29 x2 = r - x1; //

x2與x1關於中心點垂線對稱,右移r個長度

30 x1 += r; //

右移r個長度

31 y1 -= r; //

下移r個長度

32//

取正數33 x1 = x1 < 0 ? x1 * (-1

) : x1;

34 y1 = y1 < 0 ? y1 * (-1

) : y1;

35 x2 = x2 < 0 ? x2 * (-1

) : x2;

36 }

view code

1、畫空心正n角星

思路:通過計算得到頂部乙個三角形的座標,畫出三角形,再畫出三角形順時針旋轉一周的其他n-1個三角形。組合起來得到乙個偽的多角芒星。

1

///2

///畫多角芒星,正多角星

3///

4///

外接圓半徑

5///

角數量6

///返回包含正多角星的canvas

7private canvas drawingpentacle(double r, intn)8

;12//重複n次畫出n個三角形斜邊

13for (int i = 1; i <= n; i++)

14,0 l, m 50,0 l,

", r, x1, y1, x2)));19}

20//

順時針旋轉

21 dv.transform = new rotatetransform(i * 360 / n, 50, 50

);22

23//

作為資源放到控制項中

24 rendertargetbitmap rtb = new rendertargetbitmap(100, 100, 0, 0

, pixelformats.default);

25rtb.render(dv);

26 image image = new image() ;

27canvas.children.add(image);28}

29return

canvas;

30 }

view code

演算法生成N芒星

前面兩個影象生成演算法是 道教的太極八卦圖和佛教的卐和卍字圖。這一節整個洋氣的影象 芒星。但願我別召喚出什麼恐怖的禁忌,尤其今晚還是萬聖節之夜。平時看玄幻 經常讀到有關六芒星,七芒星,九芒星的技法。芒星是由幾個完全的等腰三角形 有時是正三角形 和乙個正多邊形組成的二維圖形。等腰三角形的個數與正多邊形...

演算法生成N芒星

前面兩個影象生成演算法是 道教的太極八卦圖和佛教的卐和卍字圖。這一節整個洋氣的影象 芒星。但願我別召喚出什麼恐怖的禁忌,尤其今晚還是萬聖節之夜。平時看玄幻 經常讀到有關六芒星,七芒星,九芒星的技法。芒星是由幾個完全的等腰三角形 有時是正三角形 和乙個正多邊形組成的二維圖形。等腰三角形的個數與正多邊形...

python中n角星畫法

import turtle import math n eval input 請輸入邊個數 l eval input 請輸入邊長 i 0 迴圈變數 if n 2 1 奇數 角星的畫法 while i n turtle.forward l turtle.left 180 180 n i 1 turtl...