Microsoft Small Basic

Program Listing: NQR123
' Fill Parallelogram - Simple Version
' Program ID:
param = "x=10;y=10;width=200;height=100;angle=30;"
FillParallelogram()
param = "x=10;y=120;width=200;height=100;angle=45;"
FillParallelogram()
param = "x=10;y=230;width=200;height=100;angle=60;"
FillParallelogram()
Sub FillParallelogram
' param("x"), param("y") - top left position of parallelogram
' param("width"), param("height") - size of parallelogram
' param("angle") - angle [degrees], 0 <= radians(angle) <= atan(width/height)
local["a"] = Math.GetRadians(param["angle"])
If local["a"] < 0 Then
local["a"] = 0
ElseIf Math.ArcTan(param["width"] / param["height"]) < local["a"] Then
local["a"] = Math.ArcTan(param["width"] / param["height"])
EndIf
local["x1"] = param["x"] + param["height"] * Math.Tan(local["a"])
local["y1"] = param["y"]
local["x2"] = param["x"] + param["width"]
local["y2"] = param["y"]
local["x3"] = local["x2"] - param["height"] * Math.Tan(local["a"])
local["y3"] = param["y"] + param["height"]
local["x4"] = param["x"]
local["y4"] = local["y3"]
GraphicsWindow.FillTriangle(local["x1"], local["y1"], local["x2"], local["y2"], local["x3"], local["y3"])
GraphicsWindow.FillTriangle(local["x1"], local["y1"], local["x4"], local["y4"], local["x3"], local["y3"])
EndSub