Microsoft Small Basic

Program Listing: NKL035
' Quadrilaterals
' Copyright © 2018 Nonki Takahashi. The MIT License.
' Last update 2018-02-02

GraphicsWindow.Title = "Quadrilaterals"
Turtle.Speed = 9
GraphicsWindow.BrushColor = "#0F0"
caption = "Quadrilateral"
x[0] = 30
y[0] = 40
a[0] = -40
a[1] = -110
l[1] = 2 * (100 / Math.SquareRoot(3))
a[2] = -120
ll = 100 * Math.Tan(Math.GetRadians(40))
l[2] = l[1] / 2 + ll
a[3] = -110
l[3] = ll * Math.Sin(Math.GetRadians(20)) * 2
a[4] = -30
l[4] = ll
x[1] = x[0] + l[1] / 2
y[1] = y[0]
DrawQuadrilateral()
GraphicsWindow.BrushColor = "#0F7"
caption = "Trapezoid"
x[0] = 170
y[0] = 40
a[0] = -90
a[1] = -70
l[1] = 100 / Math.Cos(Math.GetRadians(20))
a[2] = -110
ll = 30
l[2] = 100 * Math.Tan(Math.GetRadians(20)) + ll + 100 * Math.Tan(Math.GetRadians(30))
a[3] = -120
l[3] = 100 / Math.Cos(Math.GetRadians(30))
a[4] = -60
l[4] = ll
x[1] = x[0] + l[1] / 2
y[1] = y[0]
DrawQuadrilateral()
GraphicsWindow.BrushColor = "#0FF"
caption = "Isosceles Trapezoid"
x[0] = 310
y[0] = 40
a[0] = -90
a[1] = -70
l[1] = 100 / Math.Cos(Math.GetRadians(20))
a[2] = -110
ll = 40
l[2] = 200 * Math.Tan(Math.GetRadians(20)) + ll
a[3] = a[2]
l[3] = l[1]
a[4] = a[1]
l[4] = ll
x[1] = x[0] + l[1] / 2
y[1] = y[0]
DrawQuadrilateral()
GraphicsWindow.BrushColor = "#07F"
caption = "Parallelogram"
x[0] = 460
y[0] = 40
a[0] = -90
a[1] = -60
l[1] = 2 * (100 / Math.SquareRoot(3))
a[2] = -120
l[2] = 80
a[3] = a[1]
l[3] = l[1]
a[4] = a[2]
l[4] = l[2]
x[1] = x[0] + l[1] / 2
y[1] = y[0]
DrawQuadrilateral()
GraphicsWindow.BrushColor = "#00F"
caption = "Rectangle"
x[0] = 40
y[0] = 220
a[0] = -90
For i = 1 To 4
a[i] = -90
EndFor
l[1] = 150
l[2] = 100
l[3] = l[1]
l[4] = l[2]
x[1] = x[0]
y[1] = y[0]
DrawQuadrilateral()
GraphicsWindow.BrushColor = "#70F"
caption = "Kyte"
x[0] = 160
a[0] = -60
a[1] = -60
l[1] = 75
a[2] = -90
l[2] = l[1] * Math.SquareRoot(3)
a[3] = -120
l[3] = l[2]
a[4] = -90
l[4] = l[1]
x[1] = x[0] + l[2] / 2
y[1] = y[0]
DrawQuadrilateral()
GraphicsWindow.BrushColor = "#F0F"
caption = "Rhombus"
x[0] = 310
a[0] = -30
a[1] = -120
a[2] = -60
a[3] = -120
a[4] = -60
ll = 75 / Math.SquareRoot(3)
For i = 1 To 4
l[i] = ll * 2
EndFor
x[1] = x[0] + ll
y[1] = y[0]
DrawQuadrilateral()
GraphicsWindow.BrushColor = "#F07"
caption = "Square"
x[0] = 430
a[0] = -90
For i = 1 To 4
a[i] = -90
l[i] = 150
EndFor
x[1] = x[0]
y[1] = y[0]
DrawQuadrilateral()

Sub DrawQuadrilateral
Turtle.PenUp()
Turtle.MoveTo(x[1], y[1])
Turtle.PenDown()
Turtle.Turn(-Turtle.Angle + a[0])
For i = 1 To 4
Turtle.Turn(a[i])
Turtle.Move(l[i])
x[i] = Turtle.X
y[i] = Turtle.Y
EndFor
GraphicsWindow.FillTriangle(x[1], y[1], x[2], y[2], x[3], y[3])
GraphicsWindow.FillTriangle(x[3], y[3], x[4], y[4], x[1], y[1])
GraphicsWindow.BrushColor = "Black"
GraphicsWindow.DrawText(x[1], y[2] + 10, caption)
EndSub