Microsoft Small Basic

Program Listing: RPB297-0
' Turtle Flower 4
' Copyright © 2020 Nonki Takahashi. The MIT License.
' Program ID RPB297-0

title = "Turtle Flower"
Init()
Torus()
GraphicsWindow.PenWidth = 1
GraphicsWindow.PenColor = "Transparent"
GraphicsWindow.BrushColor = "#99000000"
g = 214
For j = 1 To 390
Turtle.PenUp()
Turtle.Move(scale * _r)
Turtle.PenDown()
If j <= 240 Then
Seed()
ElseIf 351 <= j Then
Petal()
EndIf
Turtle.Turn(angle)
_r = _r + k
_s = _s * ds
EndFor
Turtle.Hide()

Sub Init
gw = 300
gh = 300
GraphicsWindow.Width = gw
GraphicsWindow.Height = gh
Turtle.Speed = 10
Turtle.X = gw / 2
Turtle.Y = gh / 2
Turtle.Show()
k = 144 / 55
angle = 360 / k
GraphicsWindow.Title = title + " " + angle
size = 150
scale = size / 1000
_s = 11
_r = 0
ds = 1.006
EndSub

Sub Petal
points = ""
i = 0
s = 10
Turtle.Turn(-50)
g = g + 1
color = GraphicsWindow.GetColorFromRGB(255, g, 0)
GraphicsWindow.PenColor = color
For a = s To 360 Step s
Turtle.Move(s * (1 + LDMath.Sin(2*a)) / 2.6)
Turtle.Turn(s)
i = i + 1
points[i][1] = Turtle.X
points[i][2] = Turtle.Y
EndFor
Turtle.Turn(50)
GraphicsWindow.BrushColor = color
LDShapes.AddPolygon(points)
EndSub

Sub Seed
points = ""
For i = 1 To 4
Turtle.Move(scale * _s)
Turtle.Turn(90)
points[i][1] = Turtle.X
points[i][2] = Turtle.Y
EndFor
LDShapes.AddPolygon(points)
EndSub

Sub Torus
GraphicsWindow.BrushColor = "Sienna"
GraphicsWindow.PenColor = "LimeGreen"
sepal = 10
GraphicsWindow.PenWidth = sepal
Turtle.PenUp()
Turtle.Move((size - sepal) / 2)
Turtle.Turn(90)
dc = (size - sepal) * Math.Pi / 360
Turtle.PenDown()
For i = 1 To 360
Turtle.Move(dc)
Turtle.Turn(1)
points[i][1] = Turtle.X
points[i][2] = Turtle.Y
EndFor
LDShapes.AddPolygon(points)
Turtle.PenUp()
Turtle.Turn(90)
Turtle.Move((size - sepal) / 2)
EndSub