colregs 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/LICENSE +34 -0
  2. package/PROVENANCE.md +65 -0
  3. package/README.md +50 -0
  4. package/data/applicability.json +1108 -0
  5. package/data/facts.json +308 -0
  6. package/data/geometry.json +372 -0
  7. package/data/images.json +876 -0
  8. package/data/lights.json +229 -0
  9. package/data/rules.json +843 -0
  10. package/fixtures/applicability-fixtures.json +412 -0
  11. package/images/NRHB_23_Intl_dii.png +0 -0
  12. package/images/NRHB_23_a.png +0 -0
  13. package/images/NRHB_23_aii.png +0 -0
  14. package/images/NRHB_23_b.png +0 -0
  15. package/images/NRHB_23_di.png +0 -0
  16. package/images/NRHB_23_e.png +0 -0
  17. package/images/NRHB_24_a.png +0 -0
  18. package/images/NRHB_24_av.png +0 -0
  19. package/images/NRHB_24_d.png +0 -0
  20. package/images/NRHB_24_e.png +0 -0
  21. package/images/NRHB_24_eiii.png +0 -0
  22. package/images/NRHB_24_f.png +0 -0
  23. package/images/NRHB_24_j.png +0 -0
  24. package/images/NRHB_25_a.png +0 -0
  25. package/images/NRHB_25_b.png +0 -0
  26. package/images/NRHB_25_c.png +0 -0
  27. package/images/NRHB_25_d.png +0 -0
  28. package/images/NRHB_25_dii.png +0 -0
  29. package/images/NRHB_25_e.png +0 -0
  30. package/images/NRHB_26_b.png +0 -0
  31. package/images/NRHB_26_biii.png +0 -0
  32. package/images/NRHB_26_ciii.png +0 -0
  33. package/images/NRHB_27_a.png +0 -0
  34. package/images/NRHB_27_aiii.png +0 -0
  35. package/images/NRHB_27_biii.png +0 -0
  36. package/images/NRHB_27_biv.png +0 -0
  37. package/images/NRHB_27_c.png +0 -0
  38. package/images/NRHB_27_d.png +0 -0
  39. package/images/NRHB_27_diii.png +0 -0
  40. package/images/NRHB_27_ei.png +0 -0
  41. package/images/NRHB_27_eii.png +0 -0
  42. package/images/NRHB_27_f.png +0 -0
  43. package/images/NRHB_28.png +0 -0
  44. package/images/NRHB_29_a.png +0 -0
  45. package/images/NRHB_29_aiii.png +0 -0
  46. package/images/NRHB_30_a.png +0 -0
  47. package/images/NRHB_30_d.png +0 -0
  48. package/images/NRHB_30_dii.png +0 -0
  49. package/images/mastheadarc.gif +0 -0
  50. package/images/portarc.gif +0 -0
  51. package/images/stbdarc.gif +0 -0
  52. package/images/sternarc.gif +0 -0
  53. package/images/towingarc.gif +0 -0
  54. package/package.json +12 -0
