diff options
-rw-r--r-- | 8seg_digit_circuit.svg | 1065 | ||||
-rw-r--r-- | 8seg_strand_power_distribution.svg | 500 | ||||
-rw-r--r-- | center_fw/src/main.c | 2 | ||||
-rw-r--r-- | led_tape.svg | 48 | ||||
-rw-r--r-- | len_map.py | 96 |
5 files changed, 1687 insertions, 24 deletions
diff --git a/8seg_digit_circuit.svg b/8seg_digit_circuit.svg new file mode 100644 index 0000000..f67610d --- /dev/null +++ b/8seg_digit_circuit.svg @@ -0,0 +1,1065 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="210mm" + height="297mm" + viewBox="0 0 210 297" + version="1.1" + id="svg1" + inkscape:version="1.3.2 (091e20ef0f, 2023-11-25, custom)" + sodipodi:docname="8seg_digit_circuit.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview1" + pagecolor="#ffffff" + bordercolor="#000000" + borderopacity="0.25" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + inkscape:document-units="mm" + inkscape:zoom="2" + inkscape:cx="251.25" + inkscape:cy="492.75" + inkscape:window-width="3840" + inkscape:window-height="2091" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="layer1" + showgrid="false" /> + <defs + id="defs1"> + <rect + x="406.95899" + y="527.87061" + width="40.574219" + height="36.401856" + id="rect152" /> + <rect + x="122.64551" + y="276.75879" + width="172.68359" + height="82.104492" + id="rect146" /> + <rect + x="636.1924" + y="49.355225" + width="136.55447" + height="106.04116" + id="rect121" /> + <rect + x="624.4692" + y="16.598365" + width="155.11603" + height="107.82135" + id="rect120" /> + <rect + x="670.42442" + y="498.4256" + width="269.24966" + height="278.60213" + id="rect80" /> + <rect + x="365.72055" + y="199.51234" + width="342.47363" + height="107.58745" + id="rect76" /> + <rect + x="159.17676" + y="268.1709" + width="209.77623" + height="56.109158" + id="rect65" /> + <rect + x="213.55869" + y="338.95828" + width="92.228409" + height="107.67358" + id="rect45" /> + <rect + x="213.55869" + y="338.95828" + width="92.228409" + height="107.67358" + id="rect46" /> + <rect + x="213.55869" + y="338.95828" + width="92.228409" + height="107.67358" + id="rect47" /> + <rect + x="213.55869" + y="338.95828" + width="92.228409" + height="107.67358" + id="rect48" /> + <rect + x="213.55869" + y="338.95828" + width="92.228409" + height="107.67358" + id="rect49" /> + <rect + x="213.55869" + y="338.95828" + width="92.228409" + height="107.67358" + id="rect50" /> + <rect + x="213.55869" + y="338.95828" + width="92.228409" + height="107.67358" + id="rect51" /> + <rect + x="213.55869" + y="338.95828" + width="92.228409" + height="107.67358" + id="rect52" /> + <rect + x="159.17676" + y="268.1709" + width="307.93604" + height="31.362564" + id="rect66" /> + <rect + x="159.17676" + y="268.1709" + width="449.28024" + height="31.606377" + id="rect67" /> + <rect + x="365.72055" + y="199.51234" + width="436.93362" + height="105.38921" + id="rect77" /> + <rect + x="365.72055" + y="199.51234" + width="568.39697" + height="105.62805" + id="rect78" /> + <rect + x="670.42442" + y="498.4256" + width="540.87899" + height="258.26417" + id="rect81" /> + <rect + x="670.42442" + y="498.4256" + width="540.87899" + height="258.26417" + id="rect82" /> + <rect + x="670.42442" + y="498.4256" + width="540.87899" + height="258.26417" + id="rect83" /> + <rect + x="670.42442" + y="498.4256" + width="540.87899" + height="258.26417" + id="rect87" /> + <rect + x="670.42442" + y="498.4256" + width="540.87899" + height="258.26417" + id="rect88" /> + <rect + x="670.42442" + y="498.4256" + width="540.87899" + height="258.26417" + id="rect89" /> + <rect + x="636.1924" + y="49.355225" + width="136.55447" + height="106.04116" + id="rect122" /> + <rect + x="122.64551" + y="276.75879" + width="172.68359" + height="82.104492" + id="rect147" /> + <rect + x="122.64551" + y="276.75879" + width="172.68359" + height="82.104492" + id="rect151" /> + <rect + x="406.95899" + y="527.87061" + width="40.574219" + height="36.401856" + id="rect153" /> + <rect + x="122.64551" + y="276.75879" + width="172.68359" + height="82.104492" + id="rect154" /> + <rect + x="122.64551" + y="276.75879" + width="172.68359" + height="82.104492" + id="rect155" /> + <rect + x="670.42442" + y="498.4256" + width="540.87899" + height="258.26417" + id="rect27" /> + <rect + x="670.42442" + y="498.4256" + width="540.87899" + height="258.26417" + id="rect28" /> + <rect + x="670.42442" + y="498.4256" + width="540.87899" + height="258.26417" + id="rect29" /> + <rect + x="670.42442" + y="498.4256" + width="269.24966" + height="278.60213" + id="rect30" /> + <rect + x="670.42442" + y="498.4256" + width="540.87899" + height="258.26417" + id="rect34" /> + <rect + x="670.42442" + y="498.4256" + width="540.87899" + height="258.26417" + id="rect35" /> + <rect + x="670.42442" + y="498.4256" + width="540.87899" + height="258.26417" + id="rect36" /> + <rect + x="670.42442" + y="498.4256" + width="540.87899" + height="258.26417" + id="rect39" /> + <rect + x="670.42442" + y="498.4256" + width="540.87899" + height="258.26417" + id="rect40" /> + <rect + x="670.42442" + y="498.4256" + width="540.87899" + height="258.26417" + id="rect41" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + id="g80" + transform="translate(-0.52916317,15.070855)" + style="stroke:#e2e2e2;stroke-width:4.6;stroke-dasharray:none;stroke-opacity:1"> + <path + sodipodi:nodetypes="ccccc" + inkscape:connector-curvature="0" + id="path7288-9" + d="M 43.431053,68.411334 V 228.58867 H 166.56894 V 68.411334 Z" + style="fill:none;fill-rule:evenodd;stroke:#e2e2e2;stroke-width:4.6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + inkscape:connector-curvature="0" + id="path7290-2" + d="M 43.431053,68.411334 166.56894,228.58867" + style="fill:none;fill-rule:evenodd;stroke:#e2e2e2;stroke-width:4.6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + inkscape:connector-curvature="0" + id="path7292-0" + d="M 166.56894,68.411334 43.431053,228.58867" + style="fill:none;fill-rule:evenodd;stroke:#e2e2e2;stroke-width:4.6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <use + x="0" + y="0" + xlink:href="#path7288-9" + id="use78" + style="stroke:#e2e2e2;stroke-width:4.6;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1" /> + </g> + <text + xml:space="preserve" + transform="matrix(0.24548338,0,0,0.24548338,-128.28683,-95.399382)" + id="text80" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.6667px;line-height:normal;font-family:'Sitka Display';-inkscape-font-specification:'Sitka Display';text-align:end;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect80);display:inline;fill:#000000;stroke:none;stroke-width:46.0317;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none"><tspan + x="785.27119" + y="514.88774" + id="tspan26"><tspan + style="font-weight:bold" + id="tspan22">LED Tape segments</tspan></tspan></text> + <text + xml:space="preserve" + transform="matrix(0.24548338,0,0,0.24548338,-65.266591,-87.888875)" + id="text81" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.6667px;line-height:normal;font-family:'Sitka Display';-inkscape-font-specification:'Sitka Display';text-align:end;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect81);display:inline;fill:#000000;stroke:none;stroke-width:46.0317;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none" + x="-143.86632" + y="0"><tspan + x="670.42383" + y="514.88774" + id="tspan32"><tspan + style="text-align:start" + id="tspan28">l = 100.0 - 2*3.0 = 94 cm</tspan></tspan></text> + <text + xml:space="preserve" + transform="matrix(0.24548338,0,0,0.24548338,-63.172964,-83.102724)" + id="text82" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.6667px;line-height:normal;font-family:'Sitka Display';-inkscape-font-specification:'Sitka Display';text-align:end;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect82);display:inline;fill:#000000;stroke:none;stroke-width:46.0317;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none" + x="-143.86632" + y="0"><tspan + x="670.42383" + y="514.88774" + id="tspan37"><tspan + style="text-align:start" + id="tspan35">l = 130 - 2*3.0 = 124 cm</tspan></tspan></text> + <text + xml:space="preserve" + transform="matrix(0.24548338,0,0,0.24548338,-55.690478,-78.316574)" + id="text83" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.6667px;line-height:normal;font-family:'Sitka Display';-inkscape-font-specification:'Sitka Display';text-align:end;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect83);display:inline;fill:#000000;stroke:none;stroke-width:46.0317;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none" + x="-143.86632" + y="0"><tspan + x="670.42383" + y="514.88774" + id="tspan41"><tspan + style="text-align:start" + id="tspan40">l = 82 - 2.0 = 80 cm</tspan></tspan></text> + <rect + style="fill:#6699ff;stroke:none;stroke-width:11.3;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none" + id="rect84" + width="4.4600143" + height="2.2300072" + x="64.579918" + y="36.249962" + rx="0" + ry="0" /> + <rect + style="fill:#99cc33;stroke:none;stroke-width:11.3;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none" + id="rect85" + width="4.4600143" + height="2.2300072" + x="64.579918" + y="41.03611" + rx="0" + ry="0" /> + <rect + style="fill:#ff9900;stroke:none;stroke-width:11.3;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none" + id="rect86" + width="4.4600143" + height="2.2300072" + x="64.579918" + y="45.822262" + rx="0" + ry="0" /> + <text + xml:space="preserve" + transform="matrix(0.24548338,0,0,0.24548338,-93.857239,-87.888875)" + id="text86" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.6667px;line-height:normal;font-family:'Sitka Display';-inkscape-font-specification:'Sitka Display';text-align:end;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect87);display:inline;fill:#000000;stroke:none;stroke-width:46.0317;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none" + x="-143.86632" + y="0"><tspan + x="670.42383" + y="514.88774" + id="tspan43"><tspan + style="text-align:start" + id="tspan42">Horizontal (H)</tspan></tspan></text> + <text + xml:space="preserve" + transform="matrix(0.24548338,0,0,0.24548338,-93.857239,-83.102724)" + id="text87" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.6667px;line-height:normal;font-family:'Sitka Display';-inkscape-font-specification:'Sitka Display';text-align:end;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect88);display:inline;fill:#000000;stroke:none;stroke-width:46.0317;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none" + x="-143.86632" + y="0"><tspan + x="670.42383" + y="514.88774" + id="tspan45"><tspan + style="text-align:start" + id="tspan44">Vertical (V)</tspan></tspan></text> + <text + xml:space="preserve" + transform="matrix(0.24548338,0,0,0.24548338,-93.857239,-78.316574)" + id="text88" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.6667px;line-height:normal;font-family:'Sitka Display';-inkscape-font-specification:'Sitka Display';text-align:end;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect89);display:inline;fill:#000000;stroke:none;stroke-width:46.0317;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none" + x="-143.86632" + y="0"><tspan + x="670.42383" + y="514.88774" + id="tspan47"><tspan + style="text-align:start" + id="tspan46">Diagonal (D)</tspan></tspan></text> + <rect + style="fill:none;stroke:#000000;stroke-width:0.20000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1" + id="rect90" + width="35.400009" + height="35.400009" + x="-122.7" + y="145.87085" + rx="0" + ry="0" + transform="scale(-1,1)" /> + <path + style="fill:none;stroke:#cc0000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1" + d="m 91.67838,148.36259 9.02949,11.75325 c 1.40487,2.17107 5.07377,2.43826 8.38538,6.41463 l 9.82133,12.90318" + id="path90" + sodipodi:nodetypes="cccc" /> + <path + style="fill:none;stroke:#003399;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1" + d="m 116.57917,146.46147 -9.0827,11.71217 c -4.37235,4.47023 -1.12999,5.7243 -4.08136,9.73677 l -9.994558,12.76947" + id="path91" + sodipodi:nodetypes="cccc" /> + <rect + style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1" + id="rect91" + width="35.400009" + height="35.400009" + x="-66.709923" + y="72.268623" + rx="0" + ry="0" + transform="scale(-1,1)" /> + <rect + style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1" + id="rect92" + width="35.400009" + height="35.400009" + x="-177.6308" + y="72.268623" + rx="0" + ry="0" + transform="scale(-1,1)" /> + <path + style="fill:none;stroke:#cc0000;stroke-width:0.499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1" + d="M 59.534207,106.36904 47.88867,91.217966 c -2.064319,-2.384295 -3.419038,-1.249338 -3.208827,1.360961 l -0.05481,13.601383" + id="path94" + sodipodi:nodetypes="cccc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:1.99999595, 0.49999899;stroke-opacity:1;stroke-dashoffset:0" + d="M 59.534207,102.82068 47.88867,87.669604 c -2.064319,-2.384295 -1.300545,-5.52025 3.042471,-5.58921 h 14.563678" + id="path95" + sodipodi:nodetypes="cccc" /> + <rect + style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1" + id="rect95" + width="35.400009" + height="35.400009" + x="143.05925" + y="-254.52634" + rx="0" + ry="0" + transform="scale(1,-1)" /> + <path + style="fill:none;stroke:#cc0000;stroke-width:0.499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1" + d="m 150.23497,220.42593 11.64554,15.15107 c 2.06432,2.3843 3.41904,1.24934 3.20883,-1.36096 l 0.0548,-13.60138" + id="path96" + sodipodi:nodetypes="cccc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:2, 0.499999;stroke-dashoffset:0;stroke-opacity:1" + d="m 150.23497,223.97429 11.64554,15.15107 c 2.06432,2.3843 1.30054,5.52025 -3.04247,5.58921 h -14.56368" + id="path97" + sodipodi:nodetypes="cccc" /> + <path + style="fill:none;stroke:#003399;stroke-width:0.499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 148.09091,105.59036 13.50408,-17.510359 c 2.06301,-3.039119 -0.51768,-3.04055 -2.75583,-3.051763 l -14.64204,0.06257" + id="path98" + sodipodi:nodetypes="cccc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:1.99999595, 0.49999899;stroke-dashoffset:0;stroke-opacity:1" + d="M 150.15017,106.52139 163.7605,89.294461 c 1.27276,-1.559361 4.25042,-3.465513 4.25042,-0.102314 l 0.0296,17.329243" + id="path99" + sodipodi:nodetypes="cccc" /> + <rect + style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1" + id="rect101" + width="35.400009" + height="35.400009" + x="32.162769" + y="-255.29588" + rx="0" + ry="0" + transform="scale(1,-1)" /> + <path + style="fill:none;stroke:#003399;stroke-width:0.499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 61.7962,221.88061 -13.50408,17.51035 c -2.06301,3.03912 0.51768,3.04055 2.75583,3.05177 l 14.64204,-0.0626" + id="path101" + sodipodi:nodetypes="cccc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:2, 0.499999;stroke-dashoffset:0;stroke-opacity:1" + d="m 59.6434,221.04312 -13.61033,17.22693 c -1.27276,1.55936 -4.25042,3.46551 -4.25042,0.10231 l -0.0296,-17.32924" + id="path102" + sodipodi:nodetypes="cccc" /> + <path + style="fill:#000000;stroke:#000000;stroke-width:0.499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:2, 0.499999;stroke-dashoffset:0;stroke-opacity:1" + d="M 59.534207,102.82068 102.79812,159.4652" + id="path103" /> + <path + style="fill:#000000;stroke:#000000;stroke-width:0.499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:2, 0.499999;stroke-dashoffset:0;stroke-opacity:1" + d="m 65.25829,82.037628 95.62026,0.157353" + id="path104" /> + <path + style="fill:#000000;stroke:#000000;stroke-width:0.499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:2, 0.499999;stroke-dashoffset:0;stroke-opacity:1" + d="m 167.9298,106.3948 -0.22789,131.15116" + id="path105" /> + <path + style="fill:#000000;stroke:#000000;stroke-width:0.499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:2, 0.499999;stroke-dashoffset:0;stroke-opacity:1" + d="M 144.5165,244.75896 46.805929,244.48998" + id="path106" /> + <path + style="fill:#000000;stroke:#000000;stroke-width:0.499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:2, 0.499999;stroke-dashoffset:0;stroke-opacity:1" + d="M 41.590227,221.17125 42.120944,85.714921" + id="path107" /> + <path + style="fill:#000000;stroke:#000000;stroke-width:0.499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:2, 0.499999;stroke-dashoffset:0;stroke-opacity:1" + d="m 150.2115,106.50125 -42.36175,54.51889" + id="path108" /> + <path + style="fill:#000000;stroke:#000000;stroke-width:0.499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:2, 0.499999;stroke-dashoffset:0;stroke-opacity:1" + d="M 149.96836,223.96126 108.14663,168.54139" + id="path109" /> + <path + style="fill:#000000;stroke:#000000;stroke-width:0.499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:2, 0.499999;stroke-dashoffset:0;stroke-opacity:1" + d="m 59.55657,220.94801 42.9072,-55.37207" + id="path110" /> + <path + style="fill:#000000;stroke:#003399;stroke-width:0.499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="M 93.607981,180.73548 61.721814,222.1469" + id="path111" /> + <path + style="fill:#000000;stroke:#003399;stroke-width:0.499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 65.507369,242.65185 108.123301,0.002" + id="path112" + sodipodi:nodetypes="cc" /> + <path + style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#cc0000;stroke-width:0.499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1" + d="m 164.20951,236.90008 c 0.23258,2.12957 0.471,4.20578 9.3948,4.14642" + id="path113" + sodipodi:nodetypes="cc" /> + <path + style="fill:#000000;stroke:#cc0000;stroke-width:0.499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="M 165.0354,220.91933 165.84181,91.61818" + id="path114" /> + <path + style="fill:#000000;stroke:#003399;stroke-width:0.499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="M 144.0987,85.038736 50.647811,84.781905" + id="path115" /> + <path + style="fill:#000000;stroke:#cc0000;stroke-width:0.499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="M 59.394825,106.21651 91.70422,148.78084" + id="path116" /> + <path + style="fill:#000000;stroke:#cc0000;stroke-width:0.499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 118.81626,179.50248 31.80297,41.2719" + id="path117" /> + <path + style="fill:#000000;stroke:#003399;stroke-width:0.499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 116.46886,146.6125 31.54769,-40.88381" + id="path118" /> + <path + style="fill:#000000;stroke:#cc0000;stroke-width:0.499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="M 44.696496,105.77959 44.145109,237.16614" + id="path119" /> + <g + id="g124" + transform="translate(1.6052485,-0.26406657)"> + <g + id="g122" + transform="translate(-67.028497,73.360492)"> + <circle + style="opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + id="path122" + cx="170.42325" + cy="17.602734" + r="2.7543051" /> + <path + style="font-size:18.6667px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans';white-space:pre;stroke-width:0.499999" + d="m 168.79936,17.890083 v -0.574698 h 3.24778 v 0.574698 z" + id="text121" + aria-label="-" /> + </g> + <g + id="g123" + transform="translate(-67.045388,52.930473)"> + <circle + style="vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + id="path122-7" + cx="170.44014" + cy="23.846945" + r="2.7543051" /> + <path + style="font-size:18.6667px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans';white-space:pre;stroke-width:1.23032" + d="m 642.18342,59.097156 h 3.71467 v 1.325336 h -3.71467 v 3.84534 h -1.34401 v -3.84534 h -3.71467 v -1.325336 h 3.71467 v -3.864007 h 1.34401 z" + id="text122" + transform="matrix(0.40639743,0,0,0.40639743,-90.268453,-0.43550093)" + aria-label="+" /> + </g> + </g> + <g + id="g127" + transform="rotate(180,104.19738,164.00238)"> + <g + id="g125" + transform="translate(-67.028497,73.360492)"> + <circle + style="opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + id="circle124" + cx="170.42325" + cy="17.602734" + r="2.7543051" /> + <path + style="font-size:18.6667px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans';white-space:pre;stroke-width:0.499999" + d="m 168.79936,17.890083 v -0.574698 h 3.24778 v 0.574698 z" + id="path124" + aria-label="-" /> + </g> + <g + id="g126" + transform="translate(-67.045388,52.930473)"> + <circle + style="vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + id="circle125" + cx="170.44014" + cy="23.846945" + r="2.7543051" /> + <path + style="font-size:18.6667px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans';white-space:pre;stroke-width:1.23032" + d="m 642.18342,59.097156 h 3.71467 v 1.325336 h -3.71467 v 3.84534 h -1.34401 v -3.84534 h -3.71467 v -1.325336 h 3.71467 v -3.864007 h 1.34401 z" + id="path125" + transform="matrix(0.40639743,0,0,0.40639743,-90.268453,-0.43550093)" + aria-label="+" /> + </g> + </g> + <g + id="g130" + transform="rotate(-90,113.30534,153.66026)"> + <g + id="g128" + transform="translate(-67.028497,73.360492)"> + <circle + style="opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + id="circle127" + cx="170.42325" + cy="17.602734" + r="2.7543051" /> + <path + style="font-size:18.6667px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans';white-space:pre;stroke-width:0.499999" + d="m 168.79936,17.890083 v -0.574698 h 3.24778 v 0.574698 z" + id="path127" + aria-label="-" /> + </g> + <g + id="g129" + transform="translate(-67.045388,52.930473)"> + <circle + style="vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + id="circle128" + cx="170.44014" + cy="23.846945" + r="2.7543051" /> + <path + style="font-size:18.6667px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans';white-space:pre;stroke-width:1.23032" + d="m 642.18342,59.097156 h 3.71467 v 1.325336 h -3.71467 v 3.84534 h -1.34401 v -3.84534 h -3.71467 v -1.325336 h 3.71467 v -3.864007 h 1.34401 z" + id="path128" + transform="matrix(0.40639743,0,0,0.40639743,-90.268453,-0.43550093)" + aria-label="+" /> + </g> + </g> + <g + id="g133" + transform="rotate(90,95.1393,155.3154)"> + <g + id="g131" + transform="translate(-67.028497,73.360492)"> + <circle + style="opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + id="circle130" + cx="170.42325" + cy="17.602734" + r="2.7543051" /> + <path + style="font-size:18.6667px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans';white-space:pre;stroke-width:0.499999" + d="m 168.79936,17.890083 v -0.574698 h 3.24778 v 0.574698 z" + id="path130" + aria-label="-" /> + </g> + <g + id="g132" + transform="translate(-67.045388,52.930473)"> + <circle + style="vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + id="circle131" + cx="170.44014" + cy="23.846945" + r="2.7543051" /> + <path + style="font-size:18.6667px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans';white-space:pre;stroke-width:1.23032" + d="m 642.18342,59.097156 h 3.71467 v 1.325336 h -3.71467 v 3.84534 h -1.34401 v -3.84534 h -3.71467 v -1.325336 h 3.71467 v -3.864007 h 1.34401 z" + id="path131" + transform="matrix(0.40639743,0,0,0.40639743,-90.268453,-0.43550093)" + aria-label="+" /> + </g> + </g> + <g + id="g136" + transform="rotate(128.95565,104.92298,113.90847)"> + <g + id="g134" + transform="translate(-67.028497,73.360492)"> + <circle + style="opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + id="circle133" + cx="170.42325" + cy="17.602734" + r="2.7543051" /> + <path + style="font-size:18.6667px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans';white-space:pre;stroke-width:0.499999" + d="m 168.79936,17.890083 v -0.574698 h 3.24778 v 0.574698 z" + id="path133" + aria-label="-" /> + </g> + <g + id="g135" + transform="translate(-67.045388,52.930473)"> + <circle + style="vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + id="circle134" + cx="170.44014" + cy="23.846945" + r="2.7543051" /> + <path + style="font-size:18.6667px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans';white-space:pre;stroke-width:1.23032" + d="m 642.18342,59.097156 h 3.71467 v 1.325336 h -3.71467 v 3.84534 h -1.34401 v -3.84534 h -3.71467 v -1.325336 h 3.71467 v -3.864007 h 1.34401 z" + id="path134" + transform="matrix(0.40639743,0,0,0.40639743,-90.268453,-0.43550093)" + aria-label="+" /> + </g> + </g> + <g + id="g139" + transform="rotate(-51.04435,209.01573,163.40954)"> + <g + id="g137" + transform="translate(-67.028497,73.360492)"> + <circle + style="opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + id="circle136" + cx="170.42325" + cy="17.602734" + r="2.7543051" /> + <path + style="font-size:18.6667px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans';white-space:pre;stroke-width:0.499999" + d="m 168.79936,17.890083 v -0.574698 h 3.24778 v 0.574698 z" + id="path136" + aria-label="-" /> + </g> + <g + id="g138" + transform="translate(-67.045388,52.930473)"> + <circle + style="vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + id="circle137" + cx="170.44014" + cy="23.846945" + r="2.7543051" /> + <path + style="font-size:18.6667px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans';white-space:pre;stroke-width:1.23032" + d="m 642.18342,59.097156 h 3.71467 v 1.325336 h -3.71467 v 3.84534 h -1.34401 v -3.84534 h -3.71467 v -1.325336 h 3.71467 v -3.864007 h 1.34401 z" + id="path137" + transform="matrix(0.40639743,0,0,0.40639743,-90.268453,-0.43550093)" + aria-label="+" /> + </g> + </g> + <g + id="g142" + transform="matrix(-0.62871865,-0.77763286,-0.77763286,0.62871865,210.98407,159.27794)"> + <g + id="g140" + transform="translate(-67.028497,73.360492)"> + <circle + style="opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + id="circle139" + cx="170.42325" + cy="17.602734" + r="2.7543051" /> + <path + style="font-size:18.6667px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans';white-space:pre;stroke-width:0.499999" + d="m 168.79936,17.890083 v -0.574698 h 3.24778 v 0.574698 z" + id="path139" + aria-label="-" /> + </g> + <g + id="g141" + transform="translate(-67.045388,52.930473)"> + <circle + style="vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + id="circle140" + cx="170.44014" + cy="23.846945" + r="2.7543051" /> + <path + style="font-size:18.6667px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans';white-space:pre;stroke-width:1.23032" + d="m 642.18342,59.097156 h 3.71467 v 1.325336 h -3.71467 v 3.84534 h -1.34401 v -3.84534 h -3.71467 v -1.325336 h 3.71467 v -3.864007 h 1.34401 z" + id="path140" + transform="matrix(0.40639743,0,0,0.40639743,-90.268453,-0.43550093)" + aria-label="+" /> + </g> + </g> + <g + id="g145" + transform="matrix(0.62871865,0.77763286,0.77763286,-0.62871865,-0.98407102,167.86377)"> + <g + id="g143" + transform="translate(-67.028497,73.360492)"> + <circle + style="opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + id="circle142" + cx="170.42325" + cy="17.602734" + r="2.7543051" /> + <path + style="font-size:18.6667px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans';white-space:pre;stroke-width:0.499999" + d="m 168.79936,17.890083 v -0.574698 h 3.24778 v 0.574698 z" + id="path142" + aria-label="-" /> + </g> + <g + id="g144" + transform="translate(-67.045388,52.930473)"> + <circle + style="vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + id="circle143" + cx="170.44014" + cy="23.846945" + r="2.7543051" /> + <path + style="font-size:18.6667px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans';white-space:pre;stroke-width:1.23032" + d="m 642.18342,59.097156 h 3.71467 v 1.325336 h -3.71467 v 3.84534 h -1.34401 v -3.84534 h -3.71467 v -1.325336 h 3.71467 v -3.864007 h 1.34401 z" + id="path143" + transform="matrix(0.40639743,0,0,0.40639743,-90.268453,-0.43550093)" + aria-label="+" /> + </g> + </g> + <text + xml:space="preserve" + transform="matrix(0,0.26458333,-0.26458333,0,111.28117,42.082293)" + id="text146" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.3333px;line-height:normal;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans';text-align:start;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect146);display:inline;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.88976;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none"><tspan + x="122.64453" + y="288.88945" + id="tspan48">"Rev R07"</tspan></text> + <text + xml:space="preserve" + transform="matrix(0,-0.26458333,0.26458333,0,97.364963,269.73658)" + id="text147" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.3333px;line-height:normal;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans';text-align:start;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect147);display:inline;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.88976;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none"><tspan + x="122.64453" + y="288.88945" + id="tspan49">"Rev R07"</tspan></text> + <path + style="opacity:1;vector-effect:none;fill:#99cc33;fill-opacity:1;stroke:none;stroke-width:0.499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + d="m 178.32426,238.73866 h -5.86347 v 7.49566 h 5.88103" + id="path147" /> + <path + style="opacity:1;vector-effect:none;fill:#669900;fill-opacity:1;stroke:none;stroke-width:0.499997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + d="m 173.82393,238.73866 h -1.36314 v 7.49566 h 1.36722" + id="path148" /> + <circle + style="opacity:1;vector-effect:none;fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + id="path149" + cx="176.21227" + cy="240.83934" + r="1.4043393" /> + <circle + style="opacity:1;vector-effect:none;fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + id="circle149" + cx="176.21227" + cy="244.13365" + r="1.4043393" /> + <path + style="opacity:1;vector-effect:none;fill:#6699ff;fill-opacity:1;stroke:#99cc33;stroke-width:0.499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + d="m 174.89416,242.15745 2.63621,-2.63621" + id="path150" /> + <path + style="opacity:1;vector-effect:none;fill:#6699ff;fill-opacity:1;stroke:#99cc33;stroke-width:0.499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + d="m 174.89416,245.45176 2.63621,-2.63621" + id="path151" /> + <g + id="g153" + transform="translate(2.2911975,0.01169304)"> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,64.611134,73.935145)" + id="text151" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.3333px;line-height:normal;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans';text-align:start;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect151);display:inline;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.88976;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none"><tspan + x="122.64453" + y="288.88945" + id="tspan50">" Up "</tspan></text> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,-3.1682789,7.288201)" + id="text152" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.3333px;line-height:normal;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans';text-align:start;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect152);display:inline;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.88976;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none"><tspan + x="406.95898" + y="540.00273" + id="tspan51">↑</tspan></text> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,-9.7156972,7.288201)" + id="text153" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.3333px;line-height:normal;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans';text-align:start;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect153);display:inline;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.88976;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none"><tspan + x="406.95898" + y="540.00273" + id="tspan52">↑</tspan></text> + </g> + <text + xml:space="preserve" + transform="matrix(0,0.26458333,-0.26458333,0,111.28117,199.04532)" + id="text154" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.3333px;line-height:normal;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans';text-align:start;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect154);display:inline;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.88976;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none"><tspan + x="122.64453" + y="288.88945" + id="tspan53">"[URL]"</tspan></text> + <text + xml:space="preserve" + transform="matrix(0,-0.26458333,0.26458333,0,98.157857,128.40939)" + id="text155" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.3333px;line-height:normal;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans';text-align:start;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect155);display:inline;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.88976;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none"><tspan + x="122.64453" + y="288.88945" + id="tspan54">"[URL]"</tspan></text> + <text + xml:space="preserve" + transform="matrix(0.24548338,0,0,0.24548338,-139.22402,-87.888875)" + id="text23" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.6667px;line-height:normal;font-family:'Sitka Display';-inkscape-font-specification:'Sitka Display';text-align:end;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect27);display:inline;fill:#000000;stroke:none;stroke-width:46.0317;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none" + x="-143.86632" + y="0"><tspan + x="1188.3551" + y="514.88774" + id="tspan55">0 x</tspan></text> + <text + xml:space="preserve" + transform="matrix(0.24548338,0,0,0.24548338,-139.22402,-83.102724)" + id="text25" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.6667px;line-height:normal;font-family:'Sitka Display';-inkscape-font-specification:'Sitka Display';text-align:end;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect28);display:inline;fill:#000000;stroke:none;stroke-width:46.0317;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none" + x="-143.86632" + y="0"><tspan + x="1188.3551" + y="514.88774" + id="tspan56">0 x</tspan></text> + <text + xml:space="preserve" + transform="matrix(0.24548338,0,0,0.24548338,-139.34622,-78.316574)" + id="text27" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.6667px;line-height:normal;font-family:'Sitka Display';-inkscape-font-specification:'Sitka Display';text-align:end;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect29);display:inline;fill:#000000;stroke:none;stroke-width:46.0317;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none" + x="-143.86632" + y="0"><tspan + x="1188.828" + y="514.88774" + id="tspan57">6 x</tspan></text> + <text + xml:space="preserve" + transform="matrix(0.24548338,0,0,0.24548338,-53.953504,-95.399382)" + id="text30" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.6667px;line-height:normal;font-family:'Sitka Display';-inkscape-font-specification:'Sitka Display';text-align:end;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect30);display:inline;fill:#000000;stroke:none;stroke-width:46.0317;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none"><tspan + x="841.44554" + y="514.88774" + id="tspan59"><tspan + style="font-weight:bold" + id="tspan58">Cut patterns</tspan></tspan></text> + <text + xml:space="preserve" + transform="matrix(0.24548338,0,0,0.24548338,-129.97783,-87.888875)" + id="text31" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.6667px;line-height:normal;font-family:'Sitka Display';-inkscape-font-specification:'Sitka Display';text-align:end;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect34);display:inline;fill:#000000;stroke:none;stroke-width:46.0317;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none" + x="-143.86632" + y="0"><tspan + x="1191.3999" + y="514.88774" + id="tspan60">1 x</tspan></text> + <text + xml:space="preserve" + transform="matrix(0.24548338,0,0,0.24548338,-129.97783,-83.102724)" + id="text33" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.6667px;line-height:normal;font-family:'Sitka Display';-inkscape-font-specification:'Sitka Display';text-align:end;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect35);display:inline;fill:#000000;stroke:none;stroke-width:46.0317;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none" + x="-143.86632" + y="0"><tspan + x="1189.2014" + y="514.88774" + id="tspan61">3 x</tspan></text> + <text + xml:space="preserve" + transform="matrix(0.24548338,0,0,0.24548338,-130.10003,-78.316574)" + id="text34" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.6667px;line-height:normal;font-family:'Sitka Display';-inkscape-font-specification:'Sitka Display';text-align:end;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect36);display:inline;fill:#000000;stroke:none;stroke-width:46.0317;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none" + x="-143.86632" + y="0"><tspan + x="1188.3551" + y="514.88774" + id="tspan62">0 x</tspan></text> + <text + xml:space="preserve" + transform="matrix(0.24548338,0,0,0.24548338,-120.73164,-87.888875)" + id="text36" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.6667px;line-height:normal;font-family:'Sitka Display';-inkscape-font-specification:'Sitka Display';text-align:end;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect39);display:inline;fill:#000000;stroke:none;stroke-width:46.0317;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none" + x="-143.86632" + y="0"><tspan + x="1189.2014" + y="514.88774" + id="tspan63">3 x</tspan></text> + <text + xml:space="preserve" + transform="matrix(0.24548338,0,0,0.24548338,-120.73164,-83.102724)" + id="text38" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.6667px;line-height:normal;font-family:'Sitka Display';-inkscape-font-specification:'Sitka Display';text-align:end;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect40);display:inline;fill:#000000;stroke:none;stroke-width:46.0317;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none" + x="-143.86632" + y="0"><tspan + x="1191.3999" + y="514.88774" + id="tspan64">1 x</tspan></text> + <text + xml:space="preserve" + transform="matrix(0.24548338,0,0,0.24548338,-120.85384,-78.316574)" + id="text39" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.6667px;line-height:normal;font-family:'Sitka Display';-inkscape-font-specification:'Sitka Display';text-align:end;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect41);display:inline;fill:#000000;stroke:none;stroke-width:46.0317;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none" + x="-143.86632" + y="0"><tspan + x="1191.3999" + y="514.88774" + id="tspan65">1 x</tspan></text> + </g> +</svg> diff --git a/8seg_strand_power_distribution.svg b/8seg_strand_power_distribution.svg new file mode 100644 index 0000000..abbbb7e --- /dev/null +++ b/8seg_strand_power_distribution.svg @@ -0,0 +1,500 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="297mm" + height="210mm" + viewBox="0 0 297 210" + version="1.1" + id="svg1" + inkscape:version="1.3 (0e150ed6c4, 2023-07-21)" + sodipodi:docname="8seg_strand_power_distribution.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview1" + pagecolor="#ffffff" + bordercolor="#000000" + borderopacity="0.25" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + inkscape:document-units="mm" + inkscape:zoom="3.3756135" + inkscape:cx="542.71616" + inkscape:cy="393.26184" + inkscape:window-width="3840" + inkscape:window-height="2091" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="layer1" /> + <defs + id="defs1"> + <rect + x="365.72055" + y="199.51234" + width="342.47363" + height="107.58745" + id="rect76" /> + <rect + x="159.17676" + y="268.1709" + width="209.77623" + height="56.109158" + id="rect65" /> + <rect + x="213.55869" + y="338.95828" + width="92.228409" + height="107.67358" + id="rect45" /> + <rect + x="213.55869" + y="338.95828" + width="92.228409" + height="107.67358" + id="rect46" /> + <rect + x="213.55869" + y="338.95828" + width="92.228409" + height="107.67358" + id="rect47" /> + <rect + x="213.55869" + y="338.95828" + width="92.228409" + height="107.67358" + id="rect48" /> + <rect + x="213.55869" + y="338.95828" + width="92.228409" + height="107.67358" + id="rect49" /> + <rect + x="213.55869" + y="338.95828" + width="92.228409" + height="107.67358" + id="rect50" /> + <rect + x="213.55869" + y="338.95828" + width="92.228409" + height="107.67358" + id="rect51" /> + <rect + x="213.55869" + y="338.95828" + width="92.228409" + height="107.67358" + id="rect52" /> + <rect + x="159.17676" + y="268.1709" + width="307.93604" + height="31.362564" + id="rect66" /> + <rect + x="159.17676" + y="268.1709" + width="449.28024" + height="31.606376" + id="rect67" /> + <rect + x="365.72055" + y="199.51234" + width="436.93361" + height="105.38921" + id="rect77" /> + <rect + x="365.72055" + y="199.51234" + width="568.39698" + height="105.62805" + id="rect78" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + id="g97" + transform="matrix(0.99867976,0,0,0.80998993,88.198567,0.32484439)" + style="stroke:#cc0000;stroke-width:1.11186"> + <path + sodipodi:nodetypes="ccccc" + inkscape:connector-curvature="0" + id="path7288-9" + d="m 40.760409,104.53616 v 15.71634 h 9.742942 v -15.71634 z" + style="fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:0.300112;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + inkscape:connector-curvature="0" + id="path7290-2" + d="m 40.760409,104.53616 9.742942,15.71634" + style="fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:0.300112;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + inkscape:connector-curvature="0" + id="path7292-0" + d="M 50.503351,104.53616 40.760409,120.2525" + style="fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:0.300112;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </g> + <g + id="g3" + transform="matrix(0.99867976,0,0,0.80998993,102.19874,0.32484439)" + style="stroke:#cc0000;stroke-width:1.11186"> + <path + sodipodi:nodetypes="ccccc" + inkscape:connector-curvature="0" + id="path1" + d="m 40.760409,104.53616 v 15.71634 h 9.742942 v -15.71634 z" + style="fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:0.300112;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + inkscape:connector-curvature="0" + id="path2" + d="m 40.760409,104.53616 9.742942,15.71634" + style="fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:0.300112;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + inkscape:connector-curvature="0" + id="path3" + d="M 50.503351,104.53616 40.760409,120.2525" + style="fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:0.300112;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </g> + <g + id="g6" + transform="matrix(0.99867976,0,0,0.80998993,116.19874,0.32484439)" + style="stroke:#cc0000;stroke-width:1.11186"> + <path + sodipodi:nodetypes="ccccc" + inkscape:connector-curvature="0" + id="path4" + d="m 40.760409,104.53616 v 15.71634 h 9.742942 v -15.71634 z" + style="fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:0.300112;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + inkscape:connector-curvature="0" + id="path5" + d="m 40.760409,104.53616 9.742942,15.71634" + style="fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:0.300112;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + inkscape:connector-curvature="0" + id="path6" + d="M 50.503351,104.53616 40.760409,120.2525" + style="fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:0.300112;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </g> + <g + id="g9" + transform="matrix(0.99867976,0,0,0.80998993,130.19891,0.32484439)" + style="stroke:#cc0000;stroke-width:1.11186"> + <path + sodipodi:nodetypes="ccccc" + inkscape:connector-curvature="0" + id="path7" + d="m 40.760409,104.53616 v 15.71634 h 9.742942 v -15.71634 z" + style="fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:0.300112;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + inkscape:connector-curvature="0" + id="path8" + d="m 40.760409,104.53616 9.742942,15.71634" + style="fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:0.300112;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + inkscape:connector-curvature="0" + id="path9" + d="M 50.503351,104.53616 40.760409,120.2525" + style="fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:0.300112;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </g> + <g + id="g12" + transform="matrix(0.99867976,0,0,0.80998993,144.19874,0.32484439)" + style="stroke:#cc0000;stroke-width:1.11186"> + <path + sodipodi:nodetypes="ccccc" + inkscape:connector-curvature="0" + id="path10" + d="m 40.760409,104.53616 v 15.71634 h 9.742942 v -15.71634 z" + style="fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:0.300112;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + inkscape:connector-curvature="0" + id="path11" + d="m 40.760409,104.53616 9.742942,15.71634" + style="fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:0.300112;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + inkscape:connector-curvature="0" + id="path12" + d="M 50.503351,104.53616 40.760409,120.2525" + style="fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:0.300112;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </g> + <g + id="g15" + transform="matrix(0.99867976,0,0,0.80998993,158.19891,0.32484439)" + style="stroke:#cc0000;stroke-width:1.11186"> + <path + sodipodi:nodetypes="ccccc" + inkscape:connector-curvature="0" + id="path13" + d="m 40.760409,104.53616 v 15.71634 h 9.742942 v -15.71634 z" + style="fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:0.300112;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + inkscape:connector-curvature="0" + id="path14" + d="m 40.760409,104.53616 9.742942,15.71634" + style="fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:0.300112;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + inkscape:connector-curvature="0" + id="path15" + d="M 50.503351,104.53616 40.760409,120.2525" + style="fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:0.300112;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </g> + <g + id="g18" + transform="matrix(0.99867976,0,0,0.80998993,172.19891,0.32484439)" + style="stroke:#cc0000;stroke-width:1.11186"> + <path + sodipodi:nodetypes="ccccc" + inkscape:connector-curvature="0" + id="path16" + d="m 40.760409,104.53616 v 15.71634 h 9.742942 v -15.71634 z" + style="fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:0.300112;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + inkscape:connector-curvature="0" + id="path17" + d="m 40.760409,104.53616 9.742942,15.71634" + style="fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:0.300112;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + inkscape:connector-curvature="0" + id="path18" + d="M 50.503351,104.53616 40.760409,120.2525" + style="fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:0.300112;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </g> + <g + id="g21" + transform="matrix(0.99867976,0,0,0.80998993,186.19908,0.32484439)" + style="stroke:#cc0000;stroke-width:1.11186"> + <path + sodipodi:nodetypes="ccccc" + inkscape:connector-curvature="0" + id="path19" + d="m 40.760409,104.53616 v 15.71634 h 9.742942 v -15.71634 z" + style="fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:0.300112;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + inkscape:connector-curvature="0" + id="path20" + d="m 40.760409,104.53616 9.742942,15.71634" + style="fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:0.300112;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + inkscape:connector-curvature="0" + id="path21" + d="M 50.503351,104.53616 40.760409,120.2525" + style="fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:0.300112;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </g> + <text + xml:space="preserve" + transform="matrix(0.50666058,0,0,0.50666058,-19.531248,-75.07778)" + id="text45" + style="font-size:18.6667px;line-height:normal;font-family:'Sitka Display';-inkscape-font-specification:'Sitka Display, Normal';text-align:end;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect45);display:inline;fill:#000000;stroke-width:0.592113;stroke-linecap:round;stroke-linejoin:round"><tspan + x="298.94265" + y="355.42094" + id="tspan2"><tspan + style="-inkscape-font-specification:'Sitka Display'" + id="tspan1">1</tspan></tspan></text> + <text + xml:space="preserve" + transform="matrix(0.50666058,0,0,0.50666058,-4.8796409,-75.07778)" + id="text46" + style="font-size:18.6667px;line-height:normal;font-family:'Sitka Display';-inkscape-font-specification:'Sitka Display, Normal';text-align:end;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect46);display:inline;fill:#000000;stroke-width:0.592113;stroke-linecap:round;stroke-linejoin:round"><tspan + x="296.63626" + y="355.42094" + id="tspan4"><tspan + style="-inkscape-font-specification:'Sitka Display'" + id="tspan3">2</tspan></tspan></text> + <text + xml:space="preserve" + transform="matrix(0.50666058,0,0,0.50666058,9.2213001,-75.07778)" + id="text47" + style="font-size:18.6667px;line-height:normal;font-family:'Sitka Display';-inkscape-font-specification:'Sitka Display, Normal';text-align:end;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect47);display:inline;fill:#000000;stroke-width:0.592113;stroke-linecap:round;stroke-linejoin:round"><tspan + x="296.74414" + y="355.42094" + id="tspan6"><tspan + style="-inkscape-font-specification:'Sitka Display'" + id="tspan5">3</tspan></tspan></text> + <text + xml:space="preserve" + transform="matrix(0.50666058,0,0,0.50666058,23.257104,-75.07778)" + id="text48" + style="font-size:18.6667px;line-height:normal;font-family:'Sitka Display';-inkscape-font-specification:'Sitka Display, Normal';text-align:end;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect48);display:inline;fill:#000000;stroke-width:0.592113;stroke-linecap:round;stroke-linejoin:round"><tspan + x="296.31273" + y="355.42094" + id="tspan8"><tspan + style="-inkscape-font-specification:'Sitka Display'" + id="tspan7">4</tspan></tspan></text> + <text + xml:space="preserve" + transform="matrix(0.50666058,0,0,0.50666058,37.086934,-75.07778)" + id="text49" + style="font-size:18.6667px;line-height:normal;font-family:'Sitka Display';-inkscape-font-specification:'Sitka Display, Normal';text-align:end;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect49);display:inline;fill:#000000;stroke-width:0.592113;stroke-linecap:round;stroke-linejoin:round"><tspan + x="297.19215" + y="355.42094" + id="tspan10"><tspan + style="-inkscape-font-specification:'Sitka Display'" + id="tspan9">5</tspan></tspan></text> + <text + xml:space="preserve" + transform="matrix(0.50666058,0,0,0.50666058,51.200505,-75.07778)" + id="text50" + style="font-size:18.6667px;line-height:normal;font-family:'Sitka Display';-inkscape-font-specification:'Sitka Display, Normal';text-align:end;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect50);display:inline;fill:#000000;stroke-width:0.592113;stroke-linecap:round;stroke-linejoin:round"><tspan + x="296.3708" + y="355.42094" + id="tspan12"><tspan + style="-inkscape-font-specification:'Sitka Display'" + id="tspan11">6</tspan></tspan></text> + <text + xml:space="preserve" + transform="matrix(0.50666058,0,0,0.50666058,64.786539,-75.07778)" + id="text51" + style="font-size:18.6667px;line-height:normal;font-family:'Sitka Display';-inkscape-font-specification:'Sitka Display, Normal';text-align:end;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect51);display:inline;fill:#000000;stroke-width:0.592113;stroke-linecap:round;stroke-linejoin:round"><tspan + x="297.2917" + y="355.42094" + id="tspan14"><tspan + style="-inkscape-font-specification:'Sitka Display'" + id="tspan13">7</tspan></tspan></text> + <text + xml:space="preserve" + transform="matrix(0.50666058,0,0,0.50666058,79.330959,-75.07778)" + id="text52" + style="font-size:18.6667px;line-height:normal;font-family:'Sitka Display';-inkscape-font-specification:'Sitka Display, Normal';text-align:end;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect52);display:inline;fill:#000000;stroke-width:0.592113;stroke-linecap:round;stroke-linejoin:round"><tspan + x="295.94769" + y="355.42094" + id="tspan16"><tspan + style="-inkscape-font-specification:'Sitka Display'" + id="tspan15">8</tspan></tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:round" + d="m 140.75158,80.570218 h 12.4892" + id="path52" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:round" + d="m 138.37356,82.867536 h 2.07802" + id="path56" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:round" + d="m 140.60158,77.580565 h 27.24371" + id="path63" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:round" + d="m 169.32363,77.580565 h 26.1367" + id="path64" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:round" + d="m 196.93867,77.580565 h 26.1367" + id="path65" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,27.983625,10.314591)" + id="text65" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.6667px;line-height:normal;font-family:'Sitka Display';-inkscape-font-specification:'Sitka Display';text-align:end;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect65);display:inline;fill:none;stroke:#000000;stroke-width:1.13386;stroke-linecap:round;stroke-linejoin:round"><tspan + x="326.29349" + y="284.63383" + id="tspan18"><tspan + style="fill:#000000;stroke:none" + id="tspan17">0.2 m</tspan></tspan></text> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,2.0120841,5.8582719)" + id="text66" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.6667px;line-height:normal;font-family:'Sitka Display';-inkscape-font-specification:'Sitka Display';text-align:end;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect66);display:inline;fill:none;stroke:#000000;stroke-width:1.13386;stroke-linecap:round;stroke-linejoin:round"><tspan + x="279.80754" + y="284.63383" + id="tspan20"><tspan + style="fill:#000000;stroke:none" + id="tspan19">0.4 + 1.0 + 0.3 m = 1.7 m</tspan></tspan></text> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,-35.385118,1.404148)" + id="text67" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.6667px;line-height:normal;font-family:'Sitka Display';-inkscape-font-specification:'Sitka Display';text-align:end;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect67);display:inline;fill:none;stroke:#000000;stroke-width:1.13386;stroke-linecap:round;stroke-linejoin:round"><tspan + x="247.66717" + y="284.63383" + id="tspan22"><tspan + style="fill:#000000;stroke:none" + id="tspan21">0.4 + 1.0 + 0.4 + 1.0 + 0.1 + 0.2 + 0.2 m = 3.3 m</tspan></tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:round" + d="m 168.77046,80.570218 h 12.4892" + id="path67" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:round" + d="m 166.39244,82.867536 h 2.07802" + id="path68" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:round" + d="m 196.52763,80.570218 h 12.4892" + id="path69" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:round" + d="m 194.14961,82.867536 h 2.07802" + id="path70" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:round" + d="m 223.72646,80.570218 h 12.4892" + id="path71" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:round" + d="m 221.34844,82.867536 h 2.07802" + id="path72" + sodipodi:nodetypes="cc" /> + <path + style="fill:#000000;stroke:#808080;stroke-width:0.15;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none" + d="M 140.45158,73.993385 V 88.513586" + id="path73" /> + <path + style="fill:#000000;stroke:#808080;stroke-width:0.15;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none" + d="M 168.714,73.993385 V 88.513586" + id="path74" /> + <path + style="fill:#000000;stroke:#808080;stroke-width:0.15;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none" + d="M 196.30263,73.993385 V 88.513586" + id="path75" /> + <path + style="fill:#000000;stroke:#808080;stroke-width:0.15;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none" + d="M 223.71141,73.993385 V 88.513586" + id="path76" /> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,23.84675,-15.672795)" + id="text76" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.6667px;line-height:normal;font-family:'Sitka Display';-inkscape-font-specification:'Sitka Display';text-align:end;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect76);display:inline;fill:#000000;stroke:none;stroke-width:0.566929;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"><tspan + x="472.27943" + y="215.97367" + id="tspan23">Splitter "A" side is cable red side</tspan></text> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,-1.1460406,-9.3386453)" + id="text77" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.6667px;line-height:normal;font-family:'Sitka Display';-inkscape-font-specification:'Sitka Display';text-align:end;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect77);display:inline;fill:#000000;stroke:none;stroke-width:0.566929;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"><tspan + x="366.318" + y="215.97367" + id="tspan24">Left (short) stub: Terminal block right side is cable red side</tspan></text> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,-35.928931,-3.0044956)" + id="text78" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.6667px;line-height:normal;font-family:'Sitka Display';-inkscape-font-specification:'Sitka Display';text-align:end;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect78);display:inline;fill:#000000;stroke:none;stroke-width:0.566929;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"><tspan + x="505.71223" + y="215.97367" + id="tspan25">Right (long) stub: Terminal block left side is cable red side</tspan></text> + </g> +</svg> diff --git a/center_fw/src/main.c b/center_fw/src/main.c index c066297..8c91607 100644 --- a/center_fw/src/main.c +++ b/center_fw/src/main.c @@ -209,7 +209,7 @@ void ADC1_IRQHandler(void) { /* Read sample and apply threshold */ int sample = ADC1->DR; /* resets the EOC interrupt flag */ - int bit = sample > THRESHOLD_ADC_COUNTS; + int bit = sample < THRESHOLD_ADC_COUNTS; int bit_margin = ((int)sample) - THRESHOLD_ADC_COUNTS; if (bit_margin < 0) { bit_margin = -bit_margin; diff --git a/led_tape.svg b/led_tape.svg index 6999959..3d7796f 100644 --- a/led_tape.svg +++ b/led_tape.svg @@ -2,21 +2,21 @@ <!-- Created with Inkscape (http://www.inkscape.org/) --> <svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" id="svg2" width="5mm" height="2.5mm" viewBox="0 0 18.897638 9.4488189" sodipodi:docname="led_tape.svg" - inkscape:version="0.92.3 (2405546, 2018-03-11)"> + inkscape:version="1.3 (0e150ed6c4, 2023-07-21)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:dc="http://purl.org/dc/elements/1.1/"> <metadata id="metadata8"> <rdf:RDF> @@ -25,7 +25,6 @@ <dc:format>image/svg+xml</dc:format> <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> </cc:Work> </rdf:RDF> </metadata> @@ -40,15 +39,15 @@ guidetolerance="10" inkscape:pageopacity="0" inkscape:pageshadow="2" - inkscape:window-width="1920" - inkscape:window-height="1030" + inkscape:window-width="3208" + inkscape:window-height="1981" id="namedview4" showgrid="false" - inkscape:zoom="0.99999999" - inkscape:cx="119.84761" - inkscape:cy="40.617263" - inkscape:window-x="0" - inkscape:window-y="50" + inkscape:zoom="0.12102105" + inkscape:cx="-1222.9277" + inkscape:cy="-1739.3668" + inkscape:window-x="26" + inkscape:window-y="23" inkscape:window-maximized="0" inkscape:current-layer="svg2" inkscape:measure-start="288.323,-37.2999" @@ -59,27 +58,30 @@ fit-margin-right="0" fit-margin-bottom="0" inkscape:document-units="mm" - inkscape:snap-global="false" /> + inkscape:snap-global="false" + inkscape:showpageshadow="2" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" /> <g id="g7297-4" - transform="matrix(1.3935337,0,0,1.5391961,-1554.0801,276.53669)" - style="stroke-width:20.64532852;stroke-miterlimit:4;stroke-dasharray:none;fill:none;stroke:#bfbfbf"> + transform="matrix(1.5310128,0,0,1.6910455,-1737.4329,315.54284)" + style="fill:none;stroke:#bfbfbf;stroke-width:20.6453;stroke-miterlimit:4;stroke-dasharray:none"> <path sodipodi:nodetypes="ccccc" inkscape:connector-curvature="0" id="path7288-9" d="M 1344,-246.55117 V 2697.4487 H 3791.9999 V -246.55117 Z" - style="fill:none;fill-rule:evenodd;stroke:#bfbfbf;stroke-width:20.6453276;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:none;fill-rule:evenodd;stroke:#bfbfbf;stroke-width:20.6453;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> <path inkscape:connector-curvature="0" id="path7290-2" d="M 1344,-246.55117 3791.9999,2697.4487" - style="fill:none;fill-rule:evenodd;stroke:#bfbfbf;stroke-width:20.64532852;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:none;fill-rule:evenodd;stroke:#bfbfbf;stroke-width:20.6453;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> <path inkscape:connector-curvature="0" id="path7292-0" d="M 3791.9999,-246.55117 1344,2697.4487" - style="fill:none;fill-rule:evenodd;stroke:#bfbfbf;stroke-width:20.64532852;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:none;fill-rule:evenodd;stroke:#bfbfbf;stroke-width:20.6453;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> </g> <path inkscape:connector-curvature="0" diff --git a/len_map.py b/len_map.py new file mode 100644 index 0000000..89642ba --- /dev/null +++ b/len_map.py @@ -0,0 +1,96 @@ +#!/usr/bin/env python3 + +# This script calculates the optimal cut distribution to reduce waste while matching the desired 2:2:4 segment count +# It applies brute force since the problem space is very small. + +import numpy as np +import itertools + +l_tot = 500 + +a, b, c = 94, 124, 80 +n, m, l = 2, 2, 4 +arr = np.array([a, b, c], dtype=int) +arr_count = np.array([n, m, l], dtype=int) + +# Find all possible splits of a [l_tot] m led tape into segments of lengths [a], [b] and [c] that leave a remainder +# that's smaller than any of [a], [b] and [c]. +candidates = [] +for i in range(l_tot//a + 1): + l_rem_i = l_tot - i*a + if l_rem_i < 0: + continue + + for j in range(l_rem_i//b + 1): + l_rem_j = l_rem_i - j*b + if l_rem_j < 0: + continue + + k = l_rem_j // c + l_rem_k = l_rem_j - k*c + + print(f'Candidate: ({i} {j} {k}) {i=}*{a} {j=}*{b=} {k=}*{c=} => remainder {l_rem_k}') + candidates.append((i, j, k)) +candidates = np.array(candidates, dtype=int) +print() + +# Find all ways to combine the cuts found above to cut [num_rolls] into segments, where the amount of segments of length +# [a], [b], and [c] that we get in total best matches the proportions we need ([n] times [a], [m] times [b], [l] times +# [c], so 2:2:4 times for 94:124:80 cm) +num_rolls = 3 +indices_seen = set() +out = [] +for indices in itertools.product(candidates, repeat=num_rolls): + indices = np.array(indices) + index_tup = tuple(sorted(map(tuple, indices))) + if index_tup in indices_seen: + continue + indices_seen.add(index_tup) + rem = l_tot - (indices * arr).sum(axis=1) + rem_total = rem.sum() + count_total = indices.sum(axis=0).astype(float) + count_total /= arr_count + spread = count_total.max() - count_total.min() + + if spread > 2 or (rem < 2).any(): + continue + print(indices.tolist(), f'{rem_total=} {spread=}') + out.append((spread, rem_total, indices.tolist(), rem.tolist(), indices.sum(axis=0).tolist())) +print() + +# Print out the n best matches found. Sort first by how close we match our target 2:2:4 ratio, then by how much waste +# we leave. +print('Best matches:') +for spread, rem_total, indices, rem, index_sum in sorted(out, key=lambda x: (x[0], x[1]))[:25]: + print(indices, f'{spread=} {rem_total=} {rem=} {index_sum=}') + +# Here's the output for future reference. There are a number of combinations that produce 68 cm of waste split across +# three 5m rolls of tape. We selected # 1 since it leaves leftovers of useful lengths. +# +# Best matches: +# [[0, 0, 6], [0, 4, 0], [4, 0, 1]] spread=0.25 rem_total=68 rem=[20, 4, 44] index_sum=[4, 4, 7] +# [[0, 0, 6], [1, 3, 0], [3, 1, 1]] spread=0.25 rem_total=68 rem=[20, 34, 14] index_sum=[4, 4, 7] +# [[0, 2, 3], [0, 2, 3], [4, 0, 1]] spread=0.25 rem_total=68 rem=[12, 12, 44] index_sum=[4, 4, 7] +# [[0, 2, 3], [1, 1, 3], [3, 1, 1]] spread=0.25 rem_total=68 rem=[12, 42, 14] index_sum=[4, 4, 7] +# [[0, 2, 3], [2, 1, 2], [2, 1, 2]] spread=0.25 rem_total=68 rem=[12, 28, 28] index_sum=[4, 4, 7] +# [[0, 3, 1], [1, 0, 5], [3, 1, 1]] spread=0.25 rem_total=68 rem=[48, 6, 14] index_sum=[4, 4, 7] +# [[0, 4, 0], [1, 0, 5], [3, 0, 2]] spread=0.25 rem_total=68 rem=[4, 6, 58] index_sum=[4, 4, 7] +# [[1, 0, 5], [1, 3, 0], [2, 1, 2]] spread=0.25 rem_total=68 rem=[6, 34, 28] index_sum=[4, 4, 7] +# [[0, 0, 6], [0, 3, 1], [3, 1, 1]] spread=0.5 rem_total=82 rem=[20, 48, 14] index_sum=[3, 4, 8] +# [[0, 0, 6], [0, 4, 0], [3, 0, 2]] spread=0.5 rem_total=82 rem=[20, 4, 58] index_sum=[3, 4, 8] +# [[0, 0, 6], [1, 3, 0], [2, 1, 2]] spread=0.5 rem_total=82 rem=[20, 34, 28] index_sum=[3, 4, 8] +# [[0, 1, 4], [0, 2, 3], [3, 1, 1]] spread=0.5 rem_total=82 rem=[56, 12, 14] index_sum=[3, 4, 8] +# [[0, 2, 3], [0, 2, 3], [3, 0, 2]] spread=0.5 rem_total=82 rem=[12, 12, 58] index_sum=[3, 4, 8] +# [[0, 2, 3], [1, 0, 5], [2, 2, 0]] spread=0.5 rem_total=82 rem=[12, 6, 64] index_sum=[3, 4, 8] +# [[0, 2, 3], [1, 1, 3], [2, 1, 2]] spread=0.5 rem_total=82 rem=[12, 42, 28] index_sum=[3, 4, 8] +# [[0, 3, 1], [1, 0, 5], [2, 1, 2]] spread=0.5 rem_total=82 rem=[48, 6, 28] index_sum=[3, 4, 8] +# [[0, 4, 0], [1, 0, 5], [2, 0, 3]] spread=0.5 rem_total=82 rem=[4, 6, 72] index_sum=[3, 4, 8] +# [[1, 0, 5], [1, 1, 3], [1, 3, 0]] spread=0.5 rem_total=82 rem=[6, 42, 34] index_sum=[3, 4, 8] +# [[0, 0, 6], [0, 3, 1], [4, 0, 1]] spread=0.5 rem_total=112 rem=[20, 48, 44] index_sum=[4, 3, 8] +# [[0, 0, 6], [1, 2, 1], [3, 1, 1]] spread=0.5 rem_total=112 rem=[20, 78, 14] index_sum=[4, 3, 8] +# [[0, 0, 6], [1, 3, 0], [3, 0, 2]] spread=0.5 rem_total=112 rem=[20, 34, 58] index_sum=[4, 3, 8] +# [[0, 0, 6], [2, 1, 2], [2, 2, 0]] spread=0.5 rem_total=112 rem=[20, 28, 64] index_sum=[4, 3, 8] +# [[0, 1, 4], [0, 2, 3], [4, 0, 1]] spread=0.5 rem_total=112 rem=[56, 12, 44] index_sum=[4, 3, 8] +# [[0, 1, 4], [1, 1, 3], [3, 1, 1]] spread=0.5 rem_total=112 rem=[56, 42, 14] index_sum=[4, 3, 8] +# [[0, 1, 4], [2, 1, 2], [2, 1, 2]] spread=0.5 rem_total=112 rem=[56, 28, 28] index_sum=[4, 3, 8] + |