Microsoft Small Basic

Program Listing: DBD871
' Draw Kumiko
' Version 0.1
' Copyright © 2017 Nonki Takahashi. The MIT License.
' Last update 2017-03-15

GraphicsWindow.Title = "Kumiko 0.1"
gw = 648
gh = 176
GraphicsWindow.Width = gw
GraphicsWindow.Height = gh
GraphicsWindow.PenWidth = 2
GraphicsWindow.PenColor = "SaddleBrown"
gap = 50
For i = 1 To 4
x = gap * 2.05 + (i - 1) * gap * 3
y = gap * 1.20
DrawDiamond()
EndFor
_a30 = Math.GetRadians(30)
tan30 = Math.Tan(_a30)
y1 = gh
y2 = 0
l = Math.Ceiling(gh / tan30 / gap)
For x1 = -gap * l To gw Step gap
x2 = x1 + gh / tan30
GraphicsWindow.DrawLine(x1, y1, x2, y2)
GraphicsWindow.DrawLine(x1, y2, x2, y1)
EndFor

Sub DrawAsanoha ' canabis leaf
' param x, y - top position
root3 = Math.SquareRoot(3)
GraphicsWindow.DrawLine(x, y, x, y + gap / root3)
GraphicsWindow.DrawLine(x, y, x - gap / 6, y + gap / 2 / root3)
GraphicsWindow.DrawLine(x - gap / 6, y + gap / 2 / root3, x, y + gap / root3)
GraphicsWindow.DrawLine(x, y, x + gap / 6, y + gap / 2 / root3)
GraphicsWindow.DrawLine(x + gap / 6, y + gap / 2 / root3, x, y + gap / root3)
GraphicsWindow.DrawLine(x - gap / 2, y + gap / 2 / root3, x - gap / 6, y + gap / 2 / root3)
GraphicsWindow.DrawLine(x + gap / 6, y + gap / 2 / root3, x + gap / 2, y + gap / 2 / root3)
EndSub

Sub DrawDiamond
' param x, y - top position
DrawAsanoha()
x = x - gap / 2
y = y + gap / 2 / root3
DrawAsanoha()
x = x + gap / 2
y = y + gap / 2 / root3
DrawAsanoha()
x = x + gap / 2
y = y - gap / 2 / root3
DrawAsanoha()
EndSub