-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathprotractor
More file actions
140 lines (118 loc) · 2.93 KB
/
protractor
File metadata and controls
140 lines (118 loc) · 2.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# "PROTRACTOR FOR AVIATION USE"
import geometry2d
def d = -128 / 2
def offset = 0.94
def nm = 3.704
#DEGREE TICS
def tic(deg as Number h as Number offset as Number) = {
def inner = d * offset
def inner2 = (d * (offset * -1))
def x1 = cos(radians(deg)) * d
def y1 = sin(radians(deg)) * d
def x2 = x1 * (d / y1)
#TOP AND BOTTOM
line((x1 * inner / y1) inner x2 d)
line((x1 * inner / y1) inner2 x2 d * -1)
#LEFT AND RIGHT
line((inner) (x1 * inner / y1) d x2)
line((inner2) (x1 * inner / y1) d * -1 x2)
}
#one degree tics
repeat 45 to 136 using i {
tic(i d offset)
}
#five degree tics
repeat 45 to 64 using j {
def five = j * 5
tic(five d 0.9)
}
#outer rectangle
rectangle(d * -1 d * -1 d d)
#inner rectangle
rectangle((d * offset * -1) (d * offset * -1) d * offset d * offset)
#GRID
repeat -7 to 8 using j {
def k = j * nm * 2
def l = (d * -1) - 12
line(d + 12 k l k)
line(k d + 12 k l)
}
#RANGE CIRCLES
circle(0 0 nm * 5)
circle(0 0 nm * 10)
#DISTANCE TICS
repeat -6 to 8 using k{
def l = (k - 0.5) * 2
line(-3 nm * l 3 nm * l)
line(nm * l -3 nm * l 3)
}
#BOTTOM
def annotation1(deg as Number h as Number offset as Number) = {
def inner = d * offset
def inner2 = (d * (offset * -1))
def x1 = (cos(radians(deg)) * d) * -1
def x2 = (cos(radians(deg)) * d)
def y1 = sin(radians(deg)) * d
text((x1 * inner / y1) - 4 inner 5 deg - 90)
}
repeat 23 to 32 using l{
def m = l * 10
annotation1(m d 0.9)
}
#TOP, 320 - 360
def annotation2(deg as Number h as Number offset as Number) = {
def inner = d * offset
def inner2 = (d * (offset * -1))
def x1 = (cos(radians(deg)) * d) * -1
def x2 = (cos(radians(deg)) * d)
def y1 = sin(radians(deg)) * d
text((x2 * inner / y1) - 4 inner2 - 2 5 deg + 90)
}
repeat 23 to 28 using l{
def m = l * 10
annotation2(m d 0.9)
}
#TOP, 0 - 40
def annotation3(deg as Number h as Number offset as Number) = {
def inner = d * offset
def inner2 = (d * (offset * -1))
def x1 = (cos(radians(deg)) * d) * -1
def x2 = (cos(radians(deg)) * d)
def y1 = sin(radians(deg)) * d
text((x2 * inner / y1) - 2 inner2 - 2 5 deg - 270)
}
repeat 28 to 32 using l{
def m = l * 10
annotation3(m d 0.9)
}
#LEFT AND RIGHT
def annotation4(deg as Number h as Number offset as Number) = {
def inner = d * offset
def inner2 = (d * (offset * -1)) - 5
def x1 = (cos(radians(deg)) * d) * -1
def x2 = (cos(radians(deg)) * d)
def y1 = sin(radians(deg)) * d
#LEFT
text(inner ((x2 * inner) / y1 5 deg))
#RIGHT
text(inner2 ((x1 * inner) / y1 5 deg - 180))
}
repeat 23 to 32 using l{
def m = l * 10
annotation4(m d 0.9)
}
#NSEW
text(-2 (d * -1) - 14 8 "N")
text(-2 d + 10 8 "S")
text((d * -1) - 17 -2 8 "E")
text(d + 13 -2 8 "W")
text((d * -1) - 13 (d * -1) - 11 6 "NE")
text((d * -1) - 13 d + 8 6 "SE")
text(d + 5 d + 8 6 "SW")
text(d + 5 (d * -1) - 11 6 "NW")
#SCALE
text(-13 -44 5 "NM 1 : 500.000")
text(-10 19 5 "5 NM")
text(-12 38 5 "10 NM")
#center hole
circle(0 0 1.3)