_TITLE "Fibonacci Spiral Explorer"
zoom = 50 * (1.9 - .9 * p)
zoom = zoom * (1 + 0.01)
zoom = zoom * (1 - 0.01)
p = p + .005
LOCATE 1, 50:
PRINT "Adjust Parameter and Zoom with arrow keys."
CompassCart.x = 1
CompassCart.y = -1
CompassTheta.x = pi
CompassTheta.y = 3 * pi / 2
Step1 = 0
Step2 = 1
LastPoint.x = 0
LastPoint.y = 0
StepTemp = Step2
Step2 = p * Step2 + Step1
Step1 = StepTemp
x1 = LastPoint.x
y1 = LastPoint.y
x2
= x1
+ SQR(2) * Step2
* CompassCart.x
y2
= y1
+ SQR(2) * Step2
* CompassCart.y
CALL clineb
(x1
* zoom
, y1
* zoom
, x2
* zoom
, y2
* zoom
, _RGBA(255, 255, 255, 155))
IF (CompassCart.x
= 1) AND (CompassCart.y
= 1) THEN CALL ccircle
(x1
* zoom
, y2
* zoom
, SQR(2) * Step2
* zoom
, _RGBA(255, 0, 255, 255), CompassTheta.x
, CompassTheta.y
) IF (CompassCart.x
= -1) AND (CompassCart.y
= 1) THEN CALL ccircle
(x2
* zoom
, y1
* zoom
, SQR(2) * Step2
* zoom
, _RGBA(255, 0, 255, 255), CompassTheta.x
, CompassTheta.y
) IF (CompassCart.x
= -1) AND (CompassCart.y
= -1) THEN CALL ccircle
(x1
* zoom
, y2
* zoom
, SQR(2) * Step2
* zoom
, _RGBA(255, 0, 255, 255), CompassTheta.x
, CompassTheta.y
) IF (CompassCart.x
= 1) AND (CompassCart.y
= -1) THEN CALL ccircle
(x2
* zoom
, y1
* zoom
, SQR(2) * Step2
* zoom
, _RGBA(255, 0, 255, 255), CompassTheta.x
, CompassTheta.y
)
LastPoint.x = x2
LastPoint.y = y2
xx = CompassCart.x
yy = CompassCart.y
CompassCart.x = -1
CompassCart.y = 1
CompassTheta.x = 0
CompassTheta.y = pi / 2
CompassCart.x = -1
CompassCart.y = -1
CompassTheta.x = pi / 2
CompassTheta.y = pi
CompassCart.x = 1
CompassCart.y = -1
CompassTheta.x = pi
CompassTheta.y = 3 * pi / 2
CompassCart.x = 1
CompassCart.y = 1
CompassTheta.x = 3 * pi / 2
CompassTheta.y = 2 * pi