Here are 8 beautiful fractals based on chaos game technique.
'All the fractal rendered are based on chaos game technique and are adapted from wikipedia.
'19 Feb, 2019 Ashish
'https://en.wikipedia.com/wiki/Chaos_game
i = i + 1
drawFractal i, 300000 + i * 10000, 1 '1 for multiple colors, other value show fractal in only white color
SUB drawFractal
(typ
, num_of_iterations
, colored
AS _BYTE) col~&
= _RGBA(255, 255, 255, 80) clr~&
(0) = _RGBA(255, 0, 0, 90) clr~&
(1) = _RGBA(0, 255, 0, 90) clr~&
(2) = _RGBA(0, 0, 255, 90) clr~&
(3) = _RGBA(255, 255, 0, 90) clr~&
(4) = _RGBA(0, 255, 255, 90) clr~&
(5) = _RGBA(255, 0, 255, 90) CASE 1 'Seirpinshki Triangle
vertColor
(0) = INT(p5random
(0, 5)) f1: kk = 0
IF k
= vertColor
(j
) THEN kk
= 1 vertColor(i) = k
preVert = 1
i = i + 1
IF p_e
> 0 AND p_e
< 0.33 THEN px
= px
+ 0.5 * (x1
- px
): py
= py
+ 0.5 * (y1
- py
): preVert
= 1 IF p_e
> 0.33 AND p_e
< 0.66 THEN px
= px
+ 0.5 * (x2
- px
): py
= py
+ 0.5 * (y2
- py
): preVert
= 2 IF p_e
> 0.66 AND p_e
< 0.99 THEN px
= px
+ 0.5 * (x3
- px
): py
= py
+ 0.5 * (y3
- py
): preVert
= 3
CASE 2 'I don't know the name of this fractal, but its nice. It is based on square vertices x1 = 0: y1 = 0
x4 = 0: y4 = y3
vertColor
(0) = INT(p5random
(0, 5)) f2: kk = 0
IF k
= vertColor
(j
) THEN kk
= 1 vertColor(i) = k
preVert = 1
i = i + 1
IF p_e
> 0 AND p_e
< 0.25 AND preVert
<> 1 THEN px
= px
+ 0.5 * (x1
- px
): py
= py
+ 0.5 * (y1
- py
): preVert
= 1 IF p_e
> 0.25 AND p_e
< 0.5 AND preVert
<> 2 THEN px
= px
+ 0.5 * (x2
- px
): py
= py
+ 0.5 * (y2
- py
): preVert
= 2 IF p_e
> 0.5 AND p_e
< 0.75 AND preVert
<> 3 THEN px
= px
+ 0.5 * (x3
- px
): py
= py
+ 0.5 * (y3
- py
): preVert
= 3 IF p_e
> 0.75 AND p_e
< 1 AND preVert
<> 4 THEN px
= px
+ 0.5 * (x4
- px
): py
= py
+ 0.5 * (y4
- py
): preVert
= 4
x1 = 0: y1 = 0
x4 = 0: y4 = y3
vertColor
(0) = INT(p5random
(0, 5)) f3: kk = 0
IF k
= vertColor
(j
) THEN kk
= 1 vertColor(i) = k
preVert = 1
i = i + 1
IF p_e
> 0 AND p_e
< 0.25 AND preVert
<> 4 THEN px
= px
+ 0.5 * (x1
- px
): py
= py
+ 0.5 * (y1
- py
): preVert
= 1 IF p_e
> 0.25 AND p_e
< 0.5 AND preVert
<> 1 THEN px
= px
+ 0.5 * (x2
- px
): py
= py
+ 0.5 * (y2
- py
): preVert
= 2 IF p_e
> 0.5 AND p_e
< 0.75 AND preVert
<> 2 THEN px
= px
+ 0.5 * (x3
- px
): py
= py
+ 0.5 * (y3
- py
): preVert
= 3 IF p_e
> 0.75 AND p_e
< 1 AND preVert
<> 3 THEN px
= px
+ 0.5 * (x4
- px
): py
= py
+ 0.5 * (y4
- py
): preVert
= 4
x1 = 0: y1 = 0
x4 = 0: y4 = y3
vertColor
(0) = INT(p5random
(0, 5)) f4: kk = 0
IF k
= vertColor
(j
) THEN kk
= 1 vertColor(i) = k
preVert = 1
i = i + 1
IF p_e
> 0 AND p_e
< 0.25 AND preVert
<> 3 THEN px
= px
+ 0.5 * (x1
- px
): py
= py
+ 0.5 * (y1
- py
): preVert
= 1 IF p_e
> 0.25 AND p_e
< 0.5 AND preVert
<> 4 THEN px
= px
+ 0.5 * (x2
- px
): py
= py
+ 0.5 * (y2
- py
): preVert
= 2 IF p_e
> 0.5 AND p_e
< 0.75 AND preVert
<> 1 THEN px
= px
+ 0.5 * (x3
- px
): py
= py
+ 0.5 * (y3
- py
): preVert
= 3 IF p_e
> 0.75 AND p_e
< 1 AND preVert
<> 2 THEN px
= px
+ 0.5 * (x4
- px
): py
= py
+ 0.5 * (y4
- py
): preVert
= 4
x1 = 0: y1 = 0
x4 = 0: y4 = y3
vertColor
(0) = INT(p5random
(0, 5)) f5: kk = 0
IF k
= vertColor
(j
) THEN kk
= 1 vertColor(i) = k
preVert1 = 1
i = i + 1
IF preVert1
<> 4 AND prevert2
<> 2 OR preVert1
<> 2 AND prevert2
<> 4 THEN px
= px
+ 0.5 * (x1
- px
): py
= py
+ 0.5 * (y1
- py
): prevert2
= preVert1: preVert1
= 1
IF preVert1
<> 1 AND prevert2
<> 3 OR preVert1
<> 3 AND prevert2
<> 1 THEN px
= px
+ 0.5 * (x2
- px
): py
= py
+ 0.5 * (y2
- py
): prevert2
= preVert1: preVert1
= 2 IF preVert1
<> 2 AND prevert2
<> 4 OR preVert1
<> 4 AND prevert2
<> 2 THEN px
= px
+ 0.5 * (x3
- px
): py
= py
+ 0.5 * (y3
- py
): prevert2
= preVert1: preVert1
= 3 IF preVert1
<> 1 AND prevert2
<> 3 OR preVert1
<> 3 AND prevert2
<> 1 THEN px
= px
+ 0.5 * (x4
- px
): py
= py
+ 0.5 * (y4
- py
): prevert2
= preVert1: preVert1
= 4
x1 = 0: y1 = 0
x4 = 0: y4 = y3
vertColor
(0) = INT(p5random
(0, 5)) f6: kk = 0
IF k
= vertColor
(j
) THEN kk
= 1 vertColor(i) = k
preVert1 = 1
i = i + 1
IF preVert1
<> 2 AND prevert2
<> 2 OR preVert1
<> 4 AND prevert2
<> 4 THEN px
= px
+ 0.5 * (x1
- px
): py
= py
+ 0.5 * (y1
- py
): prevert2
= preVert1: preVert1
= 1 IF preVert1
<> 1 AND prevert2
<> 1 OR preVert1
<> 3 AND prevert2
<> 3 THEN px
= px
+ 0.5 * (x2
- px
): py
= py
+ 0.5 * (y2
- py
): prevert2
= preVert1: preVert1
= 2 IF preVert1
<> 2 AND prevert2
<> 2 OR preVert1
<> 4 AND prevert2
<> 4 THEN px
= px
+ 0.5 * (x3
- px
): py
= py
+ 0.5 * (y3
- py
): prevert2
= preVert1: preVert1
= 3 IF preVert1
<> 1 AND prevert2
<> 1 OR preVert1
<> 3 AND prevert2
<> 3 THEN px
= px
+ 0.5 * (x4
- px
): py
= py
+ 0.5 * (y4
- py
): prevert2
= preVert1: preVert1
= 4
x1
= rx
+ rx
* SIN(_PI(0.4 * i
)): y1
= ry
+ ry
* COS(_PI(0.4 * i
)) x2
= rx
+ rx
* SIN(_PI(0.4 * i
)): y2
= ry
+ ry
* COS(_PI(0.4 * i
)) x3
= rx
+ rx
* SIN(_PI(0.4 * i
)): y3
= ry
+ ry
* COS(_PI(0.4 * i
)) x4
= rx
+ rx
* SIN(_PI(0.4 * i
)): y4
= ry
+ ry
* COS(_PI(0.4 * i
)) x5
= rx
+ rx
* SIN(_PI(0.4 * i
)): y5
= ry
+ ry
* COS(_PI(0.4 * i
))
vertColor
(0) = INT(p5random
(0, 5)) f7: kk = 0
IF k
= vertColor
(j
) THEN kk
= 1 vertColor(i) = k
preVert = 1
i = i + 1
IF p_e
> 0 AND p_e
< 0.2 AND preVert
<> 1 THEN px
= px
+ 0.5 * (x1
- px
): py
= py
+ 0.5 * (y1
- py
): preVert
= 1 IF p_e
> 0.2 AND p_e
< 0.4 AND preVert
<> 2 THEN px
= px
+ 0.5 * (x2
- px
): py
= py
+ 0.5 * (y2
- py
): preVert
= 2 IF p_e
> 0.4 AND p_e
< 0.6 AND preVert
<> 3 THEN px
= px
+ 0.5 * (x3
- px
): py
= py
+ 0.5 * (y3
- py
): preVert
= 3 IF p_e
> 0.6 AND p_e
< 0.8 AND preVert
<> 4 THEN px
= px
+ 0.5 * (x4
- px
): py
= py
+ 0.5 * (y4
- py
): preVert
= 4 IF p_e
> 0.8 AND p_e
< 1.0 AND preVert
<> 5 THEN px
= px
+ 0.5 * (x5
- px
): py
= py
+ 0.5 * (y5
- py
): preVert
= 5
x1
= rx
+ rx
* SIN(_PI(0.4 * i
)): y1
= ry
+ ry
* COS(_PI(0.4 * i
)) x2
= rx
+ rx
* SIN(_PI(0.4 * i
)): y2
= ry
+ ry
* COS(_PI(0.4 * i
)) x3
= rx
+ rx
* SIN(_PI(0.4 * i
)): y3
= ry
+ ry
* COS(_PI(0.4 * i
)) x4
= rx
+ rx
* SIN(_PI(0.4 * i
)): y4
= ry
+ ry
* COS(_PI(0.4 * i
)) x5
= rx
+ rx
* SIN(_PI(0.4 * i
)): y5
= ry
+ ry
* COS(_PI(0.4 * i
))
vertColor
(0) = INT(p5random
(0, 5)) f8: kk = 0
IF k
= vertColor
(j
) THEN kk
= 1 vertColor(i) = k
preVert1 = 1
i = i + 1
IF preVert1
<> 1 AND prevert2
<> 5 OR preVert1
<> 5 AND prevert2
<> 1 THEN px
= px
+ 0.5 * (x1
- px
): py
= py
+ 0.5 * (y1
- py
): prevert2
= preVert1: preVert1
= 1 IF preVert1
<> 1 AND prevert2
<> 3 OR preVert1
<> 3 AND prevert2
<> 1 THEN px
= px
+ 0.5 * (x2
- px
): py
= py
+ 0.5 * (y2
- py
): prevert2
= preVert1: preVert1
= 2 IF preVert1
<> 2 AND prevert2
<> 4 OR preVert1
<> 4 AND prevert2
<> 2 THEN px
= px
+ 0.5 * (x3
- px
): py
= py
+ 0.5 * (y3
- py
): prevert2
= preVert1: preVert1
= 3 IF preVert1
<> 3 AND prevert2
<> 5 OR preVert1
<> 5 AND prevert2
<> 3 THEN px
= px
+ 0.5 * (x4
- px
): py
= py
+ 0.5 * (y4
- py
): prevert2
= preVert1: preVert1
= 4 IF preVert1
<> 1 AND prevert2
<> 4 OR preVert1
<> 4 AND prevert2
<> 1 THEN px
= px
+ 0.5 * (x5
- px
): py
= py
+ 0.5 * (y5
- py
): prevert2
= preVert1: preVert1
= 5
'function taken from p5js.bas
'https://bit.ly/p5jsbas
p5random!
= RND * (mx!
- mn!
) + mn!
[ This attachment cannot be displayed inline in 'Print Page' view ]