' This program exported from BASIC Anywhere Machine (Version [5.2.3].[2023.08.29.21.34]) on 2023.09.26 at 23:02 (Coordinated Universal Time)
_Title "Spinner by b+" 'b+ 2021-06-18 (QB64 / QBJS program) found at https://qb64.boards.net/post/1050
' QB64 / QBJS program ported to BAM by Charlie Veniot
' Changes to the QBJS program for the BAM port:
' 🟠BAM requires subroutines to be declared before usage
' 🟠BAM requires list of parameters in subroutine calls to be book-ended by parentheses
' 🟠BAM ignores the LIMIT statement, so commented that out
' 🟠mod: added colour to the graphics
Dim As Long b, r, i
Dim a
DECLARE Sub arc (xCenter, yCenter, arcRadius, dAStart, dAMeasure) ' 🟠added declaration
Screen _NewImage(500, 500, 32)
Const rad = _Pi / 180
While 1
Cls
b = b + 5
For r = 20 To 200 Step 20 ' tsh73 suggested fix for inner most
a = b * r / 20
For i = r - 15 To r
arc (250, 250, i, a, 180) ' 🟠added parentheses
Next
Next
_Display
'_Limit 5 ' 🟠BAM ignores the _LIMIT statement, so commented out
Wend
Sub arc (xCenter, yCenter, arcRadius, dAStart, dAMeasure)
'notes:
'you may want to adjust size and color for line drawing
'using angle measures in degrees to match Just Basic ways with pie and piefilled
'this sub assumes drawing in a CW direction if dAMeasure positive
'for Just Basic angle 0 degrees is due East and angle increases clockwise towards South
'dAStart is degrees to start Angle, due East is 0 degrees
'dAMeasure is degrees added (Clockwise) to dAstart for end of arc
Dim rAngleStart, rAngleEnd, Stepper, lastX, lastY, rAngle, nextX, nextY
rAngleStart = rad * dAStart
rAngleEnd = rad * dAMeasure + rAngleStart
Stepper = rad / (.1 * arcRadius) 'fixed
lastX = xCenter + arcRadius * Cos(rAngleStart)
lastY = yCenter + arcRadius * Sin(rAngleStart)
For rAngle = rAngleStart + Stepper To rAngleEnd Step Stepper
nextX = xCenter + arcRadius * Cos(rAngle)
nextY = yCenter + arcRadius * Sin(rAngle)
Line (lastX, lastY)-(nextX, nextY), _rgb32(190, 250,255) 'int speeds things up ' 🟠added colour to replace the default (white)
lastX = nextX: lastY = nextY
Next
End Sub