- regularize.rs: ρ=0 no-op, 0<ρ<1 lerp non-frontage verts toward
OBB-snapped target, ρ=1 full snap to oriented bounding rectangle.
- viz: add fig_03_cul_de_sac, fig_05_acute_corner, plot_subdivision_perf
(~125 µs/parcel at 25×25 scale), plot_parcel_area_hist (varied-block
scene so the distribution is actually distributed). fig_07 panels at
ρ ∈ {0, 0.5, 1.0} on a Y intersection (rectangles are no-ops for OBB).
- subdivide.rs cleanup pass: drop parcels on diff/union/conversion
fallback paths instead of pushing untracked claims (was admitting
overlaps). find_frontage_edge_after_clip now takes a tolerance — the
cleanup pass uses a few-mm window since its inputs are 1mm-snapped.
- tests: bump assert_no_overlapping_parcels tol to 1cm² (the snap grid
produces ~mm-scale slivers between adjacent parcels at intersection
centers; still well below min_area).
Closes M1.0 DoD: all named tests pass, all spec figures present, OBB
regularization working, perf at ~0.13 ms/parcel.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
194 lines
20 KiB
XML
194 lines
20 KiB
XML
<svg height="474.316" viewBox="-146.42135623730948 -5 292.84271247461896 118.579" width="1171.3708498984759" xmlns="http://www.w3.org/2000/svg">
|
|
<rect fill="#ffffff" height="118.579" width="292.84271247461896" x="-146.42135623730948" y="-5"/>
|
|
<g transform="translate(0, 108.579) scale(1, -1)">
|
|
<g id="roads">
|
|
<line stroke="#000000" stroke-linecap="round" stroke-width="0.6" x1="-141.42135623730948" x2="-111.11404660392043" y1="58.57864376269049" y2="33.70607753949096"/>
|
|
<line stroke="#000000" stroke-linecap="round" stroke-width="0.6" x1="-111.11404660392043" x2="-76.53668647301795" y1="33.70607753949096" y2="15.224093497742643"/>
|
|
<line stroke="#000000" stroke-linecap="round" stroke-width="0.6" x1="-76.53668647301795" x2="-39.01806440322565" y1="15.224093497742643" y2="3.8429439193538997"/>
|
|
<line stroke="#000000" stroke-linecap="round" stroke-width="0.6" x1="-39.01806440322565" x2="0" y1="3.8429439193538997" y2="0"/>
|
|
<line stroke="#000000" stroke-linecap="round" stroke-width="0.6" x1="0" x2="39.01806440322565" y1="0" y2="3.8429439193538997"/>
|
|
<line stroke="#000000" stroke-linecap="round" stroke-width="0.6" x1="39.01806440322565" x2="76.53668647301795" y1="3.8429439193538997" y2="15.224093497742643"/>
|
|
<line stroke="#000000" stroke-linecap="round" stroke-width="0.6" x1="76.53668647301795" x2="111.11404660392043" y1="15.224093497742643" y2="33.70607753949096"/>
|
|
<line stroke="#000000" stroke-linecap="round" stroke-width="0.6" x1="111.11404660392043" x2="141.42135623730948" y1="33.70607753949096" y2="58.57864376269049"/>
|
|
<line stroke="#000000" stroke-linecap="round" stroke-width="0.6" x1="141.42135623730948" x2="141.42135623730948" y1="58.57864376269049" y2="108.57864376269049"/>
|
|
<line stroke="#000000" stroke-linecap="round" stroke-width="0.6" x1="141.42135623730948" x2="-141.42135623730948" y1="108.57864376269049" y2="108.57864376269049"/>
|
|
<line stroke="#000000" stroke-linecap="round" stroke-width="0.6" x1="-141.42135623730948" x2="-141.42135623730948" y1="108.57864376269049" y2="58.57864376269049"/>
|
|
</g>
|
|
<g id="parcels">
|
|
<path d="M-141.421,78.182 L-141.421,58.579 L-126.268,46.142 L-113.831,61.296 z" fill="#fff7c2" fill-opacity="0.3" stroke="none"/>
|
|
<line stroke="#1f5fb4" stroke-width="0.9" x1="-141.421" x2="-141.421" y1="78.182" y2="58.579"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="-141.421" x2="-126.268" y1="58.579" y2="46.142"/>
|
|
<line stroke="#bdbdbd" stroke-dasharray="1.6,1.2" stroke-width="0.4" x1="-126.268" x2="-113.831" y1="46.142" y2="61.296"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="-113.831" x2="-141.421" y1="61.296" y2="78.182"/>
|
|
<path d="M126.268,46.142 L141.421,58.579 L141.421,78.182 L121.818,78.182 z" fill="#fff7c2" fill-opacity="0.3" stroke="none"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="126.268" x2="141.421" y1="46.142" y2="58.579"/>
|
|
<line stroke="#1f5fb4" stroke-width="0.9" x1="141.421" x2="141.421" y1="58.579" y2="78.182"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="141.421" x2="121.818" y1="78.182" y2="78.182"/>
|
|
<line stroke="#bdbdbd" stroke-dasharray="1.6,1.2" stroke-width="0.4" x1="121.818" x2="126.268" y1="78.182" y2="46.142"/>
|
|
<path d="M141.421,83.579 L141.421,108.579 L121.421,108.579 L121.421,83.579 z" fill="#fff7c2" fill-opacity="0.3" stroke="none"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="141.421" x2="141.421" y1="83.579" y2="108.579"/>
|
|
<line stroke="#1f5fb4" stroke-width="0.9" x1="141.421" x2="121.421" y1="108.579" y2="108.579"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="121.421" x2="121.421" y1="108.579" y2="83.579"/>
|
|
<line stroke="#bdbdbd" stroke-dasharray="1.6,1.2" stroke-width="0.4" x1="121.421" x2="141.421" y1="83.579" y2="83.579"/>
|
|
<path d="M-121.421,83.579 L-121.421,108.579 L-141.421,108.579 L-141.421,83.579 z" fill="#fff7c2" fill-opacity="0.3" stroke="none"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="-121.421" x2="-121.421" y1="83.579" y2="108.579"/>
|
|
<line stroke="#1f5fb4" stroke-width="0.9" x1="-121.421" x2="-141.421" y1="108.579" y2="108.579"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="-141.421" x2="-141.421" y1="108.579" y2="83.579"/>
|
|
<line stroke="#bdbdbd" stroke-dasharray="1.6,1.2" stroke-width="0.4" x1="-141.421" x2="-121.421" y1="83.579" y2="83.579"/>
|
|
<path d="M-111.114,33.706 L-89.545,59.988 L-104.698,72.425 L-113.83125,61.296154 L-113.831,61.296 L-126.268,46.142 z" fill="#fff7c2" fill-opacity="0.3" stroke="none"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="-111.114" x2="-89.545" y1="33.706" y2="59.988"/>
|
|
<line stroke="#bdbdbd" stroke-dasharray="1.6,1.2" stroke-width="0.4" x1="-89.545" x2="-104.698" y1="59.988" y2="72.425"/>
|
|
<line stroke="#bdbdbd" stroke-dasharray="1.6,1.2" stroke-width="0.4" x1="-104.698" x2="-113.83125050298611" y1="72.425" y2="61.29615331618062"/>
|
|
<line stroke="#bdbdbd" stroke-dasharray="1.6,1.2" stroke-width="0.4" x1="-113.83125050298611" x2="-113.831" y1="61.29615331618062" y2="61.296"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="-113.831" x2="-126.268" y1="61.296" y2="46.142"/>
|
|
<line stroke="#1f5fb4" stroke-width="0.9" x1="-126.268" x2="-111.114" y1="46.142" y2="33.706"/>
|
|
<path d="M-90.957,22.932 L-76.526,49.93 L-91.31298,57.833702 L-111.114,33.706 z" fill="#fff7c2" fill-opacity="0.3" stroke="none"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="-90.957" x2="-76.526" y1="22.932" y2="49.93"/>
|
|
<line stroke="#bdbdbd" stroke-dasharray="1.6,1.2" stroke-width="0.4" x1="-76.526" x2="-91.31298004772495" y1="49.93" y2="57.83370209030057"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="-91.31298004772495" x2="-111.114" y1="57.83370209030057" y2="33.706"/>
|
|
<line stroke="#1f5fb4" stroke-width="0.9" x1="-111.114" x2="-90.957" y1="33.706" y2="22.932"/>
|
|
<path d="M-76.537,15.224 L-63.421,39.762 L-77.841576,47.468773 L-90.957,22.932 z" fill="#fff7c2" fill-opacity="0.3" stroke="none"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="-76.537" x2="-63.421" y1="15.224" y2="39.762"/>
|
|
<line stroke="#bdbdbd" stroke-dasharray="1.6,1.2" stroke-width="0.4" x1="-63.421" x2="-77.84157715775224" y1="39.762" y2="47.46877402085823"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="-77.84157715775224" x2="-90.957" y1="47.46877402085823" y2="22.932"/>
|
|
<line stroke="#1f5fb4" stroke-width="0.9" x1="-90.957" x2="-76.537" y1="22.932" y2="15.224"/>
|
|
<path d="M-58.542,9.765 L-49.443,39.761 L-67.438,45.219 L-68.30207,42.370583 L-63.421,39.762 L-76.537,15.224 z" fill="#fff7c2" fill-opacity="0.3" stroke="none"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="-58.542" x2="-49.443" y1="9.765" y2="39.761"/>
|
|
<line stroke="#bdbdbd" stroke-dasharray="1.6,1.2" stroke-width="0.4" x1="-49.443" x2="-67.438" y1="39.761" y2="45.219"/>
|
|
<line stroke="#bdbdbd" stroke-dasharray="1.6,1.2" stroke-width="0.4" x1="-67.438" x2="-68.30206848079045" y1="45.219" y2="42.37058434099245"/>
|
|
<line stroke="#bdbdbd" stroke-dasharray="1.6,1.2" stroke-width="0.4" x1="-68.30206848079045" x2="-63.421" y1="42.37058434099245" y2="39.762"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="-63.421" x2="-76.537" y1="39.762" y2="15.224"/>
|
|
<line stroke="#1f5fb4" stroke-width="0.9" x1="-76.537" x2="-58.542" y1="15.224" y2="9.765"/>
|
|
<path d="M-39.018,3.843 L-29.319,35.816 L-48.843,41.739 L-49.443005,39.761 L-49.443,39.761 L-58.542,9.765 z" fill="#fff7c2" fill-opacity="0.3" stroke="none"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="-39.018" x2="-29.319" y1="3.843" y2="35.816"/>
|
|
<line stroke="#bdbdbd" stroke-dasharray="1.6,1.2" stroke-width="0.4" x1="-29.319" x2="-48.843" y1="35.816" y2="41.739"/>
|
|
<line stroke="#bdbdbd" stroke-dasharray="1.6,1.2" stroke-width="0.4" x1="-48.843" x2="-49.4430063581586" y1="41.739" y2="39.76100192847067"/>
|
|
<line stroke="#bdbdbd" stroke-dasharray="1.6,1.2" stroke-width="0.4" x1="-49.4430063581586" x2="-49.443" y1="39.76100192847067" y2="39.761"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="-49.443" x2="-58.542" y1="39.761" y2="9.765"/>
|
|
<line stroke="#1f5fb4" stroke-width="0.9" x1="-58.542" x2="-39.018" y1="9.765" y2="3.843"/>
|
|
<path d="M-20.153,1.985 L-16.982,34.187 L-29.440907,35.414135 L-39.018,3.843 z" fill="#fff7c2" fill-opacity="0.3" stroke="none"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="-20.153" x2="-16.982" y1="1.985" y2="34.187"/>
|
|
<line stroke="#bdbdbd" stroke-dasharray="1.6,1.2" stroke-width="0.4" x1="-16.982" x2="-29.440906064664425" y1="34.187" y2="35.41413355959216"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="-29.440906064664425" x2="-39.018" y1="35.41413355959216" y2="3.843"/>
|
|
<line stroke="#1f5fb4" stroke-width="0.9" x1="-39.018" x2="-20.153" y1="3.843" y2="1.985"/>
|
|
<path d="M0,0 L2.927,29.719 L-17.226,31.704 L-20.153,1.985 z" fill="#fff7c2" fill-opacity="0.3" stroke="none"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="0" x2="2.927" y1="0" y2="29.719"/>
|
|
<line stroke="#bdbdbd" stroke-dasharray="1.6,1.2" stroke-width="0.4" x1="2.927" x2="-17.226" y1="29.719" y2="31.704"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="-17.226" x2="-20.153" y1="31.704" y2="1.985"/>
|
|
<line stroke="#1f5fb4" stroke-width="0.9" x1="-20.153" x2="0" y1="1.985" y2="0"/>
|
|
<path d="M21.35,2.103 L18.552,30.512 L2.8528724,28.966352 L0,0 z" fill="#fff7c2" fill-opacity="0.3" stroke="none"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="21.35" x2="18.552" y1="2.103" y2="30.512"/>
|
|
<line stroke="#bdbdbd" stroke-dasharray="1.6,1.2" stroke-width="0.4" x1="18.552" x2="2.852872399874353" y1="30.512" y2="28.966352870470065"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="2.852872399874353" x2="0" y1="28.966352870470065" y2="0"/>
|
|
<line stroke="#1f5fb4" stroke-width="0.9" x1="0" x2="21.35" y1="0" y2="2.103"/>
|
|
<path d="M21.35,2.103 L39.018,3.843 L36.142,33.046 L18.474,31.306 z" fill="#fff7c2" fill-opacity="0.3" stroke="none"/>
|
|
<line stroke="#1f5fb4" stroke-width="0.9" x1="21.35" x2="39.018" y1="2.103" y2="3.843"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="39.018" x2="36.142" y1="3.843" y2="33.046"/>
|
|
<line stroke="#bdbdbd" stroke-dasharray="1.6,1.2" stroke-width="0.4" x1="36.142" x2="18.474" y1="33.046" y2="31.306"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="18.474" x2="21.35" y1="31.306" y2="2.103"/>
|
|
<path d="M30.332788,32.473892 L36.142,33.046 L39.018,3.843 L55.307,8.784 L45.965,39.58 L29.676,34.639 z" fill="#fff7c2" fill-opacity="0.3" stroke="none"/>
|
|
<line stroke="#bdbdbd" stroke-dasharray="1.6,1.2" stroke-width="0.4" x1="30.33278827642877" x2="36.142" y1="32.47389062717829" y2="33.046"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="36.142" x2="39.018" y1="33.046" y2="3.843"/>
|
|
<line stroke="#1f5fb4" stroke-width="0.9" x1="39.018" x2="55.307" y1="3.843" y2="8.784"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="55.307" x2="45.965" y1="8.784" y2="39.58"/>
|
|
<line stroke="#bdbdbd" stroke-dasharray="1.6,1.2" stroke-width="0.4" x1="45.965" x2="29.676" y1="39.58" y2="34.639"/>
|
|
<line stroke="#bdbdbd" stroke-dasharray="1.6,1.2" stroke-width="0.4" x1="29.676" x2="30.33278827642877" y1="34.639" y2="32.47389062717829"/>
|
|
<path d="M45.964855,39.579956 L45.965,39.58 L55.307,8.784 L76.537,15.224 L66.667,47.76 L45.437,41.32 z" fill="#fff7c2" fill-opacity="0.3" stroke="none"/>
|
|
<line stroke="#bdbdbd" stroke-dasharray="1.6,1.2" stroke-width="0.4" x1="45.964853419241145" x2="45.965" y1="39.57995553713982" y2="39.58"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="45.965" x2="55.307" y1="39.58" y2="8.784"/>
|
|
<line stroke="#1f5fb4" stroke-width="0.9" x1="55.307" x2="76.537" y1="8.784" y2="15.224"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="76.537" x2="66.667" y1="15.224" y2="47.76"/>
|
|
<line stroke="#bdbdbd" stroke-dasharray="1.6,1.2" stroke-width="0.4" x1="66.667" x2="45.437" y1="47.76" y2="41.32"/>
|
|
<line stroke="#bdbdbd" stroke-dasharray="1.6,1.2" stroke-width="0.4" x1="45.437" x2="45.964853419241145" y1="41.32" y2="39.57995553713982"/>
|
|
<path d="M76.537,15.224 L93.476,24.279 L80.126,49.255 L68.154495,42.856537 z" fill="#fff7c2" fill-opacity="0.3" stroke="none"/>
|
|
<line stroke="#1f5fb4" stroke-width="0.9" x1="76.537" x2="93.476" y1="15.224" y2="24.279"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="93.476" x2="80.126" y1="24.279" y2="49.255"/>
|
|
<line stroke="#bdbdbd" stroke-dasharray="1.6,1.2" stroke-width="0.4" x1="80.126" x2="68.15449678710901" y1="49.255" y2="42.85653541384209"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="68.15449678710901" x2="76.537" y1="42.85653541384209" y2="15.224"/>
|
|
<path d="M93.476,24.279 L111.114,33.706 L95.815,62.328 L78.178,52.9 z" fill="#fff7c2" fill-opacity="0.3" stroke="none"/>
|
|
<line stroke="#1f5fb4" stroke-width="0.9" x1="93.476" x2="111.114" y1="24.279" y2="33.706"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="111.114" x2="95.815" y1="33.706" y2="62.328"/>
|
|
<line stroke="#bdbdbd" stroke-dasharray="1.6,1.2" stroke-width="0.4" x1="95.815" x2="78.178" y1="62.328" y2="52.9"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="78.178" x2="93.476" y1="52.9" y2="24.279"/>
|
|
<path d="M95.815,62.328 L111.114,33.706 L126.268,46.142 L105.895,70.967 L94.53239,61.64237 z" fill="#fff7c2" fill-opacity="0.3" stroke="none"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="95.815" x2="111.114" y1="62.328" y2="33.706"/>
|
|
<line stroke="#1f5fb4" stroke-width="0.9" x1="111.114" x2="126.268" y1="33.706" y2="46.142"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="126.268" x2="105.895" y1="46.142" y2="70.967"/>
|
|
<line stroke="#bdbdbd" stroke-dasharray="1.6,1.2" stroke-width="0.4" x1="105.895" x2="94.5323860488542" y1="70.967" y2="61.64236841121492"/>
|
|
<line stroke="#bdbdbd" stroke-dasharray="1.6,1.2" stroke-width="0.4" x1="94.5323860488542" x2="95.815" y1="61.64236841121492" y2="62.328"/>
|
|
<path d="M121.421,78.983 L121.421,108.579 L99.49,108.579 L99.49,78.983 z" fill="#fff7c2" fill-opacity="0.3" stroke="none"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="121.421" x2="121.421" y1="78.983" y2="108.579"/>
|
|
<line stroke="#1f5fb4" stroke-width="0.9" x1="121.421" x2="99.49" y1="108.579" y2="108.579"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="99.49" x2="99.49" y1="108.579" y2="78.983"/>
|
|
<line stroke="#bdbdbd" stroke-dasharray="1.6,1.2" stroke-width="0.4" x1="99.49" x2="121.421" y1="78.983" y2="78.983"/>
|
|
<path d="M99.49,80.185 L99.49,108.579 L80.528,108.579 L80.528,80.185 z" fill="#fff7c2" fill-opacity="0.3" stroke="none"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="99.49" x2="99.49" y1="80.185" y2="108.579"/>
|
|
<line stroke="#1f5fb4" stroke-width="0.9" x1="99.49" x2="80.528" y1="108.579" y2="108.579"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="80.528" x2="80.528" y1="108.579" y2="80.185"/>
|
|
<line stroke="#bdbdbd" stroke-dasharray="1.6,1.2" stroke-width="0.4" x1="80.528" x2="99.49" y1="80.185" y2="80.185"/>
|
|
<path d="M80.528,80.378 L80.528,108.579 L61.466,108.579 L61.466,80.378 z" fill="#fff7c2" fill-opacity="0.3" stroke="none"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="80.528" x2="80.528" y1="80.378" y2="108.579"/>
|
|
<line stroke="#1f5fb4" stroke-width="0.9" x1="80.528" x2="61.466" y1="108.579" y2="108.579"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="61.466" x2="61.466" y1="108.579" y2="80.378"/>
|
|
<line stroke="#bdbdbd" stroke-dasharray="1.6,1.2" stroke-width="0.4" x1="61.466" x2="80.528" y1="80.378" y2="80.378"/>
|
|
<path d="M61.466,74.579 L61.466,108.579 L44.111,108.579 L44.111,74.579 z" fill="#fff7c2" fill-opacity="0.3" stroke="none"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="61.466" x2="61.466" y1="74.579" y2="108.579"/>
|
|
<line stroke="#1f5fb4" stroke-width="0.9" x1="61.466" x2="44.111" y1="108.579" y2="108.579"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="44.111" x2="44.111" y1="108.579" y2="74.579"/>
|
|
<line stroke="#bdbdbd" stroke-dasharray="1.6,1.2" stroke-width="0.4" x1="44.111" x2="61.466" y1="74.579" y2="74.579"/>
|
|
<path d="M44.111,78.173 L44.111,108.579 L25.039,108.579 L25.039,78.173 z" fill="#fff7c2" fill-opacity="0.3" stroke="none"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="44.111" x2="44.111" y1="78.173" y2="108.579"/>
|
|
<line stroke="#1f5fb4" stroke-width="0.9" x1="44.111" x2="25.039" y1="108.579" y2="108.579"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="25.039" x2="25.039" y1="108.579" y2="78.173"/>
|
|
<line stroke="#bdbdbd" stroke-dasharray="1.6,1.2" stroke-width="0.4" x1="25.039" x2="44.111" y1="78.173" y2="78.173"/>
|
|
<path d="M25.039,79.174 L25.039,108.579 L2.42,108.579 L2.42,79.174 z" fill="#fff7c2" fill-opacity="0.3" stroke="none"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="25.039" x2="25.039" y1="79.174" y2="108.579"/>
|
|
<line stroke="#1f5fb4" stroke-width="0.9" x1="25.039" x2="2.42" y1="108.579" y2="108.579"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="2.42" x2="2.42" y1="108.579" y2="79.174"/>
|
|
<line stroke="#bdbdbd" stroke-dasharray="1.6,1.2" stroke-width="0.4" x1="2.42" x2="25.039" y1="79.174" y2="79.174"/>
|
|
<path d="M2.42,74.579 L2.42,108.579 L-20.559,108.579 L-20.559,74.579 z" fill="#fff7c2" fill-opacity="0.3" stroke="none"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="2.42" x2="2.42" y1="74.579" y2="108.579"/>
|
|
<line stroke="#1f5fb4" stroke-width="0.9" x1="2.42" x2="-20.559" y1="108.579" y2="108.579"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="-20.559" x2="-20.559" y1="108.579" y2="74.579"/>
|
|
<line stroke="#bdbdbd" stroke-dasharray="1.6,1.2" stroke-width="0.4" x1="-20.559" x2="2.42" y1="74.579" y2="74.579"/>
|
|
<path d="M-20.559,79.674 L-20.559,108.579 L-39.862,108.579 L-39.862,79.674 z" fill="#fff7c2" fill-opacity="0.3" stroke="none"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="-20.559" x2="-20.559" y1="79.674" y2="108.579"/>
|
|
<line stroke="#1f5fb4" stroke-width="0.9" x1="-20.559" x2="-39.862" y1="108.579" y2="108.579"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="-39.862" x2="-39.862" y1="108.579" y2="79.674"/>
|
|
<line stroke="#bdbdbd" stroke-dasharray="1.6,1.2" stroke-width="0.4" x1="-39.862" x2="-20.559" y1="79.674" y2="79.674"/>
|
|
<path d="M-39.862,76.301 L-39.862,108.579 L-58.383,108.579 L-58.383,76.301 z" fill="#fff7c2" fill-opacity="0.3" stroke="none"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="-39.862" x2="-39.862" y1="76.301" y2="108.579"/>
|
|
<line stroke="#1f5fb4" stroke-width="0.9" x1="-39.862" x2="-58.383" y1="108.579" y2="108.579"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="-58.383" x2="-58.383" y1="108.579" y2="76.301"/>
|
|
<line stroke="#bdbdbd" stroke-dasharray="1.6,1.2" stroke-width="0.4" x1="-58.383" x2="-39.862" y1="76.301" y2="76.301"/>
|
|
<path d="M-58.383,79.102 L-58.383,108.579 L-80.87,108.579 L-80.87,79.102 z" fill="#fff7c2" fill-opacity="0.3" stroke="none"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="-58.383" x2="-58.383" y1="79.102" y2="108.579"/>
|
|
<line stroke="#1f5fb4" stroke-width="0.9" x1="-58.383" x2="-80.87" y1="108.579" y2="108.579"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="-80.87" x2="-80.87" y1="108.579" y2="79.102"/>
|
|
<line stroke="#bdbdbd" stroke-dasharray="1.6,1.2" stroke-width="0.4" x1="-80.87" x2="-58.383" y1="79.102" y2="79.102"/>
|
|
<path d="M-80.87,74.579 L-80.87,108.579 L-98.317,108.579 L-98.317,74.579 z" fill="#fff7c2" fill-opacity="0.3" stroke="none"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="-80.87" x2="-80.87" y1="74.579" y2="108.579"/>
|
|
<line stroke="#1f5fb4" stroke-width="0.9" x1="-80.87" x2="-98.317" y1="108.579" y2="108.579"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="-98.317" x2="-98.317" y1="108.579" y2="74.579"/>
|
|
<line stroke="#bdbdbd" stroke-dasharray="1.6,1.2" stroke-width="0.4" x1="-98.317" x2="-80.87" y1="74.579" y2="74.579"/>
|
|
<path d="M-98.317,74.579 L-98.317,108.579 L-121.421,108.579 L-121.421,74.579 z" fill="#fff7c2" fill-opacity="0.3" stroke="none"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="-98.317" x2="-98.317" y1="74.579" y2="108.579"/>
|
|
<line stroke="#1f5fb4" stroke-width="0.9" x1="-98.317" x2="-121.421" y1="108.579" y2="108.579"/>
|
|
<line stroke="#6b6b6b" stroke-width="0.4" x1="-121.421" x2="-121.421" y1="108.579" y2="74.579"/>
|
|
<line stroke="#bdbdbd" stroke-dasharray="1.6,1.2" stroke-width="0.4" x1="-121.421" x2="-98.317" y1="74.579" y2="74.579"/>
|
|
</g>
|
|
<g id="nodes">
|
|
<circle cx="141.42135623730948" cy="108.57864376269049" fill="#000000" r="0.7"/>
|
|
<circle cx="-141.42135623730948" cy="108.57864376269049" fill="#000000" r="0.7"/>
|
|
<circle cx="-141.42135623730948" cy="58.57864376269049" fill="#000000" r="0.7"/>
|
|
<circle cx="-111.11404660392043" cy="33.70607753949096" fill="#000000" r="0.7"/>
|
|
<circle cx="-76.53668647301795" cy="15.224093497742643" fill="#000000" r="0.7"/>
|
|
<circle cx="-39.01806440322565" cy="3.8429439193538997" fill="#000000" r="0.7"/>
|
|
<circle cx="0" cy="0" fill="#000000" r="0.7"/>
|
|
<circle cx="39.01806440322565" cy="3.8429439193538997" fill="#000000" r="0.7"/>
|
|
<circle cx="76.53668647301795" cy="15.224093497742643" fill="#000000" r="0.7"/>
|
|
<circle cx="111.11404660392043" cy="33.70607753949096" fill="#000000" r="0.7"/>
|
|
<circle cx="141.42135623730948" cy="58.57864376269049" fill="#000000" r="0.7"/>
|
|
</g>
|
|
</g>
|
|
</svg> |