@@ -0,0 +1,308 @@
1
+ {
2
+ "note": "The fact record a consumer evaluates applicability predicates against. Three orthogonal axes plus scalars; there is no separate COLREGS vessel-class field, because under COLREGS what a vessel is follows from what it is doing.",
3
+ "axes": {
4
+ "propulsion": {
5
+ "values": [
6
+ "power",
7
+ "sail",
8
+ "oars"
9
+ ],
10
+ "cites": {
11
+ "power": "3(b)",
12
+ "sail": "3(c)",
13
+ "oars": "25(d)(ii)"
14
+ },
15
+ "note": "A vessel under sail with propelling machinery in use is 'power' (Rule 3(c)); the 25(e) day shape is the only trace motorsailing leaves at night."
16
+ },
17
+ "activity": {
18
+ "values": [
19
+ "none",
20
+ "fishing",
21
+ "trawling",
22
+ "towing",
23
+ "pushing",
24
+ "being_towed",
25
+ "nuc",
26
+ "ram",
27
+ "ram_underwater",
28
+ "cbd",
29
+ "mine",
30
+ "pilot",
31
+ "diving"
32
+ ],
33
+ "cites": {
34
+ "fishing": "3(d)",
35
+ "trawling": "26(b)",
36
+ "nuc": "3(f)",
37
+ "ram": "3(g)",
38
+ "ram_underwater": "27(d)",
39
+ "cbd": "3(h)",
40
+ "mine": "27(f)",
41
+ "pilot": "29(a)",
42
+ "diving": "27(e)",
43
+ "towing": "24(a)",
44
+ "pushing": "24(b)",
45
+ "being_towed": "24(e)"
46
+ },
47
+ "note": "'ram_underwater' is a vessel restricted in her ability to maneuver that is dredging or engaged in underwater operations (27(d)); it is a refinement of 'ram', not a peer of it, and predicates written for 'ram' also read it."
48
+ },
49
+ "position": {
50
+ "values": [
51
+ "underway",
52
+ "anchored",
53
+ "aground",
54
+ "moored"
55
+ ],
56
+ "cites": {
57
+ "underway": "3(i)"
58
+ },
59
+ "note": "Rule 3(i): underway means not at anchor, not made fast to the shore, not aground."
60
+ }
61
+ },
62
+ "modifiers": {
63
+ "making_way": {
64
+ "type": "boolean",
65
+ "refines": "position=underway",
66
+ "note": "Undefined in the Rules; it means moving through the water. Underway but not making way is free drifting. Only the 26/27-family predicates read it (26(b)(iii), 26(c)(iii), 27(a)(iii), 27(b)(iii)); Rules 23 and 25 gate on 'underway' alone, so a power-driven vessel drifting in neutral still shows full running lights.",
67
+ "actuable": true
68
+ }
69
+ },
70
+ "numerics": {
71
+ "length_m": {
72
+ "type": "number",
73
+ "unit": "m",
74
+ "cite": "3(j)",
75
+ "note": "Length overall. COLREGS thresholds are 7, 12, 20, 50 and 100 m.",
76
+ "actuable": true,
77
+ "signalk": "design.length.value.overall"
78
+ },
79
+ "tow_length_m": {
80
+ "type": "number",
81
+ "unit": "m",
82
+ "cite": "24(a)(i)",
83
+ "note": "From the stern of the towing vessel to the after end of the tow.",
84
+ "actuable": true,
85
+ "signalk": null
86
+ },
87
+ "max_speed_kn": {
88
+ "type": "number",
89
+ "unit": "kn",
90
+ "cite": "23(d)(ii)",
91
+ "note": "Read only by 23(d)(ii). No SignalK path publishes it; design.maxSpeed does not exist in the schema. Kept because the rule has it.",
92
+ "actuable": true,
93
+ "signalk": null
94
+ },
95
+ "gear_extent_m": {
96
+ "type": "number",
97
+ "unit": "m",
98
+ "cite": "26(c)(ii)",
99
+ "actuable": false,
100
+ "signalk": null
101
+ },
102
+ "beam_m": {
103
+ "type": "number",
104
+ "unit": "m",
105
+ "cite": "24(g)",
106
+ "actuable": false,
107
+ "signalk": "design.beam.value"
108
+ }
109
+ },
110
+ "booleans": {
111
+ "composite_unit": {
112
+ "cite": "24(b)",
113
+ "actuable": false
114
+ },
115
+ "non_displacement": {
116
+ "cite": "23(b)",
117
+ "actuable": false,
118
+ "note": "Air-cushion vessel operating in non-displacement mode."
119
+ },
120
+ "wig": {
121
+ "cite": "23(c)",
122
+ "actuable": false
123
+ },
124
+ "near_channel": {
125
+ "cite": "30(e)",
126
+ "actuable": false,
127
+ "note": "At anchor in or near a narrow channel, fairway, or where other vessels normally navigate."
128
+ },
129
+ "inconspicuous_partly_submerged_tow": {
130
+ "cite": "24(g)",
131
+ "actuable": false
132
+ },
133
+ "towed_alongside": {
134
+ "cite": "24(c)",
135
+ "actuable": false
136
+ },
137
+ "obstruction_exists": {
138
+ "cite": "27(d)",
139
+ "actuable": false
140
+ }
141
+ },
142
+ "enums": {
143
+ "obstruction_side": {
144
+ "values": [
145
+ "port",
146
+ "starboard"
147
+ ],
148
+ "cite": "27(d)(i)",
149
+ "actuable": false
150
+ }
151
+ },
152
+ "actuable_subset": {
153
+ "note": "What a switching consumer needs and can get: the three axes (decodable from navigation.state), making_way, and length_m. Everything else is education-side.",
154
+ "fields": [
155
+ "propulsion",
156
+ "activity",
157
+ "position",
158
+ "making_way",
159
+ "length_m"
160
+ ]
161
+ },
162
+ "signalk_navigation_state": {
163
+ "source": "@signalk/signalk-schema schemas/groups/navigation.json (state.value.enum)",
164
+ "verified": "2026-08-29",
165
+ "decode": {
166
+ "not under command": {
167
+ "activity": "nuc",
168
+ "position": "underway"
169
+ },
170
+ "anchored": {
171
+ "activity": "none",
172
+ "position": "anchored"
173
+ },
174
+ "moored": {
175
+ "activity": "none",
176
+ "position": "moored"
177
+ },
178
+ "sailing": {
179
+ "propulsion": "sail",
180
+ "activity": "none",
181
+ "position": "underway"
182
+ },
183
+ "motoring": {
184
+ "propulsion": "power",
185
+ "activity": "none",
186
+ "position": "underway"
187
+ },
188
+ "towing < 200m": {
189
+ "propulsion": "power",
190
+ "activity": "towing",
191
+ "position": "underway",
192
+ "tow_length_m": {
193
+ "lte": 200
194
+ }
195
+ },
196
+ "towing > 200m": {
197
+ "propulsion": "power",
198
+ "activity": "towing",
199
+ "position": "underway",
200
+ "tow_length_m": {
201
+ "gt": 200
202
+ }
203
+ },
204
+ "pushing": {
205
+ "propulsion": "power",
206
+ "activity": "pushing",
207
+ "position": "underway"
208
+ },
209
+ "fishing": {
210
+ "activity": "fishing",
211
+ "position": "underway"
212
+ },
213
+ "fishing-hampered": {
214
+ "activity": "fishing",
215
+ "position": "underway",
216
+ "annex_ii_signal": "purse_seine_hampered"
217
+ },
218
+ "trawling": {
219
+ "activity": "trawling",
220
+ "position": "underway"
221
+ },
222
+ "trawling-shooting": {
223
+ "activity": "trawling",
224
+ "position": "underway",
225
+ "annex_ii_signal": "shooting"
226
+ },
227
+ "trawling-hauling": {
228
+ "activity": "trawling",
229
+ "position": "underway",
230
+ "annex_ii_signal": "hauling"
231
+ },
232
+ "pilotage": {
233
+ "activity": "pilot"
234
+ },
235
+ "not-under-way": {},
236
+ "aground": {
237
+ "activity": "none",
238
+ "position": "aground"
239
+ },
240
+ "restricted manouverability": {
241
+ "activity": "ram"
242
+ },
243
+ "restricted manouverability towing < 200m": {
244
+ "propulsion": "power",
245
+ "activity": "ram",
246
+ "also_activity": "towing",
247
+ "tow_length_m": {
248
+ "lte": 200
249
+ }
250
+ },
251
+ "restricted manouverability towing > 200m": {
252
+ "propulsion": "power",
253
+ "activity": "ram",
254
+ "also_activity": "towing",
255
+ "tow_length_m": {
256
+ "gt": 200
257
+ }
258
+ },
259
+ "restricted manouverability underwater operations": {
260
+ "activity": "ram_underwater"
261
+ },
262
+ "constrained by draft": {
263
+ "propulsion": "power",
264
+ "activity": "cbd",
265
+ "position": "underway"
266
+ },
267
+ "mine clearance": {
268
+ "activity": "mine"
269
+ }
270
+ },
271
+ "undecodable": [
272
+ "Reserved for future amendment of Navigational Status for HSC",
273
+ "Reserved for future amendment of Navigational Status for WIG",
274
+ "Reserved for future use-11",
275
+ "Reserved for future use-12",
276
+ "Reserved for future use-13",
277
+ "Reserved for future use-14",
278
+ "not defined (example)"
279
+ ],
280
+ "lossy": [
281
+ {
282
+ "what": "fishing or trawling at anchor",
283
+ "why": "Rule 26(a) applies 'whether underway or at anchor', but 'fishing' and 'anchored' are mutually exclusive values of one flat enum, so the pair cannot be stated.",
284
+ "cite": "26(a)"
285
+ },
286
+ {
287
+ "what": "making way vs. underway-but-not-making-way",
288
+ "why": "No enum value distinguishes them, and no SignalK path carries the boolean. 26(b)(iii), 26(c)(iii), 27(a)(iii) and 27(b)(iii) all turn on it.",
289
+ "cite": "27(a)(i) vs 27(a)(iii)"
290
+ },
291
+ {
292
+ "what": "pilotage underway vs. at anchor",
293
+ "why": "'pilotage' fixes activity but says nothing about position; 29(a)(ii) and 29(a)(iii) prescribe different lights.",
294
+ "cite": "29(a)"
295
+ },
296
+ {
297
+ "what": "not-under-way",
298
+ "why": "Decodes to no axis at all: it excludes 'underway' but does not say which of anchored, moored or aground holds.",
299
+ "cite": "3(i)"
300
+ },
301
+ {
302
+ "what": "vessel or object being towed, and diving",
303
+ "why": "No enum value exists for either; 24(e) and 27(e) are unreachable from navigation.state.",
304
+ "cite": "24(e), 27(e)"
305
+ }
306
+ ]
307
+ }
308
+ }
@@ -0,0 +1,372 @@
1
+ {
2
+ "ruleset": "international",
3
+ "source": "Annex I - Positioning and Technical Details of Lights and Shapes (33 CFR 84), International text",
4
+ "note": "The structured half of the image payload: where each light sits and what it looks like, so a renderer can draw a configuration instead of picking a scan. Bearing arcs live in lights.json; this file carries heights, spacings, colour and intensity.",
5
+ "vertical_positioning": [
6
+ {
7
+ "cite": "AnxI.2(a)(i)",
8
+ "light": "masthead",
9
+ "which": "forward (or the only one)",
10
+ "when": {
11
+ "propulsion": "power",
12
+ "length_m": {
13
+ "gte": 20
14
+ }
15
+ },
16
+ "datum": "hull",
17
+ "min_m": 6,
18
+ "max_m": 12,
19
+ "also": "if the breadth of the vessel exceeds 6 m, not less than that breadth",
20
+ "text": "The forward masthead light, or if only one masthead light is carried, then that light, at a height above the hull of not less than 6 meters, and, if the breadth of the vessel exceeds 6 meters, then at a height above the hull not less than such breadth, so however that the light need not be placed at a greater height above the hull than 12 meters."
21
+ },
22
+ {
23
+ "cite": "AnxI.2(a)(ii)",
24
+ "light": "masthead",
25
+ "which": "after",
26
+ "when": {
27
+ "propulsion": "power",
28
+ "length_m": {
29
+ "gte": 20
30
+ }
31
+ },
32
+ "datum": "forward masthead light",
33
+ "min_m": 4.5,
34
+ "text": "when two masthead lights are carried the after one shall be at least 4.5 meters vertically higher than the forward one."
35
+ },
36
+ {
37
+ "cite": "AnxI.2(b)",
38
+ "light": "masthead",
39
+ "constraint": "separation",
40
+ "text": "The vertical separation of the masthead lights of power-driven vessels shall be such that in all normal conditions of trim the after light will be seen over and separate from the forward light at a distance of 1000 meters from the stem when viewed from sea level."
41
+ },
42
+ {
43
+ "cite": "AnxI.2(c)",
44
+ "light": "masthead",
45
+ "when": {
46
+ "propulsion": "power",
47
+ "length_m": {
48
+ "gte": 12,
49
+ "lt": 20
50
+ }
51
+ },
52
+ "datum": "gunwale",
53
+ "min_m": 2.5,
54
+ "text": "The masthead light of a power-driven vessel of 12 meters but less than 20 meters in length shall be placed at a height above the gunwale of not less than 2.5 meters."
55
+ },
56
+ {
57
+ "cite": "AnxI.2(d)",
58
+ "light": "masthead",
59
+ "when": {
60
+ "propulsion": "power",
61
+ "length_m": {
62
+ "lt": 12
63
+ }
64
+ },
65
+ "datum": "gunwale",
66
+ "min_m": null,
67
+ "also": "when a masthead light, or the 23(d)(i) all-round light, is carried in addition to sidelights, it shall be at least 1 m higher than the sidelights",
68
+ "datum_secondary": "sidelights",
69
+ "min_above_sidelights_m": 1,
70
+ "text": "A power-driven vessel of less than 12 meters in length may carry the uppermost light at a height of less than 2.5 meters above the gunwale. When, however, a masthead light is carried in addition to sidelights and a sternlight or the all-round light prescribed in Rule 23(d)(i) is carried in addition to sidelights, then such masthead light or all-round light shall be carried at least 1 meter higher than the sidelights."
71
+ },
72
+ {
73
+ "cite": "AnxI.2(e)",
74
+ "light": "masthead",
75
+ "when": {
76
+ "activity": [
77
+ "towing",
78
+ "pushing"
79
+ ]
80
+ },
81
+ "datum": "forward masthead light",
82
+ "min_m": 4.5,
83
+ "text": "One of the two or three masthead lights prescribed for a power-driven vessel when engaged in towing or pushing another vessel shall be placed in the same position as either the forward masthead light or the after masthead light, provided that, if carried on the after mast, the lowest after masthead light shall be at least 4.5 meters vertically higher than the forward masthead light."
84
+ },
85
+ {
86
+ "cite": "AnxI.2(f)(i)",
87
+ "light": "masthead",
88
+ "constraint": "clearance",
89
+ "text": "The masthead lights or lights prescribed in Rule 23(a) shall be so placed as to be above and clear of all other lights and obstructions except as described in paragraph (f)(ii)."
90
+ },
91
+ {
92
+ "cite": "AnxI.2(f)(ii)",
93
+ "light": "all_round",
94
+ "applies_to_entries": [
95
+ "27b-id",
96
+ "28"
97
+ ],
98
+ "text": "When it is impracticable to carry the all-round lights prescribed by Rule 27(b)(i) or Rule 28 below the masthead lights, they may be carried above the after masthead light(s) or vertically in between the forward masthead light(s) and after masthead light(s), provided that in the latter case the requirement of paragraph 3(c) shall be complied with."
99
+ },
100
+ {
101
+ "cite": "AnxI.2(g)",
102
+ "light": "sidelights",
103
+ "when": {
104
+ "propulsion": "power"
105
+ },
106
+ "datum": "forward masthead light",
107
+ "max_fraction_of_masthead_height": 0.75,
108
+ "text": "The sidelights of a power-driven vessel shall be placed at a height above the hull not greater than three quarters of that of the forward masthead light. They shall not be so low as to be interfered with by deck lights."
109
+ },
110
+ {
111
+ "cite": "AnxI.2(h)",
112
+ "light": "sidelights",
113
+ "combined": true,
114
+ "when": {
115
+ "propulsion": "power",
116
+ "length_m": {
117
+ "lt": 20
118
+ }
119
+ },
120
+ "datum": "masthead light",
121
+ "min_below_m": 1,
122
+ "text": "The sidelights, if in a combined lantern and carried on a power-driven vessel of less than 20 meters in length, shall be placed not less than 1 meter below the masthead light."
123
+ },
124
+ {
125
+ "cite": "AnxI.2(i)(i)",
126
+ "constraint": "vertical line spacing",
127
+ "when": {
128
+ "length_m": {
129
+ "gte": 20
130
+ }
131
+ },
132
+ "min_spacing_m": 2,
133
+ "lowest_light": {
134
+ "datum": "hull",
135
+ "min_m": 4,
136
+ "except": "where a towing light is required"
137
+ },
138
+ "text": "On a vessel of 20 meters in length or more such lights shall be spaced not less than 2 meters apart, and the lowest of these lights shall, except where a towing light is required, be placed at a height of not less than 4 meters above the hull."
139
+ },
140
+ {
141
+ "cite": "AnxI.2(i)(ii)",
142
+ "constraint": "vertical line spacing",
143
+ "when": {
144
+ "length_m": {
145
+ "lt": 20
146
+ }
147
+ },
148
+ "min_spacing_m": 1,
149
+ "lowest_light": {
150
+ "datum": "gunwale",
151
+ "min_m": 2,
152
+ "except": "where a towing light is required"
153
+ },
154
+ "text": "On a vessel of less than 20 meters in length such lights shall be spaced not less than 1 meter apart and the lowest of these lights shall, except where a towing light is required, be placed at a height of not less than 2 meters above the gunwale."
155
+ },
156
+ {
157
+ "cite": "AnxI.2(i)(iii)",
158
+ "constraint": "vertical line spacing",
159
+ "equal_spacing": true,
160
+ "text": "When three lights are carried they shall be equally spaced."
161
+ },
162
+ {
163
+ "cite": "AnxI.2(j)",
164
+ "applies_to_entries": [
165
+ "26b-id",
166
+ "26c-id"
167
+ ],
168
+ "datum": "sidelights",
169
+ "min_multiple_of_pair_spacing": 2,
170
+ "text": "The lower of the two all-round lights prescribed for a vessel when engaged in fishing shall be at a height above the sidelights not less than twice the distance between the two vertical lights."
171
+ },
172
+ {
173
+ "cite": "AnxI.2(k)",
174
+ "applies_to_entries": [
175
+ "30a"
176
+ ],
177
+ "datum": "after anchor light",
178
+ "min_m": 4.5,
179
+ "also": {
180
+ "when": {
181
+ "length_m": {
182
+ "gte": 50
183
+ }
184
+ },
185
+ "datum": "hull",
186
+ "min_m": 6
187
+ },
188
+ "text": "The forward anchor light prescribed in Rule 30(a)(i), when two are carried, shall not be less than 4.5 meters above the after one. On a vessel of 50 meters or more in length this forward anchor light shall be placed at a height of not less than 6 meters above the hull."
189
+ }
190
+ ],
191
+ "horizontal_positioning": [
192
+ {
193
+ "cite": "AnxI.3(a)",
194
+ "light": "masthead",
195
+ "constraint": "separation",
196
+ "min_fraction_of_length": 0.25,
197
+ "need_not_exceed_m": 50,
198
+ "forward_light_max_fraction_of_length_from_stem": 0.5,
199
+ "text": "Except as specified in paragraph (e), when two masthead lights are prescribed for a power-driven vessel, the horizontal distance between them shall not be less than one quarter of the length of the vessel but need not be more than 50 meters. The forward light shall be placed not more than one half of the length of the vessel from the stem."
200
+ },
201
+ {
202
+ "cite": "AnxI.3(b)",
203
+ "light": "sidelights",
204
+ "when": {
205
+ "propulsion": "power",
206
+ "length_m": {
207
+ "gte": 20
208
+ }
209
+ },
210
+ "text": "On a power-driven vessel of 20 meters or more in length the sidelights shall not be placed in front of the forward masthead lights. They shall be placed at or near the side of the vessel."
211
+ },
212
+ {
213
+ "cite": "AnxI.3(c)",
214
+ "applies_to_entries": [
215
+ "27b-id"
216
+ ],
217
+ "min_offset_from_centerline_m": 2,
218
+ "text": "When the lights prescribed in Rule 27(b)(i) are placed vertically between the forward masthead light(s) and the after masthead light(s), these all-round lights shall be placed at a horizontal distance of not less than 2 meters from the fore and aft centerline of the vessel in the athwartship direction."
219
+ },
220
+ {
221
+ "cite": "AnxI.3(d)",
222
+ "light": "masthead",
223
+ "text": "When only one masthead light is prescribed for a power-driven vessel, this light shall be exhibited forward of amidships. For a vessel of less than 20 meters in length, the vessel shall exhibit one masthead light as far forward as is practicable."
224
+ }
225
+ ],
226
+ "direction_indicating": [
227
+ {
228
+ "cite": "AnxI.4(a)",
229
+ "applies_to_entries": [
230
+ "26c-gear"
231
+ ],
232
+ "horizontal_from_identity_lights_m": {
233
+ "min": 2,
234
+ "max": 6
235
+ },
236
+ "vertical": "not higher than the 26(c)(i) all-round white light and not lower than the sidelights",
237
+ "text": "The light indicating the direction of the outlying gear from a vessel engaged in fishing as prescribed in Rule 26(c)(ii) shall be placed at a horizontal distance of not less than 2 meters and not more than 6 meters away from the two all-round red and white lights. This light shall be placed not higher than the all-round white light prescribed in Rule 26(c)(i) and not lower than the sidelights."
238
+ },
239
+ {
240
+ "cite": "AnxI.4(b)",
241
+ "applies_to_entries": [
242
+ "27d"
243
+ ],
244
+ "horizontal_from_ram_lights_m": {
245
+ "min": 2
246
+ },
247
+ "vertical": "the upper of these lights shall not be higher than the lower of the three 27(b)(i) lights",
248
+ "text": "The lights and shapes on a vessel engaged in dredging or underwater operations to indicate the obstructed side and/or the side on which it is safe to pass, as prescribed in Rule 27(d)(i) and (ii), shall be placed at the maximum practical horizontal distance, but in no case less than 2 meters, from the lights or shapes prescribed in Rule 27(b)(i) and (ii). In no case shall the upper of these lights or shapes be at a greater height than the lower of the three lights or shapes prescribed in Rule 27(b)(i) and (ii)."
249
+ }
250
+ ],
251
+ "shapes": {
252
+ "cite": "AnxI.6",
253
+ "color": "black",
254
+ "ball": {
255
+ "min_diameter_m": 0.6,
256
+ "cite": "AnxI.6(a)(i)"
257
+ },
258
+ "cone": {
259
+ "min_base_diameter_m": 0.6,
260
+ "height_equals_diameter": true,
261
+ "cite": "AnxI.6(a)(ii)"
262
+ },
263
+ "cylinder": {
264
+ "min_diameter_m": 0.6,
265
+ "height_multiple_of_diameter": 2,
266
+ "cite": "AnxI.6(a)(iii)"
267
+ },
268
+ "diamond": {
269
+ "composition": "two cones with a common base",
270
+ "cite": "AnxI.6(a)(iv)"
271
+ },
272
+ "vertical_spacing_min_m": 1.5,
273
+ "small_vessel_relief": {
274
+ "when": {
275
+ "length_m": {
276
+ "lt": 20
277
+ }
278
+ },
279
+ "text": "In a vessel of less than 20 meters in length shapes of lesser dimensions but commensurate with the size of the vessel may be used and the distance apart may be correspondingly reduced."
280
+ }
281
+ },
282
+ "colors": {
283
+ "cite": "AnxI.7",
284
+ "standard": "CIE Publication No. 2.2 (TC-1.6), 1975, 'Colors of Light Signals'",
285
+ "chromaticity_corners": {
286
+ "white": {
287
+ "x": [
288
+ 0.525,
289
+ 0.525,
290
+ 0.452,
291
+ 0.31,
292
+ 0.31,
293
+ 0.443
294
+ ],
295
+ "y": [
296
+ 0.382,
297
+ 0.44,
298
+ 0.44,
299
+ 0.348,
300
+ 0.283,
301
+ 0.382
302
+ ]
303
+ },
304
+ "green": {
305
+ "x": [
306
+ 0.028,
307
+ 0.009,
308
+ 0.3,
309
+ 0.203
310
+ ],
311
+ "y": [
312
+ 0.385,
313
+ 0.723,
314
+ 0.511,
315
+ 0.356
316
+ ]
317
+ },
318
+ "red": {
319
+ "x": [
320
+ 0.68,
321
+ 0.66,
322
+ 0.735,
323
+ 0.721
324
+ ],
325
+ "y": [
326
+ 0.32,
327
+ 0.32,
328
+ 0.265,
329
+ 0.259
330
+ ]
331
+ },
332
+ "yellow": {
333
+ "x": [
334
+ 0.612,
335
+ 0.618,
336
+ 0.575,
337
+ 0.575
338
+ ],
339
+ "y": [
340
+ 0.382,
341
+ 0.382,
342
+ 0.425,
343
+ 0.406
344
+ ]
345
+ }
346
+ }
347
+ },
348
+ "intensity": {
349
+ "cite": "AnxI.8",
350
+ "formula": "I = 3.43e6 * T * D^2 * K^-D",
351
+ "terms": {
352
+ "I": "luminous intensity in candelas under service conditions",
353
+ "T": "threshold factor, 2e-7 lux",
354
+ "D": "range of visibility (luminous range) in nautical miles",
355
+ "K": "atmospheric transmissivity; 0.8 for prescribed lights"
356
+ },
357
+ "table_cd_by_range_nm": {
358
+ "1": 0.9,
359
+ "2": 4.3,
360
+ "3": 12,
361
+ "4": 27,
362
+ "5": 52,
363
+ "6": 94
364
+ }
365
+ },
366
+ "sectors": {
367
+ "cite": "AnxI.9",
368
+ "horizontal": {
369
+ "sidelights_forward": "shall show the minimum required intensities in the forward direction; intensities decrease to reach practical cut-off between 1 and 3 degrees outside the prescribed sectors"
370
+ }
371
+ }
372
+ }