birdhouse.frink

View or download birdhouse.frink in plain text format


maxw = 15.5 cm
maxh = 20.15 cm

theta = 30 deg

wf = maxw
we = wf/2
hr = we tan[theta]
h0 = maxh - hr

hpeak = maxh

l = hr / sin[theta]


println["l is " + format[l, "cm", 2]]


g = new graphics
g.stroke[.5 mm]

// Draw front/back of house
p = new polygon
p.addPoint[-wf/2, 0 cm]
p.addPoint[wf/2, 0 cm]
p.addPoint[wf/2, -h0]
p.addPoint[0 cm, -hpeak]
p.addPoint[-wf/2, -h0]

println["Side height is " + format[h0, "cm", 2]]

g.add[p]

g.drawEllipseCenter[0 cm, -6.8 cm, 1.5 in, 1.5 in]

// Draw book cover
lroof = maxw
wr = lroof cos[theta]
hr = hpeak - lroof sin[theta]


// Draw wood roof
lwoodroof = maxw - 1 cm
wr1 = lwoodroof cos[theta]
hr1 = hpeak - lwoodroof sin[theta]
g.color[0,0,0,.5]

thickness = 6 mm
g.stroke[thickness]
voffset = thickness cos[theta]
//g.line[0 cm, -hpeak - 1/2 voffset, wr1, -hr1 - 1/2 voffset ]
//g.line[0 cm, -hpeak - 1/2 voffset, -wr1, -hr1 - 1/2 voffset]

g.stroke[1 mm]
g.color[0,0,0]
//g.line[0 cm, -hpeak - voffset,   wr, -hr - voffset]
//g.line[0 cm, -hpeak - voffset , -wr, -hr - voffset]

g.show[]


// Draw side
depth = maxw
g2 = new graphics
g2.stroke[.5 mm]
g2.drawRectSides[-depth/2 + thickness, -h0, depth/2 - thickness, 0 cm]
g2.font["SansSerif", 1 cm]
g2.text["side", 0 cm, -h0/2]
g2.show[]

// Draw roof
dwoodroof = maxh - 2 cm
g3 = new graphics
g3.stroke[.5 mm]
g3.drawRectSides[-dwoodroof / 2, lwoodroof, dwoodroof / 2, 0 cm]
g3.font["SansSerif", 1 cm]
g3.text["roof", 0 cm, lwoodroof / 2]
g3.show[]


// Draw floor
g4 = new graphics
g4.stroke[.5 mm]
wfloor = maxw + 4 cm
g4.drawRectCenter[0 cm, 0 cm, wfloor, wfloor]
g4.font["SansSerif", 1 cm]
g4.text["floor", 0 cm, 0 cm]
g4.show[]

// Draw felt under floor
wfelt = wfloor - 1 cm
g6 = new graphics
g6.drawRectCenter[0 cm, 0 cm, wfelt, wfelt]
g6.stroke[.5 mm]
g6.font["SansSerif", 1 cm]
g6.text["felt", 0 cm, 0 cm]
g6.show[]

// Draw supports
g5 = new graphics
g5.stroke[.5 mm]
ps = new polygon

// Width of support
ws = 13 mm
wout = we - thickness
dout = wout tan[theta]
hout = hpeak - dout

win = wout - ws
din = win tan[theta]
hin = hpeak - din

ps.addPoint[0 cm, 0 cm]
ps.addPoint[ws, 0 cm]
ps.addPoint[ws, -hout]
ps.addPoint[0 cm, -hin]

g5.add[ps]
g5.show[]


View or download birdhouse.frink in plain text format


This is a program written in the programming language Frink.
For more information, view the Frink Documentation or see More Sample Frink Programs.

Alan Eliasen was born 17835 days, 17 hours, 26 minutes ago.