Adding codegen tools
This commit is contained in:
61
codegen/compass-rose.py
Executable file
61
codegen/compass-rose.py
Executable file
@@ -0,0 +1,61 @@
|
||||
#!/usr/bin/python3
|
||||
|
||||
# application to print out the required code to draw a compass rose
|
||||
# of size 1 by 1 in quadrant 1
|
||||
|
||||
import font
|
||||
from matrix import Vector, Matrix, pi
|
||||
from math import cos, sin, pi
|
||||
|
||||
major_len=0.3
|
||||
middle_len=0.15
|
||||
minor_len=0.1
|
||||
|
||||
print("val compass_rose = ")
|
||||
|
||||
# North
|
||||
print(" Design(listOf(Vector(0.0F, 0.5F), Vector(0.0F, {}F)), listOf(Design.Trace(listOf(0, 1), 5.0F, Color.Red))) +".format(0.5-(major_len/2)))
|
||||
|
||||
# N
|
||||
gmap = font.glyph_map("timesr.jhf")
|
||||
vglyph, width = font.typeset(gmap, ["capn"])
|
||||
xform = Matrix.rotation(pi).multiply(Matrix.scale(0.08/width))
|
||||
vglyph = Vector(0.0, 0.3).translate(xform.multiply(vglyph))
|
||||
print(" {} +".format(font.toKotlin(vglyph, "1.5F", "Color.Red")))
|
||||
|
||||
# East
|
||||
print(" Design(listOf(Vector(0.5F, 0.0F), Vector({}F, 0.0F)), listOf(Design.Trace(listOf(0, 1), 5.0F, Color.Gray))) +".format(0.5-(major_len/2)))
|
||||
|
||||
# South
|
||||
print(" Design(listOf(Vector(0.0F, -0.5F), Vector(0.0F, {}F)), listOf(Design.Trace(listOf(0, 1), 5.0F, Color.Gray))) +".format(-0.5+major_len/2))
|
||||
|
||||
# West
|
||||
print(" Design(listOf(Vector(-0.5F, 0.0F), Vector({}F, 0.0F)), listOf(Design.Trace(listOf(0, 1), 5.0F, Color.Gray))) +".format(-0.5+major_len/2))
|
||||
|
||||
# NE
|
||||
print(" Design(listOf(Vector({}F, {}F), Vector({}F, {}F)), listOf(Design.Trace(listOf(0, 1), 3.0F, Color.Gray))) +"
|
||||
.format(cos(pi/4)/2, sin(pi/4)/2, cos(pi/4)*(1-middle_len)/2, sin(pi/4)*(1-middle_len)/2))
|
||||
|
||||
# NW
|
||||
print(" Design(listOf(Vector({}F, {}F), Vector({}F, {}F)), listOf(Design.Trace(listOf(0, 1), 3.0F, Color.Gray))) +"
|
||||
.format(cos(pi/4 + pi/2)/2, sin(pi/4 + pi/2)/2, cos(pi/4 + pi/2)*(1-middle_len)/2, sin(pi/4 + pi/2)*(1-middle_len)/2))
|
||||
|
||||
# SW
|
||||
print(" Design(listOf(Vector({}F, {}F), Vector({}F, {}F)), listOf(Design.Trace(listOf(0, 1), 3.0F, Color.Gray))) +"
|
||||
.format(cos(pi/4 + pi)/2, sin(pi/4 + pi)/2, cos(pi/4 + pi)*(1-middle_len)/2, sin(pi/4 + pi)*(1-middle_len)/2))
|
||||
|
||||
# SE
|
||||
print(" Design(listOf(Vector({}F, {}F), Vector({}F, {}F)), listOf(Design.Trace(listOf(0, 1), 3.0F, Color.Gray))) +"
|
||||
.format(cos(pi/4 + pi + pi/2)/2, sin(pi/4 + pi + pi/2)/2, cos(pi/4 + pi + pi/2)*(1-middle_len)/2, sin(pi/4 + pi + pi/2)*(1-middle_len)/2))
|
||||
|
||||
# minor markings are 3 markers within the other markers, 8 sections of 3 markers.
|
||||
for i in range(0,8):
|
||||
print(" Design(listOf(Vector({}F, {}F), Vector({}F, {}F)), listOf(Design.Trace(listOf(0, 1), 1.0F, Color.Gray))) +"
|
||||
.format(cos( i*pi/4 + pi/16 )/2, sin( i*pi/4 + pi/16)/2, cos( i*pi/4 + pi/16 )*(1-minor_len)/2, sin( i*pi/4 + pi/16)*(1-minor_len)/2))
|
||||
print(" Design(listOf(Vector({}F, {}F), Vector({}F, {}F)), listOf(Design.Trace(listOf(0, 1), 1.0F, Color.Gray))) +"
|
||||
.format(cos( i*pi/4 + 2*pi/16 )/2, sin( i*pi/4 + 2*pi/16)/2, cos( i*pi/4 + 2*pi/16 )*(1-minor_len)/2, sin( i*pi/4 + 2*pi/16)*(1-minor_len)/2))
|
||||
print(" Design(listOf(Vector({}F, {}F), Vector({}F, {}F)), listOf(Design.Trace(listOf(0, 1), 1.0F, Color.Gray))) +"
|
||||
.format(cos( i*pi/4 + 3*pi/16 )/2, sin( i*pi/4 + 3*pi/16)/2, cos( i*pi/4 + 3*pi/16 )*(1-minor_len)/2, sin( i*pi/4 + 3*pi/16)*(1-minor_len)/2))
|
||||
|
||||
|
||||
print(" Design(emptyList(), emptyList())")
|
||||
Reference in New Issue
Block a user