_TITLE "Birth of Sierpinski Flies a Kite" 'b+ 2020-01-02 drawKite 400, 500, 140, .5 'here was Ashish fractal, now put a 2 after drawKite
PRINT "Original Kite Fractal from Ashish, press any..." drawKite2 400, 500, 140, .5
PRINT "Sub in Sierpinski, press any..." drawKite2 400, 500, 140, -.5
PRINT "Mess with the a variable, press any..." drawKite2 400, 500, 140, i
PRINT "Run a continuous change on variable a, press any..." drawKite2 400, 500, 140, i
PRINT "Oh more continuous change on variable a, press any..." PRINT "WOW! what was that!?" PRINT "The Birth of Sierpinski Flies a Kite." PRINT "Actually any symmetric object might dance around like that!" PRINT "Maybe you have one to try?"
SUB drawKite
(x
, y
, s
, a
) drawKite x
+ s
* COS(_PI(2) - a
), (y
- s
) + s
* SIN(_PI(2) - a
), s
/ 2, a
drawKite x
+ s
* COS(_PI + a
), (y
- s
) + s
* SIN(_PI + a
), s
/ 2, a
SUB drawKite2
(xx
, yy
, s
, a
) x = xx: y = yy
x2
= x
+ 3 * s
* COS(_PI(1 / 2) - a
/ 2): y2
= y
+ 3 * s
* SIN(_PI(1 / 2) - a
/ 2) x3
= x
+ 3 * s
* COS(_PI(1 / 2) + a
/ 2): y3
= y
+ 3 * s
* SIN(_PI(1 / 2) + a
/ 2) SierLineTri x, y, x2, y2, x3, y3, 0
drawKite2 x
+ 1 * s
* COS(_PI(2) - a
), (y
- s
) + 1 * s
* SIN(_PI(2) - a
), s
/ 2, a
drawKite2 x
+ 1 * s
* COS(_PI + a
), (y
- s
) + 1 * s
* SIN(_PI + a
), s
/ 2, a
SUB SierLineTri
(x1
, y1
, x2
, y2
, x3
, y3
, depth
) IF depth
= 0 THEN 'draw out triangle if level 0 'find midpoints
IF x2
< x1
THEN mx1
= (x1
- x2
) / 2 + x2
ELSE mx1
= (x2
- x1
) / 2 + x1
IF y2
< y1
THEN my1
= (y1
- y2
) / 2 + y2
ELSE my1
= (y2
- y1
) / 2 + y1
IF x3
< x2
THEN mx2
= (x2
- x3
) / 2 + x3
ELSE mx2
= (x3
- x2
) / 2 + x2
IF y3
< y2
THEN my2
= (y2
- y3
) / 2 + y3
ELSE my2
= (y3
- y2
) / 2 + y2
IF x3
< x1
THEN mx3
= (x1
- x3
) / 2 + x3
ELSE mx3
= (x3
- x1
) / 2 + x1
IF y3
< y1
THEN my3
= (y1
- y3
) / 2 + y3
ELSE my3
= (y3
- y1
) / 2 + y1
LINE (mx1
, my1
)-(mx2
, my2
) ' 'draw all inner triangles LINE (mx2
, my2
)-(mx3
, my3
) LINE (mx1
, my1
)-(mx3
, my3
) IF depth
< 4 THEN 'not done so call me again SierLineTri x1, y1, mx1, my1, mx3, my3, depth + 1
SierLineTri x2, y2, mx1, my1, mx2, my2, depth + 1
SierLineTri x3, y3, mx3, my3, mx2, my2, depth + 1