_TITLE "Draw Spinner and Web" 'B+ started 2019-06-15 ' Draw Spinner and web mod 2019-09-17
DIM sc&
, sx
, sy
, sh
'spider stuff DIM a
, tn
, ta
, tcx
, tcy
, tr
, tx
, ty
, tdx
, tdy
, oldx
, oldy
'web stuff
'_SCREENMOVE 300, 20
tn
= 13: ta
= _PI(2 / 13): tcx
= .75 * xmax: tcy
= .33 * ymax
LINE (tcx
+ xmax
* COS(a
* ta
), tcy
+ xmax
* SIN(a
* ta
))-(tcx
+ xmax
* COS(a
* ta
+ _PI), tcy
+ xmax
* SIN(a
* ta
+ _PI)), &H88FFFFFF
tx = tcx: ty = tcy: tdx = 5: tdy = 0
sx = tcx: sy = tcy
a = a + ta: tr = tr + ta
tx
= tcx
+ tr
* COS(a
): ty
= tcy
+ tr
* SIN(a
)tdx
= 1 * COS(sh
): tdy
= 1 * SIN(sh
) 'update web
IF ((sx
- tx
) ^ 2 + (sy
- ty
) ^ 2) ^ .5 < 5 THEN 'setup next target x, y nad new spider heading oldx = sx: oldy = sy
sx = tx: sy = ty
LINE (oldx
, oldy
)-(sx
, sy
), &H66FFFFFF a = a + ta: tr = tr + 3 * ta
tx
= tcx
+ tr
* COS(a
): ty
= tcy
+ tr
* SIN(a
) tdx
= 1 * COS(sh
): tdy
= 1 * SIN(sh
) 'save image wo spider
oldx = sx: oldy = sy
sx = sx + tdx: sy = sy + tdy
LINE (oldx
, oldy
)-(sx
, sy
), &H66FFFFFF '_PRINTSTRING (500, 200), STR$(tx) + STR$(ty) + STR$(tdx) + STR$(tdy) + STR$(sh)
'place spider
drawSpinner sx, sy, 1, sh, &H88221100
DIM x1
, x2
, x3
, x4
, y1
, y2
, y3
, y4
, r
, a
, a1
, a2
, lg
, d
, rd
, red
, blue
, green
switch = switch + 2
switch
= switch
MOD 16 + 1 r = 10 * scale
x1
= x
+ r
* COS(heading
): y1
= y
+ r
* SIN(heading
) r = 2 * r 'lg lengths
a
= heading
+ .9 * lg
* _PI(1 / 5) + (lg
= switch
) * _PI(1 / 10) a
= heading
- .9 * (lg
- 4) * _PI(1 / 5) - (lg
= switch
) * _PI(1 / 10) x2
= x1
+ r
* COS(a
): y2
= y1
+ r
* SIN(a
) drawLink x1
, y1
, 3 * scale
, x2
, y2
, 2 * scale
, _RGB32(red
+ 20, green
+ 10, blue
+ 5) x3
= x2
+ r
* 1.5 * COS(a1
): y3
= y2
+ r
* 1.5 * SIN(a1
) drawLink x2
, y2
, 2 * scale
, x3
, y3
, scale
, _RGB32(red
+ 35, green
+ 17, blue
+ 8) a2
= a1
+ d
* _PI(1 / 8) * rd
/ 8 x4
= x3
+ r
* 1.5 * COS(a2
): y4
= y3
+ r
* 1.5 * SIN(a2
) drawLink x3
, y3
, scale
, x4
, y4
, scale
, _RGB32(red
+ 50, green
+ 25, blue
+ 12) r = r * .5
fcirc x1
, y1
, r
, _RGB32(red
- 20, green
- 10, blue
- 5) x2
= x1
+ (r
+ 1) * COS(heading
- _PI(1 / 12)): y2
= y1
+ (r
+ 1) * SIN(heading
- _PI(1 / 12)) fcirc x2, y2, r * .2, &HFF000000
x2
= x1
+ (r
+ 1) * COS(heading
+ _PI(1 / 12)): y2
= y1
+ (r
+ 1) * SIN(heading
+ _PI(1 / 12)) fcirc x2, y2, r * .2, &HFF000000
r = r * 2
x1
= x
+ r
* .9 * COS(heading
+ _PI): y1
= y
+ r
* .9 * SIN(heading
+ _PI) TiltedEllipseFill
0, x1
, y1
, r
, .7 * r
, heading
+ _PI, _RGB32(red
, green
, blue
)
DIM a
, a1
, a2
, x3
, x4
, x5
, x6
, y3
, y4
, y5
, y6
x3
= x1
+ r1
* COS(a1
): y3
= y1
+ r1
* SIN(a1
) x4
= x1
+ r1
* COS(a2
): y4
= y1
+ r1
* SIN(a2
) x5
= x2
+ r2
* COS(a1
): y5
= y2
+ r2
* SIN(a1
) x6
= x2
+ r2
* COS(a2
): y6
= y2
+ r2
* SIN(a2
) fquad x3, y3, x4, y4, x5, y5, x6, y6, c
fcirc x1, y1, r1, c
fcirc x2, y2, r2, c
'need 4 non linear points (not all on 1 line) list them clockwise so x2, y2 is opposite of x4, y4
ftri x1, y1, x2, y2, x4, y4, c
ftri x3, y3, x4, y4, x1, y1, c
Radius
= ABS(R
): RadiusError
= -Radius: X
= Radius: Y
= 0 LINE (CX
- X
, CY
)-(CX
+ X
, CY
), C
, BF
RadiusError = RadiusError + Y * 2 + 1
LINE (CX
- Y
, CY
- X
)-(CX
+ Y
, CY
- X
), C
, BF
LINE (CX
- Y
, CY
+ X
)-(CX
+ Y
, CY
+ X
), C
, BF
X = X - 1
RadiusError = RadiusError - X * 2
Y = Y + 1
LINE (CX
- X
, CY
- Y
)-(CX
+ X
, CY
- Y
), C
, BF
LINE (CX
- X
, CY
+ Y
)-(CX
+ X
, CY
+ Y
), C
, BF
prc
= _RGB32(255, 255, 255, 255) mx2 = max + max
_SOURCE tef
'point wont read without this! LINE (lasti
, lastj
)-(i
, j
), prc
lasti = i: lastj = j
x = 0
x = x + 1
xleft(y) = x
x = x + 1
x = x + 1
IF x
= mx2
THEN xright
(y
) = xleft
(y
) ELSE xright
(y
) = x
IF xleft
(y
) <> mx2
THEN LINE (xleft
(y
) + x0
- max
, y
+ y0
- max
)-(xright
(y
) + x0
- max
, y
+ y0
- max
), c
, BF