62 lines
3.1 KiB
Python
Executable File
62 lines
3.1 KiB
Python
Executable File
#!/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())")
|