@tscircuit/schematic-trace-solver 0.0.129 → 0.0.131
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.
- package/dist/index.d.ts +7 -0
- package/dist/index.js +219 -13
- package/lib/solvers/AvailableNetOrientationSolver/AvailableNetOrientationSolver.ts +290 -12
- package/lib/solvers/LongDistancePairSolver/LongDistancePairSolver.ts +23 -2
- package/package.json +1 -1
- package/site/bug-reports/bug-report-20260811T075142Z.page.tsx +4 -0
- package/tests/bug-reports/bug-report-20260706T220324Z/__snapshots__/bug-report-20260706T220324Z.snap.svg +34 -22
- package/tests/bug-reports/bug-report-20260707T134549Z/__snapshots__/bug-report-20260707T134549Z.snap.svg +5 -3
- package/tests/bug-reports/bug-report-20260721T221026Z/__snapshots__/bug-report-20260721T221026Z.snap.svg +305 -303
- package/tests/bug-reports/bug-report-20260804T095800Z/__snapshots__/bug-report-20260804T095800Z.snap.svg +5 -3
- package/tests/bug-reports/bug-report-20260811T075142Z/__snapshots__/bug-report-20260811T075142Z.snap.svg +74 -0
- package/tests/bug-reports/bug-report-20260811T075142Z/bug-report-20260811T075142Z.json +194 -0
- package/tests/bug-reports/bug-report-20260811T075142Z/bug-report-20260811T075142Z.test.ts +131 -0
- package/tests/examples/__snapshots__/example10.snap.svg +20 -16
- package/tests/examples/__snapshots__/example31.snap.svg +8 -6
- package/tests/examples/__snapshots__/example33.snap.svg +32 -30
- package/tests/examples/__snapshots__/example46.snap.svg +5 -3
- package/tests/examples/__snapshots__/example48.snap.svg +25 -23
- package/tests/examples/__snapshots__/example50.snap.svg +32 -30
- package/tests/repros/__snapshots__/repro-atmega328p-fault-pullup.snap.svg +48 -46
- package/tests/repros/__snapshots__/repro-board-589-regulator-section.snap.svg +69 -0
- package/tests/repros/__snapshots__/repro-bq24074-battery-charger.snap.svg +7 -5
- package/tests/repros/__snapshots__/repro-missing-trace-netlabel.snap.svg +24 -18
- package/tests/repros/__snapshots__/repro-usb-power-vbus-label-detour.snap.svg +467 -0
- package/tests/repros/__snapshots__/repro51-overlap-junction-crossing.snap.svg +25 -23
- package/tests/repros/__snapshots__/small-variant-resistor-facing-direction.snap.svg +46 -44
- package/tests/repros/assets/repro-board-589-regulator-section.input.json +270 -0
- package/tests/repros/assets/repro-usb-power-vbus-label-detour.input.json +2382 -0
- package/tests/repros/repro-board-589-regulator-section.test.ts +16 -0
- package/tests/repros/repro-max-msp-pair-distance-fallback.test.ts +45 -0
- package/tests/repros/repro-missing-trace-netlabel.test.ts +9 -11
- package/tests/repros/repro-usb-power-vbus-label-detour.test.ts +16 -0
- package/tests/repros/rotated-components-rail-label.test.ts +5 -11
|
@@ -1,25 +1,27 @@
|
|
|
1
|
-
<svg width="640" height="640" viewBox="0 0 640 640" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%" fill="white"/><g><polyline data-points="1.2000000000000002,-0.30000000000000004 1.6,2.1049999999999995" data-type="line" data-label="" points="308.80000000000007,
|
|
2
|
-
globalConnNetId: connectivity_net0" data-x="1.
|
|
3
|
-
globalConnNetId:
|
|
4
|
-
globalConnNetId: connectivity_net1" data-x="1.
|
|
5
|
-
globalConnNetId:
|
|
6
|
-
globalConnNetId: connectivity_net2" data-x="1.
|
|
7
|
-
|
|
8
|
-
x
|
|
9
|
-
x
|
|
10
|
-
x
|
|
11
|
-
x-" data-x="-1.2000000000000002" data-y="0.
|
|
12
|
-
x-" data-x="-1.2000000000000002" data-y="
|
|
13
|
-
x
|
|
14
|
-
x+" data-x="1.2000000000000002" data-y="0.
|
|
15
|
-
x
|
|
16
|
-
x-" data-x="1.6" data-y="2.
|
|
17
|
-
x-" data-x="1.6" data-y="2.
|
|
18
|
-
|
|
19
|
-
orientation:
|
|
20
|
-
orientation:
|
|
21
|
-
orientation:
|
|
22
|
-
orientation:
|
|
1
|
+
<svg width="640" height="640" viewBox="0 0 640 640" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%" fill="white"/><g><polyline data-points="1.2000000000000002,-0.30000000000000004 1.6,2.1049999999999995" data-type="line" data-label="" points="308.80000000000007,477.08 353.6,207.72000000000003" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="1.2000000000000002,0.09999999999999998 1.6,2.3049999999999997" data-type="line" data-label="" points="308.80000000000007,432.28 353.6,185.32" fill="none" stroke="hsl(158, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="1.2000000000000002,0.30000000000000004 1.6,2.505" data-type="line" data-label="" points="308.80000000000007,409.87999999999994 353.6,162.91999999999996" fill="none" stroke="hsl(190, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="1.2000000000000002,-0.30000000000000004 1.3010000000000002,-0.30000000000000004 1.3010000000000002,-0.5010000000000001" data-type="line" data-label="" points="308.80000000000007,477.08 320.1120000000001,477.08 320.1120000000001,499.592" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="1.6,2.1049999999999995 1.499,2.1049999999999995 1.499,1.9039999999999997" data-type="line" data-label="" points="353.6,207.72000000000003 342.288,207.72000000000003 342.288,230.232" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="1.2000000000000002,0.30000000000000004 1.3010000000000002,0.30000000000000004 1.3010000000000002,0.5010000000000001" data-type="line" data-label="" points="308.80000000000007,409.87999999999994 320.1120000000001,409.87999999999994 320.1120000000001,387.36799999999994" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="1.6,2.505 1.499,2.505 1.499,2.706" data-type="line" data-label="" points="353.6,162.91999999999996 342.288,162.91999999999996 342.288,140.40799999999996" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="schematic_component_0" data-x="0" data-y="0" x="40" y="387.47999999999996" width="268.80000000000007" height="112" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.008928571428571428"/></g><g><rect data-type="rect" data-label="schematic_component_1" data-x="2.7" data-y="2.3049999999999997" x="353.6000000000001" y="140.51999999999998" width="246.39999999999998" height="89.6" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.008928571428571428"/></g><g><rect data-type="rect" data-label="netId: GND
|
|
2
|
+
globalConnNetId: connectivity_net0" data-x="1.3010000000000002" data-y="-0.7410000000000001" x="308.91200000000003" y="499.592" width="22.400000000000034" height="53.75999999999999" fill="#00000066" stroke="#000000" stroke-width="0.008928571428571428"/></g><g><rect data-type="rect" data-label="netId: GND
|
|
3
|
+
globalConnNetId: connectivity_net0" data-x="1.499" data-y="1.6639999999999997" x="331.08799999999997" y="230.23199999999997" width="22.400000000000034" height="53.75999999999996" fill="#00000066" stroke="#000000" stroke-width="0.008928571428571428"/></g><g><rect data-type="rect" data-label="netId: OUT
|
|
4
|
+
globalConnNetId: connectivity_net1" data-x="1.441" data-y="0.09999999999999998" x="308.91200000000003" y="421.08" width="53.75999999999999" height="22.399999999999977" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.008928571428571428"/></g><g><rect data-type="rect" data-label="netId: OUT
|
|
5
|
+
globalConnNetId: connectivity_net1" data-x="1.3590000000000002" data-y="2.3049999999999997" x="299.72800000000007" y="174.12" width="53.75999999999999" height="22.400000000000006" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.008928571428571428"/></g><g><rect data-type="rect" data-label="netId: VCC
|
|
6
|
+
globalConnNetId: connectivity_net2" data-x="1.3010000000000002" data-y="0.7410000000000001" x="308.91200000000003" y="333.60799999999995" width="22.400000000000034" height="53.75999999999999" fill="#ef444466" stroke="#ef4444" stroke-width="0.008928571428571428"/></g><g><rect data-type="rect" data-label="netId: VCC
|
|
7
|
+
globalConnNetId: connectivity_net2" data-x="1.499" data-y="2.9459999999999997" x="331.08799999999997" y="86.64799999999994" width="22.400000000000034" height="53.76000000000005" fill="#ef444466" stroke="#ef4444" stroke-width="0.008928571428571428"/></g><g><circle data-type="point" data-label="U1.1
|
|
8
|
+
x+" data-x="1.2000000000000002" data-y="-0.30000000000000004" cx="308.80000000000007" cy="477.08" r="3" fill="hsl(319, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U1.2
|
|
9
|
+
x-" data-x="-1.2000000000000002" data-y="-0.30000000000000004" cx="40" cy="477.08" r="3" fill="hsl(320, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U1.3
|
|
10
|
+
x+" data-x="1.2000000000000002" data-y="0.09999999999999998" cx="308.80000000000007" cy="432.28" r="3" fill="hsl(321, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U1.4
|
|
11
|
+
x-" data-x="-1.2000000000000002" data-y="0.30000000000000004" cx="40" cy="409.87999999999994" r="3" fill="hsl(322, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U1.5
|
|
12
|
+
x-" data-x="-1.2000000000000002" data-y="0.10000000000000003" cx="40" cy="432.28" r="3" fill="hsl(323, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U1.6
|
|
13
|
+
x-" data-x="-1.2000000000000002" data-y="-0.09999999999999998" cx="40" cy="454.67999999999995" r="3" fill="hsl(324, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U1.7
|
|
14
|
+
x+" data-x="1.2000000000000002" data-y="-0.10000000000000003" cx="308.80000000000007" cy="454.67999999999995" r="3" fill="hsl(325, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U1.8
|
|
15
|
+
x+" data-x="1.2000000000000002" data-y="0.30000000000000004" cx="308.80000000000007" cy="409.87999999999994" r="3" fill="hsl(326, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="J1.1
|
|
16
|
+
x-" data-x="1.6" data-y="2.505" cx="353.6" cy="162.91999999999996" r="3" fill="hsl(218, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="J1.2
|
|
17
|
+
x-" data-x="1.6" data-y="2.3049999999999997" cx="353.6" cy="185.32" r="3" fill="hsl(219, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="J1.3
|
|
18
|
+
x-" data-x="1.6" data-y="2.1049999999999995" cx="353.6" cy="207.72000000000003" r="3" fill="hsl(220, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
19
|
+
orientation: y-" data-x="1.3010000000000002" data-y="-0.5010000000000001" cx="320.1120000000001" cy="499.592" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
20
|
+
orientation: y-" data-x="1.499" data-y="1.9039999999999997" cx="342.288" cy="230.232" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
21
|
+
orientation: x+" data-x="1.2000000000000002" data-y="0.09999999999999998" cx="308.80000000000007" cy="432.28" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
22
|
+
orientation: x-" data-x="1.6" data-y="2.3049999999999997" cx="353.6" cy="185.32" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
23
|
+
orientation: y+" data-x="1.3010000000000002" data-y="0.5010000000000001" cx="320.1120000000001" cy="387.36799999999994" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
24
|
+
orientation: y+" data-x="1.499" data-y="2.706" cx="342.288" cy="140.40799999999996" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g id="crosshair" style="display: none"><line id="crosshair-h" y1="0" y2="640" stroke="#666" stroke-width="0.5"/><line id="crosshair-v" x1="0" x2="640" stroke="#666" stroke-width="0.5"/><text id="coordinates" font-family="monospace" font-size="12" fill="#666"></text></g><script><![CDATA[
|
|
23
25
|
document.currentScript.parentElement.addEventListener('mousemove', (e) => {
|
|
24
26
|
const svg = e.currentTarget;
|
|
25
27
|
const rect = svg.getBoundingClientRect();
|
|
@@ -41,7 +43,7 @@ orientation: y+" data-x="1.499" data-y="2.706" cx="342.288" cy="151.664" r="3" f
|
|
|
41
43
|
v.setAttribute('y2', '640');
|
|
42
44
|
|
|
43
45
|
// Calculate real coordinates using inverse transformation
|
|
44
|
-
const matrix = {"a":112,"c":0,"e":174.40000000000003,"b":0,"d":-112,"f":
|
|
46
|
+
const matrix = {"a":112,"c":0,"e":174.40000000000003,"b":0,"d":-112,"f":443.47999999999996};
|
|
45
47
|
// Manually invert and apply the affine transform
|
|
46
48
|
// Since we only use translate and scale, we can directly compute:
|
|
47
49
|
// x' = (x - tx) / sx
|
|
@@ -1,32 +1,34 @@
|
|
|
1
|
-
<svg width="640" height="640" viewBox="0 0 640 640" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%" fill="white"/><g><polyline data-points="-1.95,-6.6 1.5225,-8.5" data-type="line" data-label="" points="126.
|
|
2
|
-
globalConnNetId: connectivity_net0" data-x="-2.
|
|
3
|
-
globalConnNetId:
|
|
4
|
-
globalConnNetId: connectivity_net1" data-x="-
|
|
5
|
-
globalConnNetId:
|
|
6
|
-
globalConnNetId:
|
|
7
|
-
globalConnNetId:
|
|
8
|
-
globalConnNetId:
|
|
9
|
-
globalConnNetId:
|
|
10
|
-
globalConnNetId:
|
|
11
|
-
|
|
12
|
-
x
|
|
13
|
-
x
|
|
14
|
-
x-" data-x="-1.5225" data-y="-8.
|
|
15
|
-
x-" data-x="-1.5225" data-y="-8.
|
|
16
|
-
x-" data-x="-1.5225" data-y="-8.
|
|
17
|
-
x
|
|
18
|
-
x+" data-x="1.5225" data-y="-8.
|
|
19
|
-
x+" data-x="1.5225" data-y="-8.
|
|
20
|
-
x+" data-x="1.5225" data-y="-8.
|
|
21
|
-
|
|
22
|
-
orientation:
|
|
23
|
-
orientation:
|
|
24
|
-
orientation: x
|
|
25
|
-
orientation: x-" data-x="-1.5225" data-y="-8.
|
|
26
|
-
orientation: x-" data-x="-1.5225" data-y="-8.
|
|
27
|
-
orientation: x
|
|
28
|
-
orientation: x
|
|
29
|
-
orientation:
|
|
1
|
+
<svg width="640" height="640" viewBox="0 0 640 640" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%" fill="white"/><g><polyline data-points="-1.95,-6.6 1.5225,-8.5" data-type="line" data-label="" points="126.01684717208184,234.3200962695547 460.31287605294824,417.23225030084234" fill="none" stroke="hsl(154, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-0.8499999999999999,-6.6 -1.5225,-8.700000000000001" data-type="line" data-label="" points="231.91335740072202,234.3200962695547 167.17208182912154,436.4861612515043" fill="none" stroke="hsl(172, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-1.95,-6.6 -2.0509999999999997,-6.6 -2.0509999999999997,-6.198999999999999" data-type="line" data-label="" points="126.01684717208184,234.3200962695547 116.29362214199762,234.3200962695547 116.29362214199762,195.71600481347764" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="1.5225,-8.5 2.8735000000000004,-8.5 2.8735000000000004,-7.9990000000000006" data-type="line" data-label="" points="460.31287605294824,417.23225030084234 590.3730445246691,417.23225030084234 590.3730445246691,369.0012033694345" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="1.5225,-8.700000000000001 1.6235,-8.700000000000001 1.6235,-8.901" data-type="line" data-label="" points="460.31287605294824,436.4861612515043 470.03610108303246,436.4861612515043 470.03610108303246,455.8363417569194" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="schematic_component_0" data-x="-1.4" data-y="-6.6" x="126.01684717208184" y="196.82740312876052" width="105.89651022864018" height="74.98538628158838" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.010387500000000001"/></g><g><rect data-type="rect" data-label="schematic_component_1" data-x="0" data-y="-8.4" x="167.17208182912157" y="359.47051744885687" width="293.1407942238267" height="96.2695547533092" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.010387500000000001"/></g><g><rect data-type="rect" data-label="netId: V3V3
|
|
2
|
+
globalConnNetId: connectivity_net0" data-x="-2.0509999999999997" data-y="-5.898999999999999" x="106.66666666666667" y="137.95427196149217" width="19.25391095066189" height="57.76173285198547" fill="#ef444466" stroke="#ef4444" stroke-width="0.010387500000000001"/></g><g><rect data-type="rect" data-label="netId: V3V3
|
|
3
|
+
globalConnNetId: connectivity_net0" data-x="2.8735000000000004" data-y="-7.699000000000001" x="580.7460890493383" y="311.239470517449" width="19.253910950661748" height="57.761732851985585" fill="#ef444466" stroke="#ef4444" stroke-width="0.010387500000000001"/></g><g><rect data-type="rect" data-label="netId: QSPI_CS
|
|
4
|
+
globalConnNetId: connectivity_net1" data-x="-0.3689999999999999" data-y="-6.6" x="232.00962695547537" y="224.69314079422384" width="92.41877256317684" height="19.253910950661748" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.010387500000000001"/></g><g><rect data-type="rect" data-label="netId: QSPI_CS
|
|
5
|
+
globalConnNetId: connectivity_net1" data-x="-2.0035" data-y="-8.700000000000001" x="74.65703971119136" y="426.85920577617344" width="92.41877256317687" height="19.253910950661748" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.010387500000000001"/></g><g><rect data-type="rect" data-label="netId: QSPI_SCK
|
|
6
|
+
globalConnNetId: connectivity_net2" data-x="-2.0635" data-y="-8.1" x="63.10469314079424" y="369.09747292418774" width="103.971119133574" height="19.253910950661748" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.010387500000000001"/></g><g><rect data-type="rect" data-label="netId: QSPI_DATA0
|
|
7
|
+
globalConnNetId: connectivity_net3" data-x="-2.1835" data-y="-8.3" x="40.000000000000014" y="388.3513838748497" width="127.07581227436825" height="19.253910950661748" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.010387500000000001"/></g><g><rect data-type="rect" data-label="netId: QSPI_DATA1
|
|
8
|
+
globalConnNetId: connectivity_net4" data-x="-2.1835" data-y="-8.5" x="40.000000000000014" y="407.60529482551146" width="127.07581227436825" height="19.253910950661748" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.010387500000000001"/></g><g><rect data-type="rect" data-label="netId: QSPI_DATA2
|
|
9
|
+
globalConnNetId: connectivity_net5" data-x="2.1835" data-y="-8.1" x="460.4091456077016" y="369.09747292418774" width="127.07581227436822" height="19.253910950661748" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.010387500000000001"/></g><g><rect data-type="rect" data-label="netId: QSPI_DATA3
|
|
10
|
+
globalConnNetId: connectivity_net6" data-x="2.1835" data-y="-8.3" x="460.4091456077016" y="388.3513838748497" width="127.07581227436822" height="19.253910950661748" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.010387500000000001"/></g><g><rect data-type="rect" data-label="netId: GND
|
|
11
|
+
globalConnNetId: connectivity_net7" data-x="1.6235" data-y="-9.141" x="460.40914560770153" y="455.8363417569194" width="19.25391095066186" height="46.20938628158842" fill="#00000066" stroke="#000000" stroke-width="0.010387500000000001"/></g><g><circle data-type="point" data-label="R7.1
|
|
12
|
+
x-" data-x="-1.95" data-y="-6.6" cx="126.01684717208184" cy="234.3200962695547" r="3" fill="hsl(232, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="R7.2
|
|
13
|
+
x+" data-x="-0.8499999999999999" data-y="-6.6" cx="231.91335740072202" cy="234.3200962695547" r="3" fill="hsl(233, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U5.1
|
|
14
|
+
x-" data-x="-1.5225" data-y="-8.1" cx="167.17208182912154" cy="378.7244283995186" r="3" fill="hsl(203, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U5.2
|
|
15
|
+
x-" data-x="-1.5225" data-y="-8.3" cx="167.17208182912154" cy="397.9783393501806" r="3" fill="hsl(204, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U5.3
|
|
16
|
+
x-" data-x="-1.5225" data-y="-8.5" cx="167.17208182912154" cy="417.23225030084234" r="3" fill="hsl(205, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U5.4
|
|
17
|
+
x-" data-x="-1.5225" data-y="-8.700000000000001" cx="167.17208182912154" cy="436.4861612515043" r="3" fill="hsl(206, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U5.5
|
|
18
|
+
x+" data-x="1.5225" data-y="-8.1" cx="460.31287605294824" cy="378.7244283995186" r="3" fill="hsl(207, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U5.6
|
|
19
|
+
x+" data-x="1.5225" data-y="-8.3" cx="460.31287605294824" cy="397.9783393501806" r="3" fill="hsl(208, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U5.7
|
|
20
|
+
x+" data-x="1.5225" data-y="-8.700000000000001" cx="460.31287605294824" cy="436.4861612515043" r="3" fill="hsl(209, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U5.8
|
|
21
|
+
x+" data-x="1.5225" data-y="-8.5" cx="460.31287605294824" cy="417.23225030084234" r="3" fill="hsl(210, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
22
|
+
orientation: y+" data-x="-2.0509999999999997" data-y="-6.198999999999999" cx="116.29362214199762" cy="195.71600481347764" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
23
|
+
orientation: y+" data-x="2.8735000000000004" data-y="-7.9990000000000006" cx="590.3730445246691" cy="369.0012033694345" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
24
|
+
orientation: x+" data-x="-0.8499999999999999" data-y="-6.6" cx="231.91335740072202" cy="234.3200962695547" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
25
|
+
orientation: x-" data-x="-1.5225" data-y="-8.700000000000001" cx="167.17208182912154" cy="436.4861612515043" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
26
|
+
orientation: x-" data-x="-1.5225" data-y="-8.1" cx="167.17208182912154" cy="378.7244283995186" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
27
|
+
orientation: x-" data-x="-1.5225" data-y="-8.3" cx="167.17208182912154" cy="397.9783393501806" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
28
|
+
orientation: x-" data-x="-1.5225" data-y="-8.5" cx="167.17208182912154" cy="417.23225030084234" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
29
|
+
orientation: x+" data-x="1.5225" data-y="-8.1" cx="460.31287605294824" cy="378.7244283995186" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
30
|
+
orientation: x+" data-x="1.5225" data-y="-8.3" cx="460.31287605294824" cy="397.9783393501806" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
31
|
+
orientation: y-" data-x="1.6235" data-y="-8.901" cx="470.03610108303246" cy="455.8363417569194" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g id="crosshair" style="display: none"><line id="crosshair-h" y1="0" y2="640" stroke="#666" stroke-width="0.5"/><line id="crosshair-v" x1="0" x2="640" stroke="#666" stroke-width="0.5"/><text id="coordinates" font-family="monospace" font-size="12" fill="#666"></text></g><script><![CDATA[
|
|
30
32
|
document.currentScript.parentElement.addEventListener('mousemove', (e) => {
|
|
31
33
|
const svg = e.currentTarget;
|
|
32
34
|
const rect = svg.getBoundingClientRect();
|
|
@@ -48,7 +50,7 @@ orientation: y-" data-x="1.6235" data-y="-8.901" cx="472.26542249870397" cy="437
|
|
|
48
50
|
v.setAttribute('y2', '640');
|
|
49
51
|
|
|
50
52
|
// Calculate real coordinates using inverse transformation
|
|
51
|
-
const matrix = {"a":96.
|
|
53
|
+
const matrix = {"a":96.26955475330927,"c":0,"e":313.7424789410349,"b":0,"d":-96.26955475330927,"f":-401.0589651022864};
|
|
52
54
|
// Manually invert and apply the affine transform
|
|
53
55
|
// Since we only use translate and scale, we can directly compute:
|
|
54
56
|
// x' = (x - tx) / sx
|
|
@@ -1,48 +1,50 @@
|
|
|
1
|
-
<svg width="640" height="640" viewBox="0 0 640 640" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%" fill="white"/><g><polyline data-points="8.9,15.1 8.9,14.7" data-type="line" data-label="" points="
|
|
2
|
-
globalConnNetId: connectivity_net0" data-x="8.359900000000001" data-y="14.7" x="
|
|
3
|
-
globalConnNetId: connectivity_net0" data-x="11.341" data-y="13.3" x="
|
|
4
|
-
globalConnNetId: connectivity_net1" data-x="8.32" data-y="14.5" x="
|
|
5
|
-
globalConnNetId: connectivity_net1" data-x="12.09" data-y="13.18" x="
|
|
6
|
-
globalConnNetId: connectivity_net2" data-x="
|
|
7
|
-
|
|
8
|
-
x-" data-x="8.9" data-y="15.
|
|
9
|
-
x-" data-x="8.9" data-y="15.
|
|
10
|
-
x-" data-x="8.9" data-y="
|
|
11
|
-
x-" data-x="8.9" data-y="14.
|
|
12
|
-
x-" data-x="8.9" data-y="14.
|
|
13
|
-
x-" data-x="8.9" data-y="14.
|
|
14
|
-
x-" data-x="8.9" data-y="14.
|
|
15
|
-
x-" data-x="8.9" data-y="
|
|
16
|
-
x-" data-x="8.9" data-y="13.
|
|
17
|
-
x-" data-x="8.9" data-y="13.
|
|
18
|
-
x-" data-x="8.9" data-y="13.
|
|
19
|
-
x-" data-x="8.9" data-y="13.
|
|
20
|
-
x-" data-x="8.9" data-y="
|
|
21
|
-
x-" data-x="8.9" data-y="12.
|
|
22
|
-
x-" data-x="8.9" data-y="12.
|
|
23
|
-
x
|
|
24
|
-
x+" data-x="11.1" data-y="12.
|
|
25
|
-
x+" data-x="11.1" data-y="12.
|
|
26
|
-
x+" data-x="11.1" data-y="
|
|
27
|
-
x+" data-x="11.1" data-y="13.
|
|
28
|
-
x+" data-x="11.1" data-y="13.
|
|
29
|
-
x+" data-x="11.1" data-y="13.
|
|
30
|
-
x+" data-x="11.1" data-y="13.
|
|
31
|
-
x+" data-x="11.1" data-y="
|
|
32
|
-
x+" data-x="11.1" data-y="14.
|
|
33
|
-
x+" data-x="11.1" data-y="14.
|
|
34
|
-
x+" data-x="11.1" data-y="14.
|
|
35
|
-
x+" data-x="11.1" data-y="14.
|
|
36
|
-
x+" data-x="11.1" data-y="
|
|
37
|
-
x+" data-x="11.1" data-y="15.
|
|
38
|
-
x+" data-x="11.1" data-y="15.
|
|
39
|
-
x
|
|
40
|
-
x
|
|
41
|
-
|
|
42
|
-
orientation: x
|
|
43
|
-
orientation: x
|
|
44
|
-
orientation:
|
|
45
|
-
orientation:
|
|
1
|
+
<svg width="640" height="640" viewBox="0 0 640 640" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%" fill="white"/><g><polyline data-points="8.9,15.1 8.9,14.7" data-type="line" data-label="" points="116.09280861428033,144.50358953980253 116.09280861428033,173.21785694141772" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="8.9,15.1 11.1,13.3" data-type="line" data-label="" points="116.09280861428033,144.50358953980253 274.02127932316375,273.7177928470709" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="8.9,14.7 11.1,13.3" data-type="line" data-label="" points="116.09280861428033,173.21785694141772 274.02127932316375,273.7177928470709" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="8.9,14.9 8.9,14.5" data-type="line" data-label="" points="116.09280861428033,158.86072324061024 116.09280861428033,187.57499064222543" fill="none" stroke="hsl(23, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="8.9,14.9 11.1,12.7" data-type="line" data-label="" points="116.09280861428033,158.86072324061024 274.02127932316375,316.7891939494938" fill="none" stroke="hsl(23, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="8.9,14.9 13.08,10" data-type="line" data-label="" points="116.09280861428033,158.86072324061024 416.15690296115895,510.61049891039613" fill="none" stroke="hsl(23, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="8.9,14.5 11.1,12.7" data-type="line" data-label="" points="116.09280861428033,187.57499064222543 274.02127932316375,316.7891939494938" fill="none" stroke="hsl(23, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="8.9,14.5 13.08,10" data-type="line" data-label="" points="116.09280861428033,187.57499064222543 416.15690296115895,510.61049891039613" fill="none" stroke="hsl(23, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="11.1,12.7 13.08,10" data-type="line" data-label="" points="274.02127932316375,316.7891939494938 416.15690296115895,510.61049891039613" fill="none" stroke="hsl(23, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="11.1,15.5 14.92,10" data-type="line" data-label="" points="274.02127932316375,115.78932213818734 548.2425330085887,510.61049891039613" fill="none" stroke="hsl(50, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="8.9,14.7 8.600000000000001,14.7 8.600000000000001,15.1 8.9,15.1" data-type="line" data-label="" points="116.09280861428033,173.21785694141772 94.557108063069,173.21785694141772 94.557108063069,144.50358953980253 116.09280861428033,144.50358953980253" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="8.9,14.5 8.8,14.5 8.8,14.9 8.9,14.9" data-type="line" data-label="" points="116.09280861428033,187.57499064222543 108.91424176387648,187.57499064222543 108.91424176387648,158.86072324061024 116.09280861428033,158.86072324061024" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="11.1,12.7 12.09,12.7 12.09,10 13.08,10" data-type="line" data-label="" points="274.02127932316375,316.7891939494938 345.08909114216135,316.7891939494938 345.08909114216135,510.61049891039613 416.15690296115895,510.61049891039613" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="schematic_component_0" data-x="10" data-y="14" x="116.09280861428033" y="101.43218843737986" width="157.92847070888342" height="244.071272913729" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.01393035714285714"/></g><g><rect data-type="rect" data-label="schematic_component_1" data-x="14" data-y="10" x="416.15690296115895" y="482.6531862581721" width="132.08563004742973" height="55.91462530444801" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.01393035714285714"/></g><g><rect data-type="rect" data-label="netId: GND
|
|
2
|
+
globalConnNetId: connectivity_net0" data-x="8.359900000000001" data-y="14.7" x="60.09280861428027" y="166.03929009101387" width="34.457120881938295" height="14.357133700807708" fill="#00000066" stroke="#000000" stroke-width="0.01393035714285714"/></g><g><rect data-type="rect" data-label="netId: GND
|
|
3
|
+
globalConnNetId: connectivity_net0" data-x="11.341" data-y="13.3" x="274.09306499166775" y="266.5392259966671" width="34.457120881938295" height="14.357133700807594" fill="#00000066" stroke="#000000" stroke-width="0.01393035714285714"/></g><g><rect data-type="rect" data-label="netId: VCC_3V3
|
|
4
|
+
globalConnNetId: connectivity_net1" data-x="8.32" data-y="14.5" x="40.00000000000006" y="180.3964237918217" width="68.91424176387648" height="14.35713370080748" fill="#ef444466" stroke="#ef4444" stroke-width="0.01393035714285714"/></g><g><rect data-type="rect" data-label="netId: VCC_3V3
|
|
5
|
+
globalConnNetId: connectivity_net1" data-x="12.09" data-y="13.18" x="337.9105242917576" y="247.8749521856172" width="14.35713370080748" height="68.91424176387659" fill="#ef444466" stroke="#ef4444" stroke-width="0.01393035714285714"/></g><g><rect data-type="rect" data-label="netId: FAULT
|
|
6
|
+
globalConnNetId: connectivity_net2" data-x="11.460999999999999" data-y="15.5" x="274.09306499166775" y="108.6107552877836" width="51.68568132290727" height="14.35713370080748" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.01393035714285714"/></g><g><rect data-type="rect" data-label="netId: FAULT
|
|
7
|
+
globalConnNetId: connectivity_net2" data-x="15.280999999999999" data-y="10" x="548.3143186770927" y="503.43193205999233" width="51.68568132290716" height="14.357133700807594" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.01393035714285714"/></g><g><circle data-type="point" data-label="U_MCU.1
|
|
8
|
+
x-" data-x="8.9" data-y="15.5" cx="116.09280861428033" cy="115.78932213818734" r="3" fill="hsl(144, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.2
|
|
9
|
+
x-" data-x="8.9" data-y="15.3" cx="116.09280861428033" cy="130.14645583899483" r="3" fill="hsl(145, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.3
|
|
10
|
+
x-" data-x="8.9" data-y="15.1" cx="116.09280861428033" cy="144.50358953980253" r="3" fill="hsl(146, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.4
|
|
11
|
+
x-" data-x="8.9" data-y="14.9" cx="116.09280861428033" cy="158.86072324061024" r="3" fill="hsl(147, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.5
|
|
12
|
+
x-" data-x="8.9" data-y="14.7" cx="116.09280861428033" cy="173.21785694141772" r="3" fill="hsl(148, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.6
|
|
13
|
+
x-" data-x="8.9" data-y="14.5" cx="116.09280861428033" cy="187.57499064222543" r="3" fill="hsl(149, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.7
|
|
14
|
+
x-" data-x="8.9" data-y="14.3" cx="116.09280861428033" cy="201.9321243430329" r="3" fill="hsl(150, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.8
|
|
15
|
+
x-" data-x="8.9" data-y="14.1" cx="116.09280861428033" cy="216.2892580438405" r="3" fill="hsl(151, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.9
|
|
16
|
+
x-" data-x="8.9" data-y="13.9" cx="116.09280861428033" cy="230.6463917446481" r="3" fill="hsl(152, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.10
|
|
17
|
+
x-" data-x="8.9" data-y="13.700000000000001" cx="116.09280861428033" cy="245.0035254454557" r="3" fill="hsl(192, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.11
|
|
18
|
+
x-" data-x="8.9" data-y="13.5" cx="116.09280861428033" cy="259.3606591462633" r="3" fill="hsl(193, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.12
|
|
19
|
+
x-" data-x="8.9" data-y="13.3" cx="116.09280861428033" cy="273.7177928470709" r="3" fill="hsl(194, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.13
|
|
20
|
+
x-" data-x="8.9" data-y="13.1" cx="116.09280861428033" cy="288.0749265478785" r="3" fill="hsl(195, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.14
|
|
21
|
+
x-" data-x="8.9" data-y="12.9" cx="116.09280861428033" cy="302.43206024868607" r="3" fill="hsl(196, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.15
|
|
22
|
+
x-" data-x="8.9" data-y="12.7" cx="116.09280861428033" cy="316.7891939494938" r="3" fill="hsl(197, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.16
|
|
23
|
+
x-" data-x="8.9" data-y="12.5" cx="116.09280861428033" cy="331.14632765030126" r="3" fill="hsl(198, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.17
|
|
24
|
+
x+" data-x="11.1" data-y="12.5" cx="274.02127932316375" cy="331.14632765030126" r="3" fill="hsl(199, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.18
|
|
25
|
+
x+" data-x="11.1" data-y="12.7" cx="274.02127932316375" cy="316.7891939494938" r="3" fill="hsl(200, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.19
|
|
26
|
+
x+" data-x="11.1" data-y="12.9" cx="274.02127932316375" cy="302.43206024868607" r="3" fill="hsl(201, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.20
|
|
27
|
+
x+" data-x="11.1" data-y="13.1" cx="274.02127932316375" cy="288.0749265478785" r="3" fill="hsl(223, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.21
|
|
28
|
+
x+" data-x="11.1" data-y="13.3" cx="274.02127932316375" cy="273.7177928470709" r="3" fill="hsl(224, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.22
|
|
29
|
+
x+" data-x="11.1" data-y="13.5" cx="274.02127932316375" cy="259.3606591462633" r="3" fill="hsl(225, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.23
|
|
30
|
+
x+" data-x="11.1" data-y="13.7" cx="274.02127932316375" cy="245.0035254454558" r="3" fill="hsl(226, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.24
|
|
31
|
+
x+" data-x="11.1" data-y="13.9" cx="274.02127932316375" cy="230.6463917446481" r="3" fill="hsl(227, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.25
|
|
32
|
+
x+" data-x="11.1" data-y="14.1" cx="274.02127932316375" cy="216.2892580438405" r="3" fill="hsl(228, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.26
|
|
33
|
+
x+" data-x="11.1" data-y="14.299999999999999" cx="274.02127932316375" cy="201.9321243430329" r="3" fill="hsl(229, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.27
|
|
34
|
+
x+" data-x="11.1" data-y="14.5" cx="274.02127932316375" cy="187.57499064222543" r="3" fill="hsl(230, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.28
|
|
35
|
+
x+" data-x="11.1" data-y="14.7" cx="274.02127932316375" cy="173.21785694141772" r="3" fill="hsl(231, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.29
|
|
36
|
+
x+" data-x="11.1" data-y="14.9" cx="274.02127932316375" cy="158.86072324061024" r="3" fill="hsl(232, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.30
|
|
37
|
+
x+" data-x="11.1" data-y="15.1" cx="274.02127932316375" cy="144.50358953980253" r="3" fill="hsl(254, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.31
|
|
38
|
+
x+" data-x="11.1" data-y="15.3" cx="274.02127932316375" cy="130.14645583899483" r="3" fill="hsl(255, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.32
|
|
39
|
+
x+" data-x="11.1" data-y="15.5" cx="274.02127932316375" cy="115.78932213818734" r="3" fill="hsl(256, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="R_FAULT_PULLUP.1
|
|
40
|
+
x-" data-x="13.08" data-y="10" cx="416.15690296115895" cy="510.61049891039613" r="3" fill="hsl(344, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="R_FAULT_PULLUP.2
|
|
41
|
+
x+" data-x="14.92" data-y="10" cx="548.2425330085887" cy="510.61049891039613" r="3" fill="hsl(344, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
42
|
+
orientation: x-" data-x="8.600000000000001" data-y="14.7" cx="94.557108063069" cy="173.21785694141772" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
43
|
+
orientation: x+" data-x="11.1" data-y="13.3" cx="274.02127932316375" cy="273.7177928470709" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
44
|
+
orientation: x-" data-x="8.8" data-y="14.5" cx="108.91424176387648" cy="187.57499064222543" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
45
|
+
orientation: y+" data-x="12.09" data-y="12.7" cx="345.08909114216135" cy="316.7891939494938" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
46
|
+
orientation: x+" data-x="11.1" data-y="15.5" cx="274.02127932316375" cy="115.78932213818734" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
47
|
+
orientation: x+" data-x="14.92" data-y="10" cx="548.2425330085887" cy="510.61049891039613" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g id="crosshair" style="display: none"><line id="crosshair-h" y1="0" y2="640" stroke="#666" stroke-width="0.5"/><line id="crosshair-v" x1="0" x2="640" stroke="#666" stroke-width="0.5"/><text id="coordinates" font-family="monospace" font-size="12" fill="#666"></text></g><script><![CDATA[
|
|
46
48
|
document.currentScript.parentElement.addEventListener('mousemove', (e) => {
|
|
47
49
|
const svg = e.currentTarget;
|
|
48
50
|
const rect = svg.getBoundingClientRect();
|
|
@@ -64,7 +66,7 @@ orientation: x+" data-x="15.12" data-y="15.5" cx="549.5999999999999" cy="120.869
|
|
|
64
66
|
v.setAttribute('y2', '640');
|
|
65
67
|
|
|
66
68
|
// Calculate real coordinates using inverse transformation
|
|
67
|
-
const matrix = {"a":
|
|
69
|
+
const matrix = {"a":71.78566850403796,"c":0,"e":-522.7996410716576,"b":0,"d":-71.78566850403796,"f":1228.4671839507757};
|
|
68
70
|
// Manually invert and apply the affine transform
|
|
69
71
|
// Since we only use translate and scale, we can directly compute:
|
|
70
72
|
// x' = (x - tx) / sx
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
<svg width="640" height="640" viewBox="0 0 640 640" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%" fill="white"/><g><polyline data-points="-1.6750000000000007,-5.593455349999998 -1.6750000000000007,-5.193455349999998" data-type="line" data-label="" points="339.2947103274559,344.78589420654913 339.2947103274559,324.63476070528964" fill="none" stroke="hsl(344, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="-1.6750000000000007,-5.393455349999998 -4.135000000000001,-6.073455349999998" data-type="line" data-label="" points="339.2947103274559,334.71032745591936 215.36523929471034,368.9672544080604" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-1.6750000000000007,-5.393455349999998 -2.8950000000000005,-6.073455349999998" data-type="line" data-label="" points="339.2947103274559,334.71032745591936 277.8337531486146,368.9672544080604" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-1.6750000000000007,-5.393455349999998 1.544999999999999,-6.1734553499999985" data-type="line" data-label="" points="339.2947103274559,334.71032745591936 501.51133501259443,374.0050377833753" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-1.6750000000000007,-5.393455349999998 2.7849999999999993,-6.1734553499999985" data-type="line" data-label="" points="339.2947103274559,334.71032745591936 563.9798488664987,374.0050377833753" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-4.135000000000001,-6.073455349999998 -2.8950000000000005,-6.073455349999998" data-type="line" data-label="" points="215.36523929471034,368.9672544080604 277.8337531486146,368.9672544080604" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-4.135000000000001,-6.073455349999998 1.544999999999999,-6.1734553499999985" data-type="line" data-label="" points="215.36523929471034,368.9672544080604 501.51133501259443,374.0050377833753" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-4.135000000000001,-6.073455349999998 2.7849999999999993,-6.1734553499999985" data-type="line" data-label="" points="215.36523929471034,368.9672544080604 563.9798488664987,374.0050377833753" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-2.8950000000000005,-6.073455349999998 1.544999999999999,-6.1734553499999985" data-type="line" data-label="" points="277.8337531486146,368.9672544080604 501.51133501259443,374.0050377833753" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-2.8950000000000005,-6.073455349999998 2.7849999999999993,-6.1734553499999985" data-type="line" data-label="" points="277.8337531486146,368.9672544080604 563.9798488664987,374.0050377833753" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="1.544999999999999,-6.1734553499999985 2.7849999999999993,-6.1734553499999985" data-type="line" data-label="" points="501.51133501259443,374.0050377833753 563.9798488664987,374.0050377833753" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-4.655000000000001,-4.030455349999999 -1.6750000000000007,-5.193455349999998" data-type="line" data-label="" points="189.16876574307304,266.04534005037783 339.2947103274559,324.63476070528964" fill="none" stroke="hsl(309, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-4.655000000000001,-4.030455349999999 -1.6750000000000007,-5.593455349999998" data-type="line" data-label="" points="189.16876574307304,266.04534005037783 339.2947103274559,344.78589420654913" fill="none" stroke="hsl(309, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-4.655000000000001,-4.030455349999999 -4.135000000000001,-5.313455349999998" data-type="line" data-label="" points="189.16876574307304,266.04534005037783 215.36523929471034,330.68010075566747" fill="none" stroke="hsl(309, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-4.655000000000001,-4.030455349999999 -2.8950000000000005,-5.313455349999998" data-type="line" data-label="" points="189.16876574307304,266.04534005037783 277.8337531486146,330.68010075566747" fill="none" stroke="hsl(309, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-1.6750000000000007,-5.193455349999998 -1.6750000000000007,-5.593455349999998" data-type="line" data-label="" points="339.2947103274559,324.63476070528964 339.2947103274559,344.78589420654913" fill="none" stroke="hsl(309, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-1.6750000000000007,-5.193455349999998 -4.135000000000001,-5.313455349999998" data-type="line" data-label="" points="339.2947103274559,324.63476070528964 215.36523929471034,330.68010075566747" fill="none" stroke="hsl(309, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-1.6750000000000007,-5.193455349999998 -2.8950000000000005,-5.313455349999998" data-type="line" data-label="" points="339.2947103274559,324.63476070528964 277.8337531486146,330.68010075566747" fill="none" stroke="hsl(309, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-1.6750000000000007,-5.593455349999998 -4.135000000000001,-5.313455349999998" data-type="line" data-label="" points="339.2947103274559,344.78589420654913 215.36523929471034,330.68010075566747" fill="none" stroke="hsl(309, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-1.6750000000000007,-5.593455349999998 -2.8950000000000005,-5.313455349999998" data-type="line" data-label="" points="339.2947103274559,344.78589420654913 277.8337531486146,330.68010075566747" fill="none" stroke="hsl(309, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-4.135000000000001,-5.313455349999998 -2.8950000000000005,-5.313455349999998" data-type="line" data-label="" points="215.36523929471034,330.68010075566747 277.8337531486146,330.68010075566747" fill="none" stroke="hsl(309, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="0.3249999999999993,-5.293455349999999 1.544999999999999,-5.413455349999999" data-type="line" data-label="" points="440.05037783375315,329.67254408060455 501.51133501259443,335.7178841309824" fill="none" stroke="hsl(73, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="0.3249999999999993,-5.293455349999999 2.7849999999999993,-5.413455349999999" data-type="line" data-label="" points="440.05037783375315,329.67254408060455 563.9798488664987,335.7178841309824" fill="none" stroke="hsl(73, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="1.544999999999999,-5.413455349999999 2.7849999999999993,-5.413455349999999" data-type="line" data-label="" points="501.51133501259443,335.7178841309824 563.9798488664987,335.7178841309824" fill="none" stroke="hsl(73, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-4.135000000000001,-5.313455349999998 -4.135000000000001,-4.030455349999999 -4.655000000000001,-4.030455349999999" data-type="line" data-label="" points="215.36523929471034,330.68010075566747 215.36523929471034,266.04534005037783 189.16876574307304,266.04534005037783" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-2.8950000000000005,-5.313455349999998 -2.8950000000000005,-5.193455349999998 -4.135000000000001,-5.193455349999998 -4.135000000000001,-5.313455349999998" data-type="line" data-label="" points="277.8337531486146,330.68010075566747 277.8337531486146,324.63476070528964 215.36523929471034,324.63476070528964 215.36523929471034,330.68010075566747" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-1.6750000000000007,-5.193455349999998 -2.8950000000000005,-5.193455349999998 -2.8950000000000005,-5.313455349999998" data-type="line" data-label="" points="339.2947103274559,324.63476070528964 277.8337531486146,324.63476070528964 277.8337531486146,330.68010075566747" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-1.6750000000000007,-5.593455349999998 -1.8750000000000007,-5.593455349999998 -1.8750000000000007,-5.193455349999998 -1.6750000000000007,-5.193455349999998" data-type="line" data-label="" points="339.2947103274559,344.78589420654913 329.2191435768262,344.78589420654913 329.2191435768262,324.63476070528964 339.2947103274559,324.63476070528964" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-2.8950000000000005,-6.073455349999998 -2.8950000000000005,-6.273455349999998 -1.9799999999999998,-6.273455349999998 -1.9799999999999998,-5.393455349999998 -1.6750000000000007,-5.393455349999998" data-type="line" data-label="" points="277.8337531486146,368.9672544080604 277.8337531486146,379.0428211586901 323.92947103274565,379.0428211586901 323.92947103274565,334.71032745591936 339.2947103274559,334.71032745591936" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-4.135000000000001,-6.073455349999998 -4.135000000000001,-6.273455349999998 -2.8950000000000005,-6.273455349999998 -2.8950000000000005,-6.073455349999998" data-type="line" data-label="" points="215.36523929471034,368.9672544080604 215.36523929471034,379.0428211586901 277.8337531486146,379.0428211586901 277.8337531486146,368.9672544080604" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="2.7849999999999993,-6.1734553499999985 2.7849999999999993,-6.373455349999999 1.544999999999999,-6.373455349999999 1.544999999999999,-6.1734553499999985" data-type="line" data-label="" points="563.9798488664987,374.0050377833753 563.9798488664987,384.08060453400503 501.51133501259443,384.08060453400503 501.51133501259443,374.0050377833753" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="1.544999999999999,-5.413455349999999 1.544999999999999,-5.293455349999999 0.3249999999999993,-5.293455349999999" data-type="line" data-label="" points="501.51133501259443,335.7178841309824 501.51133501259443,329.67254408060455 440.05037783375315,329.67254408060455" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="2.7849999999999993,-5.413455349999999 2.7849999999999993,-5.293455349999999 1.544999999999999,-5.293455349999999 1.544999999999999,-5.413455349999999" data-type="line" data-label="" points="563.9798488664987,335.7178841309824 563.9798488664987,329.67254408060455 501.51133501259443,329.67254408060455 501.51133501259443,335.7178841309824" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-6.655000000000001,-4.030455349999999 -7.136000000000002,-4.030455349999999 -7.136000000000002,-3.829455349999998" data-type="line" data-label="" points="88.41309823677585,266.04534005037783 64.18136020151132,266.04534005037783 64.18136020151132,255.91939546599494" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="schematic_component_3" data-x="-5.655000000000001" data-y="-4.030455349999999" x="88.41309823677585" y="255.9697732997481" width="100.75566750629719" height="20.151133501259437" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.019850000000000003"/></g><g><rect data-type="rect" data-label="schematic_component_4" data-x="-0.6750000000000007" data-y="-5.393455349999998" x="339.29471032745596" y="319.5969773299748" width="100.75566750629724" height="30.226700251889156" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.019850000000000003"/></g><g><rect data-type="rect" data-label="schematic_component_5" data-x="-4.000000000000001" data-y="-5.693455349999998" x="198.99244332493703" y="330.68010075566747" width="46.347607052896734" height="38.28715365239293" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.019850000000000003"/></g><g><rect data-type="rect" data-label="schematic_component_6" data-x="-2.7" data-y="-5.693455349999998" x="261.46095717884134" y="330.68010075566747" width="52.392947103274594" height="38.28715365239293" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.019850000000000003"/></g><g><rect data-type="rect" data-label="schematic_component_7" data-x="1.6799999999999988" data-y="-5.793455349999999" x="485.13853904282115" y="335.7178841309824" width="46.347607052896706" height="38.28715365239293" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.019850000000000003"/></g><g><rect data-type="rect" data-label="schematic_component_8" data-x="2.9799999999999995" data-y="-5.793455349999999" x="547.6070528967255" y="335.7178841309824" width="52.39294710327465" height="38.28715365239293" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.019850000000000003"/></g><g><rect data-type="rect" data-label="BSMD1206_200_12V" data-x="-5.295000000000001" data-y="-4.360455349999999" x="108.56423173803528" y="278.1360201511335" width="96.72544080604533" height="9.068010075566747" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.019850000000000003"/></g><g><rect data-type="rect" data-label="2A PTC" data-x="-5.895000000000001" data-y="-3.7154553499999983" x="105.54156171284637" y="243.87909319899245" width="42.31738035264482" height="12.59445843828712" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.019850000000000003"/></g><g><rect data-type="rect" data-label="AP2112K_3_3TRG1" data-x="-0.3750000000000009" data-y="-5.823455349999998" x="359.4458438287153" y="351.83879093198993" width="90.68010075566752" height="9.068010075566747" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.019850000000000003"/></g><g><rect data-type="rect" data-label="AP2112K-3.3" data-x="-0.6150000000000009" data-y="-4.978455349999999" x="356.4231738035264" y="307.5062972292192" width="72.54408060453397" height="12.59445843828712" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.019850000000000003"/></g><g><rect data-type="rect" data-label="netId: VBUS_5V
|
|
2
|
+
globalConnNetId: connectivity_net2" data-x="-7.136000000000002" data-y="-3.619455349999998" x="40.00000000000003" y="234.76070528967253" width="48.36272040302259" height="21.15869017632241" fill="#ef444466" stroke="#ef4444" stroke-width="0.019850000000000003"/></g><g><rect data-type="rect" data-label="netId: V5_SYS
|
|
3
|
+
globalConnNetId: connectivity_net0" data-x="-4.135000000000001" data-y="-3.8204553499999987" x="194.20654911838793" y="244.88664987405542" width="42.31738035264482" height="21.15869017632241" fill="#ef444466" stroke="#ef4444" stroke-width="0.019850000000000003"/></g><g><rect data-type="rect" data-label="netId: GND
|
|
4
|
+
globalConnNetId: connectivity_net1" data-x="-2.8950000000000005" data-y="-6.483455349999998" x="265.74307304785896" y="379.0428211586901" width="24.181360201511325" height="21.15869017632241" fill="#00000066" stroke="#000000" stroke-width="0.019850000000000003"/></g><g><rect data-type="rect" data-label="netId: GND
|
|
5
|
+
globalConnNetId: connectivity_net1" data-x="2.7849999999999993" data-y="-6.583455349999999" x="551.8891687657431" y="384.08060453400503" width="24.181360201511325" height="21.15869017632241" fill="#00000066" stroke="#000000" stroke-width="0.019850000000000003"/></g><g><rect data-type="rect" data-label="netId: V3_3
|
|
6
|
+
globalConnNetId: connectivity_net3" data-x="2.7849999999999993" data-y="-5.0034553499999985" x="548.8664987405541" y="304.4836272040302" width="30.226700251889156" height="21.158690176322466" fill="#ef444466" stroke="#ef4444" stroke-width="0.019850000000000003"/></g><g><circle data-type="point" data-label="schematic_port_20
|
|
7
|
+
x-" data-x="-6.655000000000001" data-y="-4.030455349999999" cx="88.41309823677585" cy="266.04534005037783" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_21
|
|
8
|
+
x+" data-x="-4.655000000000001" data-y="-4.030455349999999" cx="189.16876574307304" cy="266.04534005037783" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_22
|
|
9
|
+
x-" data-x="-1.6750000000000007" data-y="-5.193455349999998" cx="339.2947103274559" cy="324.63476070528964" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_23
|
|
10
|
+
x-" data-x="-1.6750000000000007" data-y="-5.393455349999998" cx="339.2947103274559" cy="334.71032745591936" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_24
|
|
11
|
+
x-" data-x="-1.6750000000000007" data-y="-5.593455349999998" cx="339.2947103274559" cy="344.78589420654913" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_25
|
|
12
|
+
x+" data-x="0.3249999999999993" data-y="-5.493455349999998" cx="440.05037783375315" cy="339.7481108312342" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_26
|
|
13
|
+
x+" data-x="0.3249999999999993" data-y="-5.293455349999999" cx="440.05037783375315" cy="329.67254408060455" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_27
|
|
14
|
+
y+" data-x="-4.135000000000001" data-y="-5.313455349999998" cx="215.36523929471034" cy="330.68010075566747" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_28
|
|
15
|
+
y-" data-x="-4.135000000000001" data-y="-6.073455349999998" cx="215.36523929471034" cy="368.9672544080604" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_29
|
|
16
|
+
y+" data-x="-2.8950000000000005" data-y="-5.313455349999998" cx="277.8337531486146" cy="330.68010075566747" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_30
|
|
17
|
+
y-" data-x="-2.8950000000000005" data-y="-6.073455349999998" cx="277.8337531486146" cy="368.9672544080604" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_31
|
|
18
|
+
y+" data-x="1.544999999999999" data-y="-5.413455349999999" cx="501.51133501259443" cy="335.7178841309824" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_32
|
|
19
|
+
y-" data-x="1.544999999999999" data-y="-6.1734553499999985" cx="501.51133501259443" cy="374.0050377833753" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_33
|
|
20
|
+
y+" data-x="2.7849999999999993" data-y="-5.413455349999999" cx="563.9798488664987" cy="335.7178841309824" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_34
|
|
21
|
+
y-" data-x="2.7849999999999993" data-y="-6.1734553499999985" cx="563.9798488664987" cy="374.0050377833753" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
22
|
+
orientation: y+" data-x="-7.136000000000002" data-y="-3.829455349999998" cx="64.18136020151132" cy="255.91939546599494" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
23
|
+
orientation: y+" data-x="-4.135000000000001" data-y="-4.030455349999999" cx="215.36523929471034" cy="266.04534005037783" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
24
|
+
orientation: y-" data-x="-2.8950000000000005" data-y="-6.273455349999998" cx="277.8337531486146" cy="379.0428211586901" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
25
|
+
orientation: y-" data-x="2.7849999999999993" data-y="-6.373455349999999" cx="563.9798488664987" cy="384.08060453400503" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
26
|
+
orientation: y+" data-x="2.7849999999999993" data-y="-5.2134553499999985" cx="563.9798488664987" cy="325.64231738035267" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g id="crosshair" style="display: none"><line id="crosshair-h" y1="0" y2="640" stroke="#666" stroke-width="0.5"/><line id="crosshair-v" x1="0" x2="640" stroke="#666" stroke-width="0.5"/><text id="coordinates" font-family="monospace" font-size="12" fill="#666"></text></g><script><![CDATA[
|
|
27
|
+
document.currentScript.parentElement.addEventListener('mousemove', (e) => {
|
|
28
|
+
const svg = e.currentTarget;
|
|
29
|
+
const rect = svg.getBoundingClientRect();
|
|
30
|
+
const x = e.clientX - rect.left;
|
|
31
|
+
const y = e.clientY - rect.top;
|
|
32
|
+
const crosshair = svg.getElementById('crosshair');
|
|
33
|
+
const h = svg.getElementById('crosshair-h');
|
|
34
|
+
const v = svg.getElementById('crosshair-v');
|
|
35
|
+
const coords = svg.getElementById('coordinates');
|
|
36
|
+
|
|
37
|
+
crosshair.style.display = 'block';
|
|
38
|
+
h.setAttribute('x1', '0');
|
|
39
|
+
h.setAttribute('x2', '640');
|
|
40
|
+
h.setAttribute('y1', y);
|
|
41
|
+
h.setAttribute('y2', y);
|
|
42
|
+
v.setAttribute('x1', x);
|
|
43
|
+
v.setAttribute('x2', x);
|
|
44
|
+
v.setAttribute('y1', '0');
|
|
45
|
+
v.setAttribute('y2', '640');
|
|
46
|
+
|
|
47
|
+
// Calculate real coordinates using inverse transformation
|
|
48
|
+
const matrix = {"a":50.37783375314861,"c":0,"e":423.67758186397987,"b":0,"d":-50.37783375314861,"f":62.99973047858953};
|
|
49
|
+
// Manually invert and apply the affine transform
|
|
50
|
+
// Since we only use translate and scale, we can directly compute:
|
|
51
|
+
// x' = (x - tx) / sx
|
|
52
|
+
// y' = (y - ty) / sy
|
|
53
|
+
const sx = matrix.a;
|
|
54
|
+
const sy = matrix.d;
|
|
55
|
+
const tx = matrix.e;
|
|
56
|
+
const ty = matrix.f;
|
|
57
|
+
const realPoint = {
|
|
58
|
+
x: (x - tx) / sx,
|
|
59
|
+
y: (y - ty) / sy // Flip y back since we used negative scale
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
coords.textContent = `(${realPoint.x.toFixed(2)}, ${realPoint.y.toFixed(2)})`;
|
|
63
|
+
coords.setAttribute('x', (x + 5).toString());
|
|
64
|
+
coords.setAttribute('y', (y - 5).toString());
|
|
65
|
+
});
|
|
66
|
+
document.currentScript.parentElement.addEventListener('mouseleave', () => {
|
|
67
|
+
document.currentScript.parentElement.getElementById('crosshair').style.display = 'none';
|
|
68
|
+
});
|
|
69
|
+
]]></script></svg>
|