diff options
Diffstat (limited to 'doc/livarot-images')
38 files changed, 16650 insertions, 0 deletions
diff --git a/doc/livarot-images/arc-threshold.svg b/doc/livarot-images/arc-threshold.svg new file mode 100644 index 0000000..b5c40e9 --- /dev/null +++ b/doc/livarot-images/arc-threshold.svg @@ -0,0 +1,228 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="384.85571" + height="316.2381" + viewBox="0 0 384.85571 316.2381" + version="1.1" + id="svg6" + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)" + sodipodi:docname="arc-threshold.svg"> + <metadata + id="metadata27"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <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> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="Arrow1Mend" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Mend" + inkscape:isstock="true"> + <path + transform="matrix(-0.4,0,0,-0.4,-4,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path920" + inkscape:connector-curvature="0" /> + </marker> + <marker + style="overflow:visible" + id="marker1121" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1119" + inkscape:connector-curvature="0" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="2.3719323" + inkscape:cx="206.22154" + inkscape:cy="168.80326" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + units="px" + width="1000px" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + fit-margin-top="20" + fit-margin-left="20" + fit-margin-right="20" + fit-margin-bottom="20" /> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-28.526459,-37.270763)"> + <path + style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:5;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:10, 20;stroke-dashoffset:0" + id="ellipse1209" + transform="rotate(62.960609)" + sodipodi:type="arc" + sodipodi:cx="262.41861" + sodipodi:cy="-57.27372" + sodipodi:rx="122.77849" + sodipodi:ry="181.92303" + sodipodi:start="3.1415927" + sodipodi:end="0" + sodipodi:open="true" + sodipodi:arc-type="arc" + d="M 139.64012,-57.273728 A 122.77849,181.92303 0 0 1 262.41861,-239.19675 122.77849,181.92303 0 0 1 385.1971,-57.27372" /> + <path + d="m 138.83803,-57.013718 a 122.77849,181.92303 0 0 1 7.40445,-62.221332 l 115.37404,62.22134 z" + sodipodi:arc-type="arc" + sodipodi:end="3.4906585" + sodipodi:start="3.1415927" + sodipodi:ry="181.92303" + sodipodi:rx="122.77849" + sodipodi:cy="-57.01371" + sodipodi:cx="261.61652" + sodipodi:type="arc" + transform="rotate(62.960609)" + id="path858" + style="fill:none;fill-rule:evenodd;stroke:#000080;stroke-width:1;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000080;stroke-width:1;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="path860" + transform="rotate(62.960609)" + sodipodi:arc-type="arc" + d="m 146.24248,-119.23505 a 122.77849,181.92303 0 0 1 21.32026,-54.71654 l 94.05378,116.93788 z" + sodipodi:type="arc" + sodipodi:start="3.4906585" + sodipodi:end="3.8397244" + sodipodi:ry="181.92303" + sodipodi:rx="122.77849" + sodipodi:cy="-57.01371" + sodipodi:cx="261.61652" /> + <path + sodipodi:cx="261.61652" + sodipodi:cy="-57.01371" + sodipodi:rx="122.77849" + sodipodi:ry="181.92303" + sodipodi:end="4.1887902" + sodipodi:start="3.8397244" + sodipodi:type="arc" + d="m 167.56274,-173.95159 a 122.77849,181.92303 0 0 1 32.66453,-40.61209 l 61.38925,157.54997 z" + sodipodi:arc-type="arc" + transform="rotate(62.960609)" + id="path862" + style="fill:none;fill-rule:evenodd;stroke:#000080;stroke-width:1;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000080;stroke-width:1;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="path864" + transform="rotate(62.960609)" + sodipodi:arc-type="arc" + d="m 200.22727,-214.56368 a 122.77849,181.92303 0 0 1 40.06899,-21.60925 l 21.32026,179.15922 z" + sodipodi:type="arc" + sodipodi:start="4.1887902" + sodipodi:end="4.5378561" + sodipodi:ry="181.92303" + sodipodi:rx="122.77849" + sodipodi:cy="-57.01371" + sodipodi:cx="261.61652" /> + <path + sodipodi:cx="261.61652" + sodipodi:cy="-57.01371" + sodipodi:rx="122.77849" + sodipodi:ry="181.92303" + sodipodi:end="4.8869219" + sodipodi:start="4.5378561" + sodipodi:type="arc" + d="m 240.29626,-236.17293 a 122.77849,181.92303 0 0 1 42.64052,0 l -21.32026,179.15922 z" + sodipodi:arc-type="arc" + transform="rotate(62.960609)" + id="path866" + style="fill:none;fill-rule:evenodd;stroke:#000080;stroke-width:1;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000080;stroke-width:1;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="path868" + transform="rotate(62.960609)" + sodipodi:arc-type="arc" + d="m 282.93678,-236.17293 a 122.77849,181.92303 0 0 1 40.06898,21.60925 l -61.38924,157.54997 z" + sodipodi:type="arc" + sodipodi:start="4.8869219" + sodipodi:end="5.2359878" + sodipodi:ry="181.92303" + sodipodi:rx="122.77849" + sodipodi:cy="-57.01371" + sodipodi:cx="261.61652" /> + <path + sodipodi:cx="261.61652" + sodipodi:cy="-57.01371" + sodipodi:rx="122.77849" + sodipodi:ry="181.92303" + sodipodi:end="5.5850536" + sodipodi:start="5.2359878" + sodipodi:type="arc" + d="m 323.00576,-214.56368 a 122.77849,181.92303 0 0 1 32.66453,40.6121 l -94.05377,116.93787 z" + sodipodi:arc-type="arc" + transform="rotate(62.960609)" + id="path870" + style="fill:none;fill-rule:evenodd;stroke:#000080;stroke-width:1;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000080;stroke-width:1;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="path872" + transform="rotate(62.960609)" + sodipodi:arc-type="arc" + d="m 376.99056,-119.23505 a 122.77849,181.92303 0 0 1 7.40444,62.22134 l -122.77848,0 z" + sodipodi:type="arc" + sodipodi:start="5.9341195" + sodipodi:end="0" + sodipodi:ry="181.92303" + sodipodi:rx="122.77849" + sodipodi:cy="-57.01371" + sodipodi:cx="261.61652" /> + <path + sodipodi:cx="261.61652" + sodipodi:cy="-57.01371" + sodipodi:rx="122.77849" + sodipodi:ry="181.92303" + sodipodi:end="5.9341195" + sodipodi:start="5.5850536" + sodipodi:type="arc" + d="m 355.67029,-173.95158 a 122.77849,181.92303 0 0 1 21.32027,54.71653 l -115.37404,62.22134 z" + sodipodi:arc-type="arc" + transform="rotate(62.960609)" + id="path874" + style="fill:none;fill-rule:evenodd;stroke:#000080;stroke-width:1;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" /> + <path + style="fill:none;stroke:#ff00ff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:2, 2;stroke-dashoffset:0" + d="m 114.15977,97.950431 58.52446,-21.897714 58.42796,-5.884464 51.02234,10.631731 37.46272,25.865586 19.3845,37.97966 -1.03175,45.51284 -21.32356,47.55649 -39.04345,43.86413 -52.07755,34.81495" + id="path876" + inkscape:connector-curvature="0" /> + </g> +</svg> diff --git a/doc/livarot-images/chgt-addition-sequence.svg b/doc/livarot-images/chgt-addition-sequence.svg new file mode 100644 index 0000000..46f3a00 --- /dev/null +++ b/doc/livarot-images/chgt-addition-sequence.svg @@ -0,0 +1,262 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="1000" + height="1000" + viewBox="0 0 1000 1000" + version="1.1" + id="svg6" + inkscape:version="1.1-dev (b11d04efb7, 2020-08-25, custom)" + sodipodi:docname="chgt-addition-sequence.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"> + <defs + id="defs2"> + <marker + style="overflow:visible;" + id="marker1121" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="scale(0.8) rotate(180) translate(12.5,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path1119" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1.1206808" + inkscape:cx="248.95582" + inkscape:cy="509.06558" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + units="px" + width="1000px" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + showguides="true" + inkscape:guide-bbox="true" /> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <circle + style="fill:#000000;fill-rule:evenodd;stroke:none;stroke-linecap:square" + id="path1173" + cx="78.166206" + cy="288.72296" + r="16.849979" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke:none;stroke-linecap:square" + id="circle1175" + cx="55.587914" + cy="49.383144" + r="16.849979" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke:none;stroke-linecap:square" + id="circle1177" + cx="83.664955" + cy="542.04181" + r="16.849979" /> + <path + style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 55.252092,51.995006 22.79926,237.031244 5.16247,253.2171" + id="path1179" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="79.421501" + y="178.27722" + id="text1183"><tspan + sodipodi:role="line" + id="tspan1181" + x="79.421501" + y="178.27722">edge A</tspan></text> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="94.368141" + y="421.89923" + id="text1187"><tspan + sodipodi:role="line" + id="tspan1185" + x="94.368141" + y="421.89923">edge E</tspan></text> + <circle + style="fill:#000000;fill-rule:evenodd;stroke:none;stroke-linecap:square" + id="circle1193" + cx="316.42542" + cy="49.824383" + r="16.849979" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke:none;stroke-linecap:square" + id="circle1195" + cx="506.46616" + cy="49.882885" + r="16.849979" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke:none;stroke-linecap:square" + id="circle1197" + cx="256.48138" + cy="518.86157" + r="16.849979" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke:none;stroke-linecap:square" + id="circle1199" + cx="446.52213" + cy="518.9201" + r="16.849979" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke:none;stroke-linecap:square" + id="circle1201" + cx="380.16623" + cy="286.72296" + r="16.849979" /> + <path + style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 314.48322,46.691426 132.289,473.328804" + id="path1203" /> + <path + style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 507.34274,49.657676 255.92081,521.45363" + id="path1205" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke:none;stroke-linecap:square" + id="circle1217" + cx="573.18079" + cy="284.11252" + r="16.849979" /> + <path + style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 572.56908,286.68089 623.57449,39.636396" + id="path1219" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke:none;stroke-linecap:square" + id="circle1221" + cx="625.49481" + cy="32.441143" + r="16.849979" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="622.58923" + y="168.69528" + id="text1225"><tspan + sodipodi:role="line" + id="tspan1223" + x="622.58923" + y="168.69528">edge D</tspan></text> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="274.80078" + y="180.67569" + id="text1229"><tspan + sodipodi:role="line" + id="tspan1227" + x="274.80078" + y="180.67569">edge X</tspan></text> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="455.81705" + y="185.5293" + id="text1233"><tspan + sodipodi:role="line" + id="tspan1231" + x="455.81705" + y="185.5293">edge Y</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:5;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:5, 15;stroke-dashoffset:0" + id="rect1235" + width="624.091" + height="60.885902" + x="33.591202" + y="252.56232" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.17497;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:2.17497, 6.52492;stroke-dashoffset:0" + id="rect1269" + width="289.12112" + height="288.80701" + x="70.471581" + y="655.30725" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="86.259834" + y="681.55219" + id="text1273"><tspan + sodipodi:role="line" + x="86.259834" + y="681.55219" + id="tspan1275">type = EDGE_REMOVAL</tspan><tspan + sodipodi:role="line" + x="86.259834" + y="701.55219" + id="tspan1279">ptNo -> 8</tspan><tspan + sodipodi:role="line" + x="86.259834" + y="721.55219" + id="tspan1293">left_edge -> A</tspan><tspan + sodipodi:role="line" + x="86.259834" + y="741.55219" + id="tspan1295">right_edge -> none</tspan><tspan + sodipodi:role="line" + x="86.259834" + y="761.55219" + id="tspan1299">edge_to_left -> none</tspan><tspan + sodipodi:role="line" + x="86.259834" + y="781.55219" + id="tspan1301">edge_to_right -></tspan><tspan + sodipodi:role="line" + x="86.259834" + y="801.55219" + id="tspan1297" /></text> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="107.06792" + y="291.77271" + id="text1283"><tspan + sodipodi:role="line" + id="tspan1281" + x="107.06792" + y="291.77271">8</tspan></text> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="405.72318" + y="291.2673" + id="text1287"><tspan + sodipodi:role="line" + id="tspan1285" + x="405.72318" + y="291.2673">9</tspan></text> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="596.86731" + y="288.18781" + id="text1291"><tspan + sodipodi:role="line" + id="tspan1289" + x="596.86731" + y="288.18781">10</tspan></text> + </g> +</svg> diff --git a/doc/livarot-images/convert-back-data.svg b/doc/livarot-images/convert-back-data.svg new file mode 100644 index 0000000..11226e6 --- /dev/null +++ b/doc/livarot-images/convert-back-data.svg @@ -0,0 +1,258 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="558.4046" + height="538.37225" + viewBox="0 0 558.4046 538.37225" + version="1.1" + id="svg6" + inkscape:version="1.1-dev (1a7913d4e8, 2020-08-20, custom)" + sodipodi:docname="convert-back-data.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"> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="marker1446" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1444" /> + </marker> + <marker + style="overflow:visible" + id="marker1121" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1119" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1" + inkscape:cx="411" + inkscape:cy="334.5" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + units="px" + width="1000px" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + fit-margin-top="10" + fit-margin-left="10" + fit-margin-right="10" + fit-margin-bottom="10" /> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-8.9303313,-21.664225)"> + <path + style="fill:none;stroke:#000000;stroke-width:2.77295;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 102.60449,515.25467 c 0,0 -6.893302,-398.4437 373.59095,-458.882951 z" + id="path829" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:7.09665;stroke-miterlimit:4;stroke-dasharray:none" + id="path831" + cx="103.42987" + cy="517.56573" + r="6.1909528" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:2.77295;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:11.0918, 11.0918;stroke-dashoffset:0;stroke-opacity:1" + d="M 102.60449,515.25467 117.30159,395.05912 208.39778,204.83219 327.81822,106.45266 476.19544,56.371719 Z" + id="path857" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:7.09665;stroke-miterlimit:4;stroke-dasharray:none" + id="circle833" + cx="118.08809" + cy="395.51981" + r="6.1909528" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:7.09665;stroke-miterlimit:4;stroke-dasharray:none" + id="circle835" + cx="208.10326" + cy="204.9926" + r="6.1909528" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:7.09665;stroke-miterlimit:4;stroke-dasharray:none" + id="circle837" + cx="326.27896" + cy="106.09619" + r="6.1909528" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:7.09665;stroke-miterlimit:4;stroke-dasharray:none" + id="circle839" + cx="476.59958" + cy="55.426014" + r="6.1909528" /> + <text + xml:space="preserve" + style="font-size:14.7891px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.554591" + x="20.893951" + y="42.900475" + id="text1304"><tspan + sodipodi:role="line" + id="tspan1302" + x="20.893951" + y="42.900475" + style="stroke-width:0.554591">ConvertWithBackData</tspan></text> + <text + xml:space="preserve" + style="font-size:36.9727px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.554591" + x="77.885551" + y="113.05464" + id="text1308"><tspan + sodipodi:role="line" + id="tspan1306" + x="77.885551" + y="113.05464" + style="font-size:36.9727px;stroke-width:0.554591">0</tspan></text> + <text + xml:space="preserve" + style="font-size:36.9727px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.554591" + x="412.53885" + y="316.25241" + id="text1312"><tspan + sodipodi:role="line" + id="tspan1310" + x="412.53885" + y="316.25241" + style="font-size:36.9727px;stroke-width:0.554591">1</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1.66377;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1121)" + d="m 89.29666,120.30545 c 0,0 -1.132358,67.03572 65.0832,154.98955" + id="path1314" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1.66377;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1446)" + d="m 444.92323,285.45839 c 0,0 28.06694,-50.89681 -30.29334,-136.21065" + id="path1442" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:14.7891px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000;stroke-width:0.554591" + x="19.778652" + y="510.54266" + id="text1486"><tspan + sodipodi:role="line" + id="tspan1484" + x="19.778652" + y="510.54266" + style="stroke-width:0.554591">piece = 0</tspan><tspan + sodipodi:role="line" + x="19.778652" + y="529.02905" + id="tspan1490" + style="stroke-width:0.554591">time = 0</tspan></text> + <text + xml:space="preserve" + style="font-size:14.7891px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000;stroke-width:0.554591" + x="18.533163" + y="388.26981" + id="text1498"><tspan + sodipodi:role="line" + id="tspan1494" + x="18.533163" + y="388.26981" + style="stroke-width:0.554591">piece = 0</tspan><tspan + sodipodi:role="line" + x="18.533163" + y="406.7562" + id="tspan1496" + style="stroke-width:0.554591">time = 0.20</tspan></text> + <text + xml:space="preserve" + style="font-size:14.7891px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000;stroke-width:0.554591" + x="129.88928" + y="175.30013" + id="text1504"><tspan + sodipodi:role="line" + id="tspan1500" + x="129.88928" + y="175.30013" + style="stroke-width:0.554591">piece = 0</tspan><tspan + sodipodi:role="line" + x="129.88928" + y="193.7865" + id="tspan1502" + style="stroke-width:0.554591">time = 0.5</tspan></text> + <text + xml:space="preserve" + style="font-size:14.7891px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000;stroke-width:0.554591" + x="259.5546" + y="69.202881" + id="text1510"><tspan + sodipodi:role="line" + id="tspan1506" + x="259.5546" + y="69.202881" + style="stroke-width:0.554591">piece = 0</tspan><tspan + sodipodi:role="line" + x="259.5546" + y="87.689255" + id="tspan1508" + style="stroke-width:0.554591">time = 0.75</tspan></text> + <text + xml:space="preserve" + style="font-size:14.7891px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000;stroke-width:0.554591" + x="487.28891" + y="52.659344" + id="text1516"><tspan + sodipodi:role="line" + id="tspan1512" + x="487.28891" + y="52.659344" + style="stroke-width:0.554591">piece = 0</tspan><tspan + sodipodi:role="line" + x="487.28891" + y="71.145721" + id="tspan1514" + style="stroke-width:0.554591">time = 1</tspan></text> + <text + xml:space="preserve" + style="font-size:14.7891px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000;stroke-width:0.554591" + x="136.8902" + y="512.85431" + id="text1522"><tspan + sodipodi:role="line" + id="tspan1518" + x="136.8902" + y="512.85431" + style="stroke-width:0.554591">piece = 1</tspan><tspan + sodipodi:role="line" + x="136.8902" + y="531.3407" + id="tspan1520" + style="stroke-width:0.554591">time = 1</tspan><tspan + sodipodi:role="line" + x="136.8902" + y="549.82709" + id="tspan1524" + style="stroke-width:0.554591">closed = true</tspan></text> + </g> +</svg> diff --git a/doc/livarot-images/convert-lines.svg b/doc/livarot-images/convert-lines.svg new file mode 100644 index 0000000..7d6914a --- /dev/null +++ b/doc/livarot-images/convert-lines.svg @@ -0,0 +1,128 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="440.75186" + height="469.3035" + viewBox="0 0 440.75186 469.3035" + version="1.1" + id="svg6" + inkscape:version="1.1-dev (1a7913d4e8, 2020-08-20, custom)" + sodipodi:docname="convert-lines.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"> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="marker1121" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1119" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1" + inkscape:cx="292" + inkscape:cy="288.5" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + units="px" + width="1000px" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + fit-margin-top="10" + fit-margin-left="10" + fit-margin-right="10" + fit-margin-bottom="10" /> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-17.642022,-25.116572)"> + <path + style="fill:none;stroke:#000000;stroke-width:2.54173;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 99.910319,476.627 c 0,0 -6.318491,-365.21877 342.438421,-420.61819 z" + id="path829" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:6.50489;stroke-miterlimit:4;stroke-dasharray:none" + id="path831" + cx="100.66688" + cy="478.74536" + r="5.6747093" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:2.54173;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:10.1669, 10.1669;stroke-dashoffset:0;stroke-opacity:1" + d="M 99.910319,476.627 113.38188,366.45417 196.88185,192.08965 306.34421,101.91367 442.34874,56.00881 Z" + id="path857" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:6.50489;stroke-miterlimit:4;stroke-dasharray:none" + id="circle833" + cx="114.10279" + cy="366.87646" + r="5.6747093" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:6.50489;stroke-miterlimit:4;stroke-dasharray:none" + id="circle835" + cx="196.61189" + cy="192.23668" + r="5.6747093" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:6.50489;stroke-miterlimit:4;stroke-dasharray:none" + id="circle837" + cx="304.93329" + cy="101.58692" + r="5.6747093" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:6.50489;stroke-miterlimit:4;stroke-dasharray:none" + id="circle839" + cx="442.71918" + cy="55.141964" + r="5.6747093" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:6.50489;stroke-miterlimit:4;stroke-dasharray:none" + id="circle1142" + cx="367.69489" + cy="148.26315" + r="5.6747093" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:6.50489;stroke-miterlimit:4;stroke-dasharray:none" + id="circle1144" + cx="290.62311" + cy="243.22745" + r="5.6747093" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:6.50489;stroke-miterlimit:4;stroke-dasharray:none" + id="circle1146" + cx="203.70471" + cy="350.66959" + r="5.6747093" /> + <text + xml:space="preserve" + style="font-size:13.5559px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.508345" + x="26.880827" + y="45.415878" + id="text1150"><tspan + sodipodi:role="line" + id="tspan1148" + x="26.880827" + y="45.415878" + style="stroke-width:0.508345">ConvertEvenLines</tspan></text> + </g> +</svg> diff --git a/doc/livarot-images/convert-reconstruction.svg b/doc/livarot-images/convert-reconstruction.svg new file mode 100644 index 0000000..58bc665 --- /dev/null +++ b/doc/livarot-images/convert-reconstruction.svg @@ -0,0 +1,2516 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="984.64911" + height="1188.9872" + viewBox="0 0 984.64911 1188.9872" + version="1.1" + id="svg6" + inkscape:version="1.1-dev (1a7913d4e8, 2020-08-20, custom)" + sodipodi:docname="convert-reconstruction.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"> + <defs + id="defs2"> + <rect + x="27.219719" + y="1017.9344" + width="425.58773" + height="135.45595" + id="rect3009" /> + <marker + style="overflow:visible" + id="marker2993" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path2991" /> + </marker> + <marker + style="overflow:visible" + id="marker2963" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path2961" /> + </marker> + <marker + style="overflow:visible" + id="marker2841" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path2839" /> + </marker> + <marker + style="overflow:visible" + id="marker2743" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path2741" /> + </marker> + <marker + style="overflow:visible" + id="marker2645" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path2643" /> + </marker> + <marker + style="overflow:visible" + id="marker2561" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path2559" /> + </marker> + <marker + style="overflow:visible" + id="marker2389" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path2387" /> + </marker> + <marker + style="overflow:visible" + id="marker2317" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path2315" /> + </marker> + <marker + style="overflow:visible" + id="marker2281" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path2279" /> + </marker> + <marker + style="overflow:visible" + id="marker2147" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path2145" /> + </marker> + <marker + style="overflow:visible" + id="marker2063" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path2061" /> + </marker> + <marker + style="overflow:visible" + id="marker2033" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path2031" /> + </marker> + <marker + style="overflow:visible" + id="marker1973" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1971" /> + </marker> + <marker + style="overflow:visible" + id="marker1889" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1887" /> + </marker> + <marker + style="overflow:visible" + id="marker1627" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1625" /> + </marker> + <marker + style="overflow:visible" + id="marker1591" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1589" /> + </marker> + <marker + style="overflow:visible" + id="marker1423" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1421" /> + </marker> + <marker + style="overflow:visible" + id="marker1047" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1045" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1" + inkscape:cx="272.65759" + inkscape:cy="1115.5721" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + units="px" + width="500px" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + fit-margin-top="10" + fit-margin-left="10" + fit-margin-right="10" + fit-margin-bottom="10" /> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-15.337017,4.2015039)"> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 66.316055,80.704201 H 333.28579 L 115.83767,416.15674 356.84987,351.57772 Z" + id="path829" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke:none;stroke-width:5;stroke-dasharray:10, 10" + id="path831" + cx="66.799599" + cy="80.271782" + r="5.7431164" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke:none;stroke-width:5;stroke-dasharray:10, 10" + id="circle833" + cx="333.59827" + cy="80.592285" + r="5.7431164" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke:none;stroke-width:5;stroke-dasharray:10, 10" + id="circle835" + cx="233.10919" + cy="234.75316" + r="5.7431164" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke:none;stroke-width:5;stroke-dasharray:10, 10" + id="circle837" + cx="355.77115" + cy="351.03488" + r="5.7431164" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke:none;stroke-width:5;stroke-dasharray:10, 10" + id="circle839" + cx="117.54447" + cy="416.5206" + r="5.7431164" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="62.743244" + y="66.555336" + id="text843"><tspan + sodipodi:role="line" + id="tspan841" + x="62.743244" + y="66.555336">0</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="341.01462" + y="67.814552" + id="text847"><tspan + sodipodi:role="line" + id="tspan845" + x="341.01462" + y="67.814552">1</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="250.10796" + y="237.64861" + id="text851"><tspan + sodipodi:role="line" + id="tspan849" + x="250.10796" + y="237.64861">2</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="95.912811" + y="442.76086" + id="text855"><tspan + sodipodi:role="line" + id="tspan853" + x="95.912811" + y="442.76086">4</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="363.61136" + y="378.92093" + id="text859"><tspan + sodipodi:role="line" + id="tspan857" + x="363.61136" + y="378.92093">3</tspan></text> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="180.29718" + y="73.938614" + id="text879"><tspan + sodipodi:role="line" + id="tspan877" + x="180.29718" + y="73.938614" + style="font-size:16px">edge 0</tspan></text> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="116.7416" + y="444.05273" + id="text883" + transform="rotate(-14.17869)"><tspan + sodipodi:role="line" + id="tspan881" + x="116.7416" + y="444.05273" + style="font-size:16px">edge 3</tspan></text> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="194.91197" + y="1.7784089" + id="text887" + transform="rotate(44.862881)"><tspan + sodipodi:role="line" + id="tspan885" + x="194.91197" + y="1.7784089" + style="font-size:16px">edge 1</tspan></text> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="6.9570251" + y="337.26407" + id="text891" + transform="rotate(-55.507024)"><tspan + sodipodi:role="line" + id="tspan889" + x="6.9570251" + y="337.26407" + style="font-size:16px">edge 2</tspan></text> + <path + style="fill:none;stroke:#ff0000;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1, 4;stroke-dashoffset:0;stroke-opacity:1" + d="M 42.882779,85.198644 473.67906,41.765084" + id="path893" /> + <path + style="fill:none;stroke:#ff0000;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1, 4;stroke-dashoffset:0;stroke-opacity:1" + d="M 42.882779,85.198644 473.67906,41.765084" + id="path895" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="523.32013" + y="68.950508" + id="text1131"><tspan + sodipodi:role="line" + id="tspan1129" + x="523.32013" + y="68.950508" + style="stroke-width:0.62235">Edge 0 added!</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.564003;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect1133" + width="76.090935" + height="20.689505" + x="524.90527" + y="80.005814" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="527.4046" + y="96.453171" + id="text1137"><tspan + sodipodi:role="line" + id="tspan1135" + x="527.4046" + y="96.453171" + style="stroke-width:0.62235">Edge</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.62235;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect1139" + width="92.910706" + height="20.631157" + x="600.99622" + y="80.064163" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="603.052" + y="96.628555" + id="text1143"><tspan + sodipodi:role="line" + id="tspan1141" + x="603.052" + y="96.628555" + style="stroke-width:0.62235">lastPoint</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.564003;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect1145" + width="76.090935" + height="20.689505" + x="524.90527" + y="100.63697" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="527.4046" + y="117.08434" + id="text1149"><tspan + sodipodi:role="line" + id="tspan1147" + x="527.4046" + y="117.08434" + style="stroke-width:0.62235">edge 0</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.62235;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect1151" + width="92.910706" + height="20.631157" + x="600.99622" + y="100.69532" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="603.052" + y="117.25972" + id="text1155"><tspan + sodipodi:role="line" + id="tspan1153" + x="603.052" + y="117.25972" + style="stroke-width:0.62235">0</tspan></text> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="522.94501" + y="149.71866" + id="text1159"><tspan + sodipodi:role="line" + id="tspan1157" + x="522.94501" + y="149.71866" + style="stroke-width:0.62235">Edge 1 added!</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.564003;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect1161" + width="76.090935" + height="20.689505" + x="524.35718" + y="161.24171" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="526.85651" + y="177.68907" + id="text1165"><tspan + sodipodi:role="line" + id="tspan1163" + x="526.85651" + y="177.68907" + style="stroke-width:0.62235">Edge</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.62235;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect1167" + width="92.910706" + height="20.631157" + x="600.44812" + y="161.30006" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="602.50391" + y="177.86446" + id="text1171"><tspan + sodipodi:role="line" + id="tspan1169" + x="602.50391" + y="177.86446" + style="stroke-width:0.62235">lastPoint</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.564003;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect1173" + width="76.090935" + height="20.689505" + x="524.35718" + y="181.87286" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="526.85651" + y="198.32024" + id="text1177"><tspan + sodipodi:role="line" + id="tspan1175" + x="526.85651" + y="198.32024" + style="stroke-width:0.62235">edge 0</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.62235;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect1179" + width="92.910706" + height="20.631157" + x="600.44812" + y="181.93121" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="602.50391" + y="198.49562" + id="text1183"><tspan + sodipodi:role="line" + id="tspan1181" + x="602.50391" + y="198.49562" + style="stroke-width:0.62235">0</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.564003;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect1185" + width="76.090935" + height="20.689505" + x="524.35718" + y="202.56238" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="526.85651" + y="219.00975" + id="text1189"><tspan + sodipodi:role="line" + id="tspan1187" + x="526.85651" + y="219.00975" + style="stroke-width:0.62235">edge 1</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.62235;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect1191" + width="92.910706" + height="20.631157" + x="600.44812" + y="202.62073" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="602.50391" + y="219.18513" + id="text1195"><tspan + sodipodi:role="line" + id="tspan1193" + x="602.50391" + y="219.18513" + style="stroke-width:0.62235">0</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1047)" + d="m 511.60893,25.697471 c 0,0 -20.75021,-39.589821 -58.65278,14.975274" + id="path1197" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#ff0000;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1, 4;stroke-dashoffset:0;stroke-opacity:1" + d="M 42.25566,110.54637 473.05194,67.112813" + id="path1265" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="540.90442" + y="288.85034" + id="text1381"><tspan + sodipodi:role="line" + id="tspan1379" + x="540.90442" + y="288.85034" + style="stroke-width:0.62235">Edge 0 to remove!</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.564003;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect1383" + width="76.090935" + height="20.689505" + x="542.31659" + y="300.37335" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="544.81592" + y="316.82074" + id="text1387"><tspan + sodipodi:role="line" + id="tspan1385" + x="544.81592" + y="316.82074" + style="stroke-width:0.62235">Edge</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.62235;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect1389" + width="92.910706" + height="20.631157" + x="618.40753" + y="300.4317" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="620.46332" + y="316.99609" + id="text1393"><tspan + sodipodi:role="line" + id="tspan1391" + x="620.46332" + y="316.99609" + style="stroke-width:0.62235">lastPoint</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.564003;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect1395" + width="76.090935" + height="20.689505" + x="542.31659" + y="321.00452" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="544.81592" + y="337.4519" + id="text1399"><tspan + sodipodi:role="line" + id="tspan1397" + x="544.81592" + y="337.4519" + style="stroke-width:0.62235">edge 0</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.62235;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect1401" + width="92.910706" + height="20.631157" + x="618.40753" + y="321.06287" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="620.46332" + y="337.62726" + id="text1405"><tspan + sodipodi:role="line" + id="tspan1403" + x="620.46332" + y="337.62726" + style="stroke-width:0.62235">0</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.564003;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect1407" + width="76.090935" + height="20.689505" + x="542.31659" + y="341.69403" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="544.81592" + y="358.14142" + id="text1411"><tspan + sodipodi:role="line" + id="tspan1409" + x="544.81592" + y="358.14142" + style="stroke-width:0.62235">edge 1</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.62235;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect1413" + width="92.910706" + height="20.631157" + x="618.40753" + y="341.75238" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="620.46332" + y="358.31677" + id="text1417"><tspan + sodipodi:role="line" + id="tspan1415" + x="620.46332" + y="358.31677" + style="stroke-width:0.62235">0</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1423)" + d="M 722.11561,331.45937 H 762.0119" + id="path1419" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:13.5242px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.507157" + x="774.25232" + y="318.1366" + id="text1439"><tspan + sodipodi:role="line" + id="tspan1437" + x="774.25232" + y="318.1366" + style="stroke-width:0.507157">Draw edge from</tspan><tspan + sodipodi:role="line" + x="774.25232" + y="335.04184" + id="tspan1441" + style="stroke-width:0.507157">point 0 to 1</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.564003;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect1551" + width="76.090935" + height="20.689505" + x="800.30951" + y="377.89612" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="802.80884" + y="394.34351" + id="text1555"><tspan + sodipodi:role="line" + id="tspan1553" + x="802.80884" + y="394.34351" + style="stroke-width:0.62235">Edge</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.62235;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect1557" + width="92.910706" + height="20.631157" + x="876.40045" + y="377.95447" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="878.45624" + y="394.51886" + id="text1561"><tspan + sodipodi:role="line" + id="tspan1559" + x="878.45624" + y="394.51886" + style="stroke-width:0.62235">lastPoint</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.564003;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect1563" + width="76.090935" + height="20.689505" + x="800.30951" + y="398.52728" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="802.80884" + y="414.97467" + id="text1567"><tspan + sodipodi:role="line" + id="tspan1565" + x="802.80884" + y="414.97467" + style="stroke-width:0.62235">edge 0</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.62235;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect1569" + width="92.910706" + height="20.631157" + x="876.40045" + y="398.58563" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="878.45624" + y="415.15002" + id="text1573"><tspan + sodipodi:role="line" + id="tspan1571" + x="878.45624" + y="415.15002" + style="stroke-width:0.62235">1</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.564003;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect1575" + width="76.090935" + height="20.689505" + x="800.30951" + y="419.2168" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="802.80884" + y="435.66418" + id="text1579"><tspan + sodipodi:role="line" + id="tspan1577" + x="802.80884" + y="435.66418" + style="stroke-width:0.62235">edge 1</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.62235;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect1581" + width="92.910706" + height="20.631157" + x="876.40045" + y="419.27515" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="878.45624" + y="435.83954" + id="text1585"><tspan + sodipodi:role="line" + id="tspan1583" + x="878.45624" + y="435.83954" + style="stroke-width:0.62235">0</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1591)" + d="m 890.28176,326.07396 c 0,0 34.54686,-5.21071 25.85364,43.99525" + id="path1587" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1627)" + d="M 776.44112,411.41466 H 736.54483" + id="path1623" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000" + x="961.54761" + y="416.04871" + id="text1659"><tspan + sodipodi:role="line" + id="tspan1657" + x="961.54761" + y="416.04871">x</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.564003;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect1661" + width="76.090935" + height="20.689505" + x="541.69208" + y="392.0318" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="544.19141" + y="408.47919" + id="text1665"><tspan + sodipodi:role="line" + id="tspan1663" + x="544.19141" + y="408.47919" + style="stroke-width:0.62235">Edge</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.62235;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect1667" + width="92.910706" + height="20.631157" + x="617.78302" + y="392.09015" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="619.83881" + y="408.65454" + id="text1671"><tspan + sodipodi:role="line" + id="tspan1669" + x="619.83881" + y="408.65454" + style="stroke-width:0.62235">lastPoint</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.564003;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect1685" + width="76.090935" + height="20.689505" + x="541.69208" + y="412.66296" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="544.19141" + y="429.11035" + id="text1689"><tspan + sodipodi:role="line" + id="tspan1687" + x="544.19141" + y="429.11035" + style="stroke-width:0.62235">edge 1</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.62235;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect1691" + width="92.910706" + height="20.631157" + x="617.78302" + y="412.72131" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="619.83881" + y="429.28571" + id="text1695"><tspan + sodipodi:role="line" + id="tspan1693" + x="619.83881" + y="429.28571" + style="stroke-width:0.62235">0</tspan></text> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="537.10474" + y="473.604" + id="text1703"><tspan + sodipodi:role="line" + id="tspan1701" + x="537.10474" + y="473.604" + style="stroke-width:0.62235">Edge 2 to add!</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.564003;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect1807" + width="76.090935" + height="20.689505" + x="539.80872" + y="487.46021" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="542.30804" + y="503.90759" + id="text1811"><tspan + sodipodi:role="line" + id="tspan1809" + x="542.30804" + y="503.90759" + style="stroke-width:0.62235">Edge</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.62235;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect1813" + width="92.910706" + height="20.631157" + x="615.89966" + y="487.51855" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="617.95544" + y="504.08295" + id="text1817"><tspan + sodipodi:role="line" + id="tspan1815" + x="617.95544" + y="504.08295" + style="stroke-width:0.62235">lastPoint</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.564003;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect1819" + width="76.090935" + height="20.689505" + x="539.80872" + y="508.09137" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="542.30804" + y="524.53876" + id="text1823"><tspan + sodipodi:role="line" + id="tspan1821" + x="542.30804" + y="524.53876" + style="stroke-width:0.62235">edge 1</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.62235;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect1825" + width="92.910706" + height="20.631157" + x="615.89966" + y="508.14972" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="617.95544" + y="524.71411" + id="text1829"><tspan + sodipodi:role="line" + id="tspan1827" + x="617.95544" + y="524.71411" + style="stroke-width:0.62235">0</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.564003;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect1831" + width="76.090935" + height="20.689505" + x="539.80872" + y="528.78088" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="542.30804" + y="545.22827" + id="text1835"><tspan + sodipodi:role="line" + id="tspan1833" + x="542.30804" + y="545.22827" + style="stroke-width:0.62235">edge 2</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.62235;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect1837" + width="92.910706" + height="20.631157" + x="615.89966" + y="528.83923" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="617.95544" + y="545.40363" + id="text1841"><tspan + sodipodi:role="line" + id="tspan1839" + x="617.95544" + y="545.40363" + style="stroke-width:0.62235">1</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1889)" + d="M 504.81073,255.67602 C 448.04603,235.29249 449.65885,151.02314 453.14196,77.838266" + id="path1885" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000" + x="522.4021" + y="35.045513" + id="text1911"><tspan + sodipodi:role="line" + id="tspan1909" + x="522.4021" + y="35.045513">Sweepline at point 0</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000" + x="525.63025" + y="262.328" + id="text1915"><tspan + sodipodi:role="line" + id="tspan1913" + x="525.63025" + y="262.328">Sweepline at point 1</tspan></text> + <path + style="fill:none;stroke:#ff0000;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1, 4;stroke-dashoffset:0;stroke-opacity:1" + d="M 42.255666,254.54637 473.05194,211.11281" + id="path1917" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000" + x="526.82587" + y="593.49768" + id="text1921"><tspan + sodipodi:role="line" + id="tspan1919" + x="526.82587" + y="593.49768">Sweepline at point 2</tspan></text> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="528.57806" + y="626.17517" + id="text1925"><tspan + sodipodi:role="line" + id="tspan1923" + x="528.57806" + y="626.17517" + style="stroke-width:0.62235">Edge 1 and 2 intersect!</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.564003;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect1927" + width="76.090935" + height="20.689505" + x="528.90607" + y="644.75928" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="531.4054" + y="661.20667" + id="text1931"><tspan + sodipodi:role="line" + id="tspan1929" + x="531.4054" + y="661.20667" + style="stroke-width:0.62235">Edge</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.62235;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect1933" + width="92.910706" + height="20.631157" + x="604.99701" + y="644.81763" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="607.0528" + y="661.38202" + id="text1937"><tspan + sodipodi:role="line" + id="tspan1935" + x="607.0528" + y="661.38202" + style="stroke-width:0.62235">lastPoint</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.564003;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect1939" + width="76.090935" + height="20.689505" + x="528.90607" + y="665.39044" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="531.4054" + y="681.83783" + id="text1943"><tspan + sodipodi:role="line" + id="tspan1941" + x="531.4054" + y="681.83783" + style="stroke-width:0.62235">edge 1</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.62235;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect1945" + width="92.910706" + height="20.631157" + x="604.99701" + y="665.44879" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="607.0528" + y="682.01318" + id="text1949"><tspan + sodipodi:role="line" + id="tspan1947" + x="607.0528" + y="682.01318" + style="stroke-width:0.62235">0</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.564003;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect1951" + width="76.090935" + height="20.689505" + x="528.90607" + y="686.07996" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="531.4054" + y="702.52734" + id="text1955"><tspan + sodipodi:role="line" + id="tspan1953" + x="531.4054" + y="702.52734" + style="stroke-width:0.62235">edge 2</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.62235;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect1957" + width="92.910706" + height="20.631157" + x="604.99701" + y="686.13831" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="607.0528" + y="702.7027" + id="text1961"><tspan + sodipodi:role="line" + id="tspan1959" + x="607.0528" + y="702.7027" + style="stroke-width:0.62235">1</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1973)" + d="m 707.521,668.59544 52.01237,-13.98787" + id="path1969" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:13.5242px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.507157" + x="766.46564" + y="696.48132" + id="text1997"><tspan + sodipodi:role="line" + id="tspan1993" + x="766.46564" + y="696.48132" + style="stroke-width:0.507157">Draw edge from</tspan><tspan + sodipodi:role="line" + x="766.46564" + y="713.3866" + id="tspan1995" + style="stroke-width:0.507157">point 1 to 2</tspan></text> + <text + xml:space="preserve" + style="font-size:13.5242px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.507157" + x="765.49023" + y="650.12512" + id="text2003"><tspan + sodipodi:role="line" + id="tspan1999" + x="765.49023" + y="650.12512" + style="stroke-width:0.507157">Draw edge from</tspan><tspan + sodipodi:role="line" + x="765.49023" + y="667.0304" + id="tspan2001" + style="stroke-width:0.507157">point 0 to 2</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker2033)" + d="m 707.42993,695.83661 51.75913,5.77655" + id="path2029" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker2063)" + d="m 894.63431,675.96577 c 0,0 34.54686,-5.21071 25.85364,43.99525" + id="path2059" + sodipodi:nodetypes="cc" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.564003;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2083" + width="76.090935" + height="20.689505" + x="802.84802" + y="743.46246" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="805.34735" + y="759.90985" + id="text2087"><tspan + sodipodi:role="line" + id="tspan2085" + x="805.34735" + y="759.90985" + style="stroke-width:0.62235">Edge</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.62235;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2089" + width="92.910706" + height="20.631157" + x="878.93896" + y="743.52081" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="880.99475" + y="760.08521" + id="text2093"><tspan + sodipodi:role="line" + id="tspan2091" + x="880.99475" + y="760.08521" + style="stroke-width:0.62235">lastPoint</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.564003;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2095" + width="76.090935" + height="20.689505" + x="802.84802" + y="764.09363" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="805.34735" + y="780.54102" + id="text2099"><tspan + sodipodi:role="line" + id="tspan2097" + x="805.34735" + y="780.54102" + style="stroke-width:0.62235">edge 1</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.62235;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2101" + width="92.910706" + height="20.631157" + x="878.93896" + y="764.15198" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="880.99475" + y="780.71637" + id="text2105"><tspan + sodipodi:role="line" + id="tspan2103" + x="880.99475" + y="780.71637" + style="stroke-width:0.62235">2</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.564003;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2107" + width="76.090935" + height="20.689505" + x="802.84802" + y="784.78314" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="805.34735" + y="801.23053" + id="text2111"><tspan + sodipodi:role="line" + id="tspan2109" + x="805.34735" + y="801.23053" + style="stroke-width:0.62235">edge 2</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.62235;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2113" + width="92.910706" + height="20.631157" + x="878.93896" + y="784.84149" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="880.99475" + y="801.40588" + id="text2117"><tspan + sodipodi:role="line" + id="tspan2115" + x="880.99475" + y="801.40588" + style="stroke-width:0.62235">2</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1.1865;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:1.1865, 3.55949;stroke-dashoffset:0" + id="rect2125" + width="469.43896" + height="222.76689" + x="512.45044" + y="6.391746" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1.42602;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:1.42602, 4.27807;stroke-dashoffset:0" + id="rect2127" + width="471.65408" + height="320.27844" + x="512.57019" + y="237.46489" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1.28125;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:1.28125, 3.84375;stroke-dashoffset:0" + id="rect2129" + width="472.63187" + height="258.0137" + x="512.49774" + y="563.68231" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker2147)" + d="m 503.62973,584.19465 c 0,0 -40.90478,-154.11788 -72.09349,-364.06337" + id="path2143" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000" + x="517.32916" + y="867.67126" + id="text2199"><tspan + sodipodi:role="line" + id="tspan2197" + x="517.32916" + y="867.67126">Sweepline at point 3</tspan></text> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="517.94183" + y="903.17023" + id="text2203"><tspan + sodipodi:role="line" + id="tspan2201" + x="517.94183" + y="903.17023" + style="stroke-width:0.62235">Edge 1 to remove!</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.564003;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2205" + width="76.090935" + height="20.689505" + x="519.2804" + y="918.34814" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="521.77972" + y="934.79553" + id="text2209"><tspan + sodipodi:role="line" + id="tspan2207" + x="521.77972" + y="934.79553" + style="stroke-width:0.62235">Edge</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.62235;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2211" + width="92.910706" + height="20.631157" + x="595.37134" + y="918.40649" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="597.42712" + y="934.97089" + id="text2215"><tspan + sodipodi:role="line" + id="tspan2213" + x="597.42712" + y="934.97089" + style="stroke-width:0.62235">lastPoint</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.564003;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2217" + width="76.090935" + height="20.689505" + x="519.2804" + y="938.97931" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="521.77972" + y="955.4267" + id="text2221"><tspan + sodipodi:role="line" + id="tspan2219" + x="521.77972" + y="955.4267" + style="stroke-width:0.62235">edge 1</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.62235;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2223" + width="92.910706" + height="20.631157" + x="595.37134" + y="939.03766" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="597.42712" + y="955.60205" + id="text2227"><tspan + sodipodi:role="line" + id="tspan2225" + x="597.42712" + y="955.60205" + style="stroke-width:0.62235">2</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.564003;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2229" + width="76.090935" + height="20.689505" + x="519.2804" + y="959.66882" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="521.77972" + y="976.11621" + id="text2233"><tspan + sodipodi:role="line" + id="tspan2231" + x="521.77972" + y="976.11621" + style="stroke-width:0.62235">edge 2</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.62235;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2235" + width="92.910706" + height="20.631157" + x="595.37134" + y="959.72717" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="597.42712" + y="976.29156" + id="text2239"><tspan + sodipodi:role="line" + id="tspan2237" + x="597.42712" + y="976.29156" + style="stroke-width:0.62235">2</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1973)" + d="m 707.521,668.59544 52.01237,-13.98787" + id="path2247" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker2281)" + d="m 694.55406,951.05824 48.94301,1.25906" + id="path2277" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:13.5242px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.507157" + x="754.52167" + y="946.23096" + id="text2305"><tspan + sodipodi:role="line" + id="tspan2301" + x="754.52167" + y="946.23096" + style="stroke-width:0.507157">Draw edge from</tspan><tspan + sodipodi:role="line" + x="754.52167" + y="963.13623" + id="tspan2303" + style="stroke-width:0.507157">point 2 to 3</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker2317)" + d="m 882.44014,940.81441 c 0,0 34.54686,-5.21071 25.85364,43.99525" + id="path2313" + sodipodi:nodetypes="cc" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.564003;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2337" + width="76.090935" + height="20.689505" + x="756.3902" + y="994.16901" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="758.88953" + y="1010.6164" + id="text2341"><tspan + sodipodi:role="line" + id="tspan2339" + x="758.88953" + y="1010.6164" + style="stroke-width:0.62235">Edge</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.62235;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2343" + width="92.910706" + height="20.631157" + x="832.48114" + y="994.22736" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="834.53693" + y="1010.7917" + id="text2347"><tspan + sodipodi:role="line" + id="tspan2345" + x="834.53693" + y="1010.7917" + style="stroke-width:0.62235">lastPoint</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.564003;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2349" + width="76.090935" + height="20.689505" + x="756.3902" + y="1014.8001" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="758.88953" + y="1031.2476" + id="text2353"><tspan + sodipodi:role="line" + id="tspan2351" + x="758.88953" + y="1031.2476" + style="stroke-width:0.62235">edge 1</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.62235;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2355" + width="92.910706" + height="20.631157" + x="832.48114" + y="1014.8585" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="834.53693" + y="1031.4229" + id="text2359"><tspan + sodipodi:role="line" + id="tspan2357" + x="834.53693" + y="1031.4229" + style="stroke-width:0.62235">3</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.564003;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2361" + width="76.090935" + height="20.689505" + x="756.3902" + y="1035.4896" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="758.88953" + y="1051.937" + id="text2365"><tspan + sodipodi:role="line" + id="tspan2363" + x="758.88953" + y="1051.937" + style="stroke-width:0.62235">edge 2</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.62235;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2367" + width="92.910706" + height="20.631157" + x="832.48114" + y="1035.548" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="834.53693" + y="1052.1124" + id="text2371"><tspan + sodipodi:role="line" + id="tspan2369" + x="834.53693" + y="1052.1124" + style="stroke-width:0.62235">2</tspan></text> + <path + style="fill:none;stroke:#ff0000;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1, 4;stroke-dashoffset:0;stroke-opacity:1" + d="M 40.138865,382.55671 470.93514,339.12315" + id="path2373" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000" + x="917.55597" + y="1032.6306" + id="text2377"><tspan + sodipodi:role="line" + id="tspan2375" + x="917.55597" + y="1032.6306">x</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker2389)" + d="M 743.46868,1025.5559 H 703.57239" + id="path2385" + sodipodi:nodetypes="cc" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.564003;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2415" + width="76.090935" + height="20.689505" + x="519.26208" + y="1004.8329" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="521.76141" + y="1021.2803" + id="text2419"><tspan + sodipodi:role="line" + id="tspan2417" + x="521.76141" + y="1021.2803" + style="stroke-width:0.62235">Edge</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.62235;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2421" + width="92.910706" + height="20.631157" + x="595.35303" + y="1004.8912" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="597.40881" + y="1021.4556" + id="text2425"><tspan + sodipodi:role="line" + id="tspan2423" + x="597.40881" + y="1021.4556" + style="stroke-width:0.62235">lastPoint</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.564003;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2439" + width="76.090935" + height="20.689505" + x="519.26208" + y="1025.464" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="521.76141" + y="1041.9114" + id="text2443"><tspan + sodipodi:role="line" + id="tspan2441" + x="521.76141" + y="1041.9114" + style="stroke-width:0.62235">edge 2</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.62235;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2445" + width="92.910706" + height="20.631157" + x="595.35303" + y="1025.5223" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="597.40881" + y="1042.0868" + id="text2449"><tspan + sodipodi:role="line" + id="tspan2447" + x="597.40881" + y="1042.0868" + style="stroke-width:0.62235">2</tspan></text> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="516.98169" + y="1083.9663" + id="text2457"><tspan + sodipodi:role="line" + id="tspan2455" + x="516.98169" + y="1083.9663" + style="stroke-width:0.62235">Edge 3 to add!</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.564003;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2465" + width="76.090935" + height="20.689505" + x="516.70642" + y="1098.8639" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="519.20575" + y="1115.3113" + id="text2469"><tspan + sodipodi:role="line" + id="tspan2467" + x="519.20575" + y="1115.3113" + style="stroke-width:0.62235">Edge</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.62235;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2471" + width="92.910706" + height="20.631157" + x="592.79736" + y="1098.9221" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="594.85315" + y="1115.4866" + id="text2475"><tspan + sodipodi:role="line" + id="tspan2473" + x="594.85315" + y="1115.4866" + style="stroke-width:0.62235">lastPoint</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.564003;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2477" + width="76.090935" + height="20.689505" + x="516.70642" + y="1119.495" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="519.20575" + y="1135.9424" + id="text2481"><tspan + sodipodi:role="line" + id="tspan2479" + x="519.20575" + y="1135.9424" + style="stroke-width:0.62235">edge 2</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.62235;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2483" + width="92.910706" + height="20.631157" + x="592.79736" + y="1119.5533" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="594.85315" + y="1136.1178" + id="text2487"><tspan + sodipodi:role="line" + id="tspan2485" + x="594.85315" + y="1136.1178" + style="stroke-width:0.62235">2</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.564003;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2489" + width="76.090935" + height="20.689505" + x="516.70642" + y="1140.1261" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="519.20575" + y="1156.5735" + id="text2493"><tspan + sodipodi:role="line" + id="tspan2491" + x="519.20575" + y="1156.5735" + style="stroke-width:0.62235">edge 3</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.62235;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2495" + width="92.910706" + height="20.631157" + x="592.79736" + y="1140.1844" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="594.85315" + y="1156.7489" + id="text2499"><tspan + sodipodi:role="line" + id="tspan2497" + x="594.85315" + y="1156.7489" + style="stroke-width:0.62235">3</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1.47069;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:1.47069, 4.41207;stroke-dashoffset:0" + id="rect2501" + width="482.33456" + height="333.11258" + x="506.91623" + y="840.93774" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker2561)" + d="m 495.90877,884.31733 c -41.03527,5.67277 32.96469,-198.23286 -89.298,-527.11784" + id="path2557" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000" + x="46.899685" + y="647.60687" + id="text2591"><tspan + sodipodi:role="line" + id="tspan2589" + x="46.899685" + y="647.60687">Sweepline at point 4</tspan></text> + <path + style="fill:none;stroke:#ff0000;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1, 4;stroke-dashoffset:0;stroke-opacity:1" + d="M 40.138865,424.55671 470.93514,381.12315" + id="path2593" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="47.777306" + y="685.42639" + id="text2597"><tspan + sodipodi:role="line" + id="tspan2595" + x="47.777306" + y="685.42639" + style="stroke-width:0.62235">Edge 2 to remove!</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.564003;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2599" + width="76.090935" + height="20.689505" + x="45.252327" + y="702.67407" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="47.751656" + y="719.12146" + id="text2603"><tspan + sodipodi:role="line" + id="tspan2601" + x="47.751656" + y="719.12146" + style="stroke-width:0.62235">Edge</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.62235;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2605" + width="92.910706" + height="20.631157" + x="121.34327" + y="702.7323" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="123.39906" + y="719.29675" + id="text2609"><tspan + sodipodi:role="line" + id="tspan2607" + x="123.39906" + y="719.29675" + style="stroke-width:0.62235">lastPoint</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.564003;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2611" + width="76.090935" + height="20.689505" + x="45.252327" + y="723.30518" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="47.751656" + y="739.75256" + id="text2615"><tspan + sodipodi:role="line" + id="tspan2613" + x="47.751656" + y="739.75256" + style="stroke-width:0.62235">edge 2</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.62235;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2617" + width="92.910706" + height="20.631157" + x="121.34327" + y="723.36353" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="123.39906" + y="739.92798" + id="text2621"><tspan + sodipodi:role="line" + id="tspan2619" + x="123.39906" + y="739.92798" + style="stroke-width:0.62235">2</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.564003;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2623" + width="76.090935" + height="20.689505" + x="45.252327" + y="743.93628" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="47.751656" + y="760.38367" + id="text2627"><tspan + sodipodi:role="line" + id="tspan2625" + x="47.751656" + y="760.38367" + style="stroke-width:0.62235">edge 3</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.62235;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2629" + width="92.910706" + height="20.631157" + x="121.34327" + y="743.99463" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="123.39906" + y="760.55908" + id="text2633"><tspan + sodipodi:role="line" + id="tspan2631" + x="123.39906" + y="760.55908" + style="stroke-width:0.62235">3</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker2645)" + d="m 226.25397,733.99463 h 39.89629" + id="path2641" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:13.5242px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.507157" + x="272.90488" + y="731.02496" + id="text2669"><tspan + sodipodi:role="line" + id="tspan2665" + x="272.90488" + y="731.02496" + style="stroke-width:0.507157">Draw edge from</tspan><tspan + sodipodi:role="line" + x="272.90488" + y="747.93024" + id="tspan2667" + style="stroke-width:0.507157">point 2 to 4</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker2743)" + d="m 388.55156,740.8288 c 0,0 34.54686,-5.21071 25.85364,43.99525" + id="path2717" + sodipodi:nodetypes="cc" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.564003;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2769" + width="76.090935" + height="20.689505" + x="266.41138" + y="799.17401" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="268.91071" + y="815.6214" + id="text2773"><tspan + sodipodi:role="line" + id="tspan2771" + x="268.91071" + y="815.6214" + style="stroke-width:0.62235">Edge</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.62235;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2775" + width="92.910706" + height="20.631157" + x="342.50232" + y="799.23224" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="344.55814" + y="815.79669" + id="text2779"><tspan + sodipodi:role="line" + id="tspan2777" + x="344.55814" + y="815.79669" + style="stroke-width:0.62235">lastPoint</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.564003;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2781" + width="76.090935" + height="20.689505" + x="266.41138" + y="819.80511" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="268.91071" + y="836.2525" + id="text2785"><tspan + sodipodi:role="line" + id="tspan2783" + x="268.91071" + y="836.2525" + style="stroke-width:0.62235">edge 2</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.62235;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2787" + width="92.910706" + height="20.631157" + x="342.50232" + y="819.86346" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="344.55814" + y="836.42792" + id="text2791"><tspan + sodipodi:role="line" + id="tspan2789" + x="344.55814" + y="836.42792" + style="stroke-width:0.62235">4</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.564003;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2793" + width="76.090935" + height="20.689505" + x="266.41138" + y="840.43622" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="268.91071" + y="856.88361" + id="text2797"><tspan + sodipodi:role="line" + id="tspan2795" + x="268.91071" + y="856.88361" + style="stroke-width:0.62235">edge 3</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.62235;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2799" + width="92.910706" + height="20.631157" + x="342.50232" + y="840.49457" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="344.55814" + y="857.05902" + id="text2803"><tspan + sodipodi:role="line" + id="tspan2801" + x="344.55814" + y="857.05902" + style="stroke-width:0.62235">3</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000" + x="427.05054" + y="836.9527" + id="text2807"><tspan + sodipodi:role="line" + id="tspan2805" + x="427.05054" + y="836.9527">x</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker2841)" + d="M 264.41138,831.86353 H 224.51509" + id="path2815" + sodipodi:nodetypes="cc" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.564003;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2855" + width="76.090935" + height="20.689505" + x="45.671253" + y="796.68427" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="48.170582" + y="813.13165" + id="text2859"><tspan + sodipodi:role="line" + id="tspan2857" + x="48.170582" + y="813.13165" + style="stroke-width:0.62235">Edge</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.62235;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2861" + width="92.910706" + height="20.631157" + x="121.7622" + y="796.74249" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="123.81802" + y="813.30695" + id="text2865"><tspan + sodipodi:role="line" + id="tspan2863" + x="123.81802" + y="813.30695" + style="stroke-width:0.62235">lastPoint</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.564003;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2879" + width="76.090935" + height="20.689505" + x="45.671253" + y="817.31531" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="48.170582" + y="833.7627" + id="text2883"><tspan + sodipodi:role="line" + id="tspan2881" + x="48.170582" + y="833.7627" + style="stroke-width:0.62235">edge 3</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.62235;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2885" + width="92.910706" + height="20.631157" + x="121.7622" + y="817.37366" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="123.81802" + y="833.93811" + id="text2889"><tspan + sodipodi:role="line" + id="tspan2887" + x="123.81802" + y="833.93811" + style="stroke-width:0.62235">3</tspan></text> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="44.584824" + y="887.64111" + id="text2903"><tspan + sodipodi:role="line" + id="tspan2901" + x="44.584824" + y="887.64111" + style="stroke-width:0.62235">Edge 3 to remove!</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.564003;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2905" + width="76.090935" + height="20.689505" + x="41.468079" + y="907.44482" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="43.967407" + y="923.89221" + id="text2909"><tspan + sodipodi:role="line" + id="tspan2907" + x="43.967407" + y="923.89221" + style="stroke-width:0.62235">Edge</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.62235;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2911" + width="92.910706" + height="20.631157" + x="117.55902" + y="907.50305" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="119.61485" + y="924.0675" + id="text2915"><tspan + sodipodi:role="line" + id="tspan2913" + x="119.61485" + y="924.0675" + style="stroke-width:0.62235">lastPoint</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.564003;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2917" + width="76.090935" + height="20.689505" + x="41.468079" + y="928.07587" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="43.967407" + y="944.52325" + id="text2921"><tspan + sodipodi:role="line" + id="tspan2919" + x="43.967407" + y="944.52325" + style="stroke-width:0.62235">edge 3</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.62235;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2923" + width="92.910706" + height="20.631157" + x="117.55902" + y="928.13422" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="119.61485" + y="944.69867" + id="text2927"><tspan + sodipodi:role="line" + id="tspan2925" + x="119.61485" + y="944.69867" + style="stroke-width:0.62235">3</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.564003;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2929" + width="76.090935" + height="20.689505" + x="267.09317" + y="907.31293" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="269.5925" + y="923.76031" + id="text2933"><tspan + sodipodi:role="line" + id="tspan2931" + x="269.5925" + y="923.76031" + style="stroke-width:0.62235">Edge</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.62235;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2935" + width="92.910706" + height="20.631157" + x="343.18411" + y="907.37115" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="345.23993" + y="923.93561" + id="text2939"><tspan + sodipodi:role="line" + id="tspan2937" + x="345.23993" + y="923.93561" + style="stroke-width:0.62235">lastPoint</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.564003;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2941" + width="76.090935" + height="20.689505" + x="267.09317" + y="927.94397" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="269.5925" + y="944.39136" + id="text2945"><tspan + sodipodi:role="line" + id="tspan2943" + x="269.5925" + y="944.39136" + style="stroke-width:0.62235">edge 3</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.62235;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect2947" + width="92.910706" + height="20.631157" + x="343.18411" + y="928.00232" /> + <text + xml:space="preserve" + style="font-size:16.596px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.62235" + x="345.23993" + y="944.56677" + id="text2951"><tspan + sodipodi:role="line" + id="tspan2949" + x="345.23993" + y="944.56677" + style="stroke-width:0.62235">4</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker2963)" + d="m 219.19688,927.94397 h 39.89629" + id="path2959" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000" + x="427.76697" + y="945.63947" + id="text2985"><tspan + sodipodi:role="line" + id="tspan2983" + x="427.76697" + y="945.63947">x</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:1, 3;stroke-dashoffset:0" + id="rect2987" + width="424.95172" + height="360.29645" + x="25.837017" + y="609.39429" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker2993)" + d="m 58.889602,598.3227 c 0,0 -28.189621,-102.28804 2.747075,-169.23825" + id="path2989" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + id="text3007" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect3009)"><tspan + x="27.21875" + y="1032.0898"><tspan + style="font-size:16px">Note that while drawing, you do: +</tspan></tspan><tspan + x="27.21875" + y="1052.0898"><tspan + style="font-size:16px">drawEdge(oldPoint, newPoint) if the edge is top to +</tspan></tspan><tspan + x="27.21875" + y="1072.0898"><tspan + style="font-size:16px">bottom or horizontal (left to right), otherwise, you'd +</tspan></tspan><tspan + x="27.21875" + y="1092.0898"><tspan + style="font-size:16px">do: +</tspan></tspan><tspan + x="27.21875" + y="1112.0898"><tspan + style="font-size:16px">drawEdge(newPoint, oldPoint). +</tspan></tspan><tspan + x="27.21875" + y="1132.0898"><tspan + style="font-size:16px">This is to ensure, the directions remain same</tspan></tspan></text> + </g> +</svg> diff --git a/doc/livarot-images/convert-simple-high.svg b/doc/livarot-images/convert-simple-high.svg new file mode 100644 index 0000000..ccede26 --- /dev/null +++ b/doc/livarot-images/convert-simple-high.svg @@ -0,0 +1,140 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="486.77621" + height="516.31232" + viewBox="0 0 486.77621 516.31232" + version="1.1" + id="svg6" + inkscape:version="1.1-dev (1a7913d4e8, 2020-08-20, custom)" + sodipodi:docname="convert-simple-high.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"> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="marker1121" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1119" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.73466529" + inkscape:cx="392.01525" + inkscape:cy="432.16959" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + units="px" + width="1000px" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + fit-margin-top="10" + fit-margin-left="10" + fit-margin-right="10" + fit-margin-bottom="10" /> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-31.206402,-35.657172)"> + <path + style="fill:none;stroke:#000000;stroke-width:2.86674;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 114.93853,537.58003 c 0,0 -7.12643,-411.91923 386.22595,-474.402555 z" + id="path829" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:2.86674;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:5.73347, 5.73347;stroke-dashoffset:0;stroke-opacity:1" + d="m 114.93853,537.58003 7.40009,-79.46247 16.92909,-73.49058 27.50231,-73.79257 35.63381,-63.78975 50.17974,-60.49927 49.72355,-42.84003 64.50322,-38.83431 64.23464,-24.468298 70.1195,-17.225277 z" + id="path1035" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:7.33666;stroke-miterlimit:4;stroke-dasharray:none" + id="path831" + cx="115.26668" + cy="535.56915" + r="6.4003329" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:7.33666;stroke-miterlimit:4;stroke-dasharray:none" + id="circle833" + cx="121.911" + cy="457.75839" + r="6.4003329" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:7.33666;stroke-miterlimit:4;stroke-dasharray:none" + id="circle835" + cx="251.64296" + cy="186.47656" + r="6.4003329" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:7.33666;stroke-miterlimit:4;stroke-dasharray:none" + id="circle837" + cx="366.63855" + cy="104.16064" + r="6.4003329" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:7.33666;stroke-miterlimit:4;stroke-dasharray:none" + id="circle839" + cx="501.58228" + cy="62.199787" + r="6.4003329" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:7.33666;stroke-miterlimit:4;stroke-dasharray:none" + id="circle1025" + cx="138.96669" + cy="383.32968" + r="6.4003329" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:7.33666;stroke-miterlimit:4;stroke-dasharray:none" + id="circle1027" + cx="166.1521" + cy="310.74799" + r="6.4003329" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:7.33666;stroke-miterlimit:4;stroke-dasharray:none" + id="circle1029" + cx="200.8325" + cy="247.2348" + r="6.4003329" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:7.33666;stroke-miterlimit:4;stroke-dasharray:none" + id="circle1031" + cx="301.32437" + cy="142.98907" + r="6.4003329" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:7.33666;stroke-miterlimit:4;stroke-dasharray:none" + id="circle1033" + cx="430.7309" + cy="79.271164" + r="6.4003329" /> + <text + xml:space="preserve" + style="font-size:15.2893px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.573347" + x="40.198563" + y="57.273457" + id="text1043"><tspan + sodipodi:role="line" + id="tspan1041" + x="40.198563" + y="57.273457" + style="stroke-width:0.573347">Smaller Threshold</tspan></text> + </g> +</svg> diff --git a/doc/livarot-images/convert-simple-low.svg b/doc/livarot-images/convert-simple-low.svg new file mode 100644 index 0000000..5feaa53 --- /dev/null +++ b/doc/livarot-images/convert-simple-low.svg @@ -0,0 +1,110 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="396.13266" + height="420.10977" + viewBox="0 0 396.13266 420.10977" + version="1.1" + id="svg6" + inkscape:version="1.1-dev (1a7913d4e8, 2020-08-20, custom)" + sodipodi:docname="convert-simple-low.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"> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="marker1121" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1119" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1" + inkscape:cx="351" + inkscape:cy="316.5" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + units="px" + width="1000px" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + fit-margin-top="10" + fit-margin-left="10" + fit-margin-right="10" + fit-margin-bottom="10" /> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-29.299149,-40.920317)"> + <path + style="fill:none;stroke:#000000;stroke-width:2.30464;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 99.453438,443.96395 c 0,0 -5.729127,-331.15259 310.497102,-381.384564 z" + id="path829" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:5.89814;stroke-miterlimit:4;stroke-dasharray:none" + id="path831" + cx="100.13943" + cy="445.8847" + r="5.1453943" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:2.30464;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:9.21857, 9.21857;stroke-dashoffset:0;stroke-opacity:1" + d="M 99.453438,443.96395 111.66843,344.06761 187.37985,185.96713 286.63198,104.20242 409.95054,62.579386 Z" + id="path857" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:5.89814;stroke-miterlimit:4;stroke-dasharray:none" + id="circle833" + cx="112.32209" + cy="344.4505" + r="5.1453943" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:5.89814;stroke-miterlimit:4;stroke-dasharray:none" + id="circle835" + cx="187.13506" + cy="186.10045" + r="5.1453943" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:5.89814;stroke-miterlimit:4;stroke-dasharray:none" + id="circle837" + cx="285.35266" + cy="103.90615" + r="5.1453943" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:5.89814;stroke-miterlimit:4;stroke-dasharray:none" + id="circle839" + cx="410.28641" + cy="61.793396" + r="5.1453943" /> + <text + xml:space="preserve" + style="font-size:12.2914px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.460929" + x="38.092815" + y="60.2589" + id="text1039"><tspan + sodipodi:role="line" + x="38.092815" + y="60.2589" + id="tspan888" + style="stroke-width:0.460929">Bigger Threshold</tspan></text> + </g> +</svg> diff --git a/doc/livarot-images/edge-sorting.svg b/doc/livarot-images/edge-sorting.svg new file mode 100644 index 0000000..226b52a --- /dev/null +++ b/doc/livarot-images/edge-sorting.svg @@ -0,0 +1,200 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="1000" + height="1000" + viewBox="0 0 1000 1000" + version="1.1" + id="svg6" + inkscape:version="1.1-dev (d63ee585f6, 2020-08-11, custom)" + sodipodi:docname="edge-sorting.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"> + <defs + id="defs2"> + <marker + style="overflow:visible;" + id="marker1121" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="scale(0.8) rotate(180) translate(12.5,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path1119" /> + </marker> + <marker + style="overflow:visible;" + id="Arrow1Lend" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.8) rotate(180) translate(12.5,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path828" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.64984822" + inkscape:cx="460.10744" + inkscape:cy="471.64859" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + units="px" + width="1000px" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" /> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;stroke:#000000;stroke-width:1.00157;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Lend)" + d="M 67.585403,500 H 930.47019" + id="path823" /> + <path + style="fill:none;stroke:#000000;stroke-width:1.00157;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1121)" + d="M 500,67.585384 V 930.47021" + id="path1117" /> + <text + xml:space="preserve" + style="font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="948.98737" + y="506.99948" + id="text1171"><tspan + sodipodi:role="line" + id="tspan1169" + x="948.98737" + y="506.99948" + style="font-size:40px">x</tspan></text> + <text + xml:space="preserve" + style="font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="488.41867" + y="970.67389" + id="text1175"><tspan + sodipodi:role="line" + id="tspan1173" + x="488.41867" + y="970.67389" + style="font-size:40px">y</tspan></text> + <text + xml:space="preserve" + style="font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="480.92773" + y="514.58008" + id="text1211"><tspan + sodipodi:role="line" + id="tspan1209" + x="480.92773" + y="514.58008" + style="font-size:40px">-1</tspan></text> + <text + xml:space="preserve" + style="font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="487.28516" + y="258.46341" + id="text1215"><tspan + sodipodi:role="line" + id="tspan1213" + x="487.28516" + y="258.46341" + style="font-size:40px">0</tspan></text> + <text + xml:space="preserve" + style="font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="732.20917" + y="258.48294" + id="text1219"><tspan + sodipodi:role="line" + id="tspan1217" + x="732.20917" + y="258.48294" + style="font-size:40px">1</tspan></text> + <text + xml:space="preserve" + style="font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="733.09784" + y="514.84375" + id="text1223"><tspan + sodipodi:role="line" + id="tspan1221" + x="733.09784" + y="514.84375" + style="font-size:40px">2</tspan></text> + <text + xml:space="preserve" + style="font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="732.63885" + y="748.21735" + id="text1227"><tspan + sodipodi:role="line" + id="tspan1225" + x="732.63885" + y="748.21735" + style="font-size:40px">3</tspan></text> + <text + xml:space="preserve" + style="font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="487.42188" + y="748.23688" + id="text1231"><tspan + sodipodi:role="line" + id="tspan1229" + x="487.42188" + y="748.23688" + style="font-size:40px">4</tspan></text> + <text + xml:space="preserve" + style="font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="244.42764" + y="747.95367" + id="text1235"><tspan + sodipodi:role="line" + id="tspan1233" + x="244.42764" + y="747.95367" + style="font-size:40px">5</tspan></text> + <text + xml:space="preserve" + style="font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="244.08585" + y="514.56055" + id="text1243"><tspan + sodipodi:role="line" + x="244.08585" + y="514.56055" + style="font-size:40px" + id="tspan1245">6</tspan></text> + <text + xml:space="preserve" + style="font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="244.29092" + y="258.48294" + id="text1251"><tspan + sodipodi:role="line" + x="244.29092" + y="258.48294" + style="font-size:40px" + id="tspan1249">7</tspan></text> + </g> +</svg> diff --git a/doc/livarot-images/edge-winding-seed.svg b/doc/livarot-images/edge-winding-seed.svg new file mode 100644 index 0000000..b54c09e --- /dev/null +++ b/doc/livarot-images/edge-winding-seed.svg @@ -0,0 +1,81 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="424.39703" + height="373.91052" + viewBox="0 0 424.39703 373.91052" + version="1.1" + id="svg6" + inkscape:version="1.1-dev (1a7913d4e8, 2020-08-20, custom)" + sodipodi:docname="edge-winding-seed.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"> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="marker1121" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1119" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1" + inkscape:cx="229" + inkscape:cy="258.5" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + units="px" + width="1000px" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + fit-margin-top="10" + fit-margin-left="10" + fit-margin-right="10" + fit-margin-bottom="10" /> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-89.500001,-189.5)"> + <path + id="path829" + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.504865px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 150.23896,199.75243 V 351.212 H 301.69852 V 502.67157 H 150.23896 V 351.212 H 99.752433 V 553.15809 H 503.64461 V 199.75243 Z m 25.24326,25.24326 H 276.45526 V 325.96874 H 175.48222 Z m 0,151.45957 V 477.42831 H 276.45526 V 376.45526 Z" /> + <path + style="fill:none;stroke:#ff0000;stroke-width:1.1107;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 150.23896,199.75243 V 502.67157" + id="path1538" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke:none;stroke-width:1.95177;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path1540" + cx="175.54428" + cy="225.05775" + r="3.0912569" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke:none;stroke-width:1.95177;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="circle1542" + cx="175.52843" + cy="376.78326" + r="3.0912569" /> + </g> +</svg> diff --git a/doc/livarot-images/find-point-2.svg b/doc/livarot-images/find-point-2.svg new file mode 100644 index 0000000..ee2468f --- /dev/null +++ b/doc/livarot-images/find-point-2.svg @@ -0,0 +1,357 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="337.0166" + height="334.90112" + viewBox="0 0 337.01661 334.90112" + version="1.1" + id="svg6" + inkscape:version="1.1-dev (d63ee585f6, 2020-08-11, custom)" + sodipodi:docname="find-point.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"> + <style + id="style1605"> +.measure-arrow +{ +} +.measure-label +{ + +} +.measure-line +{ +}</style> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="marker2236" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutM" + inkscape:isstock="true"> + <path + transform="scale(0.4)" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path2234" /> + </marker> + <marker + style="overflow:visible" + id="marker2206" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutM" + inkscape:isstock="true"> + <path + transform="scale(0.4)" + style="fill:#008000;fill-opacity:1;fill-rule:evenodd;stroke:#008000;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path2204" /> + </marker> + <marker + style="overflow:visible" + id="marker2176" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutM" + inkscape:isstock="true"> + <path + transform="scale(0.4)" + style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path2174" /> + </marker> + <marker + style="overflow:visible" + id="marker1645" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutM" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.4)" + style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path1643" /> + </marker> + <inkscape:path-effect + effect="measure_segments" + id="path-effect1603" + is_visible="true" + lpeversion="1" + unit="mm" + orientation="parallel" + coloropacity="#000000ff" + fontbutton="Sans 10" + precision="2" + fix_overlaps="0" + position="5" + text_top_bottom="0" + helpline_distance="0" + helpline_overlap="2" + line_width="0.25" + scale="1" + format="{measure}{unit}" + blacklist="" + active_projection="false" + whitelist="false" + showindex="false" + arrows_outside="false" + flip_side="false" + scale_sensitive="true" + local_locale="true" + rotate_anotation="true" + hide_back="true" + hide_arrows="false" + smallx100="false" + linked_items="" + distance_projection="20" + angle_projection="0" + avoid_overlapping="true" + onbbox="false" + bboxonly="false" + centers="false" + maxmin="false" + helpdata="<b><big>General</big></b> +Display and position dimension lines and labels + +<b><big>Projection</big></b> +Show a line with measurements based on the selected items + +<b><big>Options</big></b> +Options for color, precision, label formatting and display + +<b><big>Tips</big></b> +<b><i>Custom styling:</i></b> To further customize the styles, use the XML editor to find out the class or ID, then use the Style dialog to apply a new style. +<b><i>Blacklists:</i></b> allow to hide some segments or projection steps. +<b><i>Multiple Measure LPEs:</i></b> In the same object, in conjunction with blacklists,this allows for labels and measurements with different orientations or additional projections. +<b><i>Set Defaults:</i></b> For every LPE, default values can be set at the bottom." /> + <marker + style="overflow:visible" + id="marker1571" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutM" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.4)" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path1569" /> + </marker> + <marker + style="overflow:visible" + id="marker1519" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutM" + inkscape:isstock="true"> + <path + transform="scale(0.4)" + style="fill:#808080;fill-opacity:1;fill-rule:evenodd;stroke:#808080;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path1517" /> + </marker> + <marker + style="overflow:visible" + id="TriangleOutM" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutM" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.4)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path1364" /> + </marker> + <marker + style="overflow:visible" + id="marker1571-3" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutM" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.4)" + style="fill:#008000;fill-opacity:1;fill-rule:evenodd;stroke:#008000;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path1569-6" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="1" + inkscape:pageshadow="2" + inkscape:zoom="1.5837767" + inkscape:cx="93.447519" + inkscape:cy="158.79764" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + units="px" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + fit-margin-left="10" + fit-margin-right="10" + fit-margin-bottom="10" + fit-margin-top="10" /> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-83.749898,32.083839)"> + <path + style="fill:none;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 267.99475,142.84487 c 0,0 6.64406,16.59829 -7.97787,22.4135" + id="path1747" /> + <path + style="fill:none;stroke:#000000;stroke-width:2.89134;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM)" + d="M 240.31542,146.25174 99.664523,281.78887" + id="path1217" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="-58.365868" + y="264.45288" + id="text1507" + transform="rotate(-44.465341)"><tspan + sodipodi:role="line" + id="tspan1505" + x="-58.365868" + y="264.45288" + style="font-size:16px">bNorm</tspan></text> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 248.88319,138.53474 6.95145,7.30751 -8.48559,7.76245" + id="path1755" /> + <path + style="fill:#ff0000;stroke:#ff0000;stroke-width:2.89134;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1571)" + d="M 99.664523,281.78887 225.38087,273.26651" + id="path1567" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#008000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 245.60632,129.9363 c 0,0 31.28048,3.0901 14.41056,35.32207" + id="path1757" /> + <path + style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:2.89134;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1519)" + d="M 240.31542,146.25174 375.85255,286.90265" + id="path1515" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="342.99881" + y="-76.441467" + id="text1559" + transform="rotate(45.53466)"><tspan + sodipodi:role="line" + id="tspan1557" + x="342.99881" + y="-76.441467" + style="font-size:16px">bNorm.ccw()</tspan></text> + <circle + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.89134;stroke-miterlimit:4;stroke-dasharray:none" + id="path1561" + cx="238.05536" + cy="272.15973" + r="4.4594245" /> + <circle + style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.89134;stroke-miterlimit:4;stroke-dasharray:none" + id="circle1563" + cx="273.21555" + cy="114.23372" + r="4.4594245" /> + <circle + style="fill:#008000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.89134;stroke-miterlimit:4;stroke-dasharray:none" + id="circle1565" + cx="143.98232" + cy="109.09448" + r="4.4594245" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:2.89134;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1645)" + d="M 99.664523,281.78887 264.20711,122.88773" + id="path1641" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#008000;stroke-width:2.89134;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1571-3)" + d="M 99.664523,281.78887 141.17926,121.40511" + id="path1567-7" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="272.63654" + y="166.73859" + id="text1751"><tspan + sodipodi:role="line" + id="tspan1749" + x="272.63654" + y="166.73859" + style="font-size:16px;fill:#ff0000">θ<tspan + style="font-size:65%;baseline-shift:sub" + id="tspan1753">r</tspan></tspan></text> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#0000ff" + x="270.05438" + y="136.71002" + id="text1769"><tspan + sodipodi:role="line" + id="tspan1767" + x="270.05438" + y="136.71002" + style="font-size:16px;fill:#0000ff">θ<tspan + style="font-size:65%;baseline-shift:sub" + id="tspan1771">b</tspan></tspan></text> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#008000" + x="224.15295" + y="126.32184" + id="text1777"><tspan + sodipodi:role="line" + id="tspan1775" + x="224.15295" + y="126.32184" + style="font-size:16px;fill:#008000">θ<tspan + style="font-size:65%;baseline-shift:sub;fill:#008000" + id="tspan1779">g</tspan></tspan></text> + <path + style="opacity:0.5;fill:none;stroke:#0000ff;stroke-width:2.89134;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker2176)" + d="M 240.31542,146.25174 404.85801,-12.6494" + id="path2172" + sodipodi:nodetypes="cc" /> + <path + style="opacity:0.5;fill:none;stroke:#008000;stroke-width:2.89134;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker2206)" + d="M 240.31542,146.25174 281.83016,-14.13202" + id="path2202" + sodipodi:nodetypes="cc" /> + <path + style="opacity:0.5;fill:#ff0000;stroke:#ff0000;stroke-width:2.89134;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker2236)" + d="m 240.31542,146.25174 125.71635,-8.52236" + id="path2232" + sodipodi:nodetypes="cc" /> + </g> +</svg> diff --git a/doc/livarot-images/find-point-same-opp-sweepsense.svg b/doc/livarot-images/find-point-same-opp-sweepsense.svg new file mode 100644 index 0000000..066011a --- /dev/null +++ b/doc/livarot-images/find-point-same-opp-sweepsense.svg @@ -0,0 +1,417 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="307.80222" + height="208.3214" + viewBox="0 0 307.80222 208.3214" + version="1.1" + id="svg6" + inkscape:version="1.1-dev (d63ee585f6, 2020-08-11, custom)" + sodipodi:docname="find-point-same-opp-sweepsense.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"> + <style + id="style1605"> +.measure-arrow +{ +} +.measure-label +{ + +} +.measure-line +{ +}</style> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="marker2206" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutM" + inkscape:isstock="true"> + <path + transform="scale(0.4)" + style="fill:#ff00ff;fill-opacity:1;fill-rule:evenodd;stroke:#ff00ff;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path2204" /> + </marker> + <marker + style="overflow:visible" + id="marker2170" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutM" + inkscape:isstock="true"> + <path + transform="scale(0.4)" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path2168" /> + </marker> + <marker + style="overflow:visible" + id="marker2134" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutM" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.4)" + style="fill:#ff00ff;fill-opacity:1;fill-rule:evenodd;stroke:#ff00ff;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path2132" /> + </marker> + <marker + style="overflow:visible" + id="marker2074" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutM" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.4)" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path2072" /> + </marker> + <marker + style="overflow:visible" + id="marker1533" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutM" + inkscape:isstock="true"> + <path + transform="scale(0.4)" + style="fill:#ff00ff;fill-opacity:1;fill-rule:evenodd;stroke:#ff00ff;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path1531" /> + </marker> + <marker + style="overflow:visible" + id="marker1497" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutM" + inkscape:isstock="true"> + <path + transform="scale(0.4)" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path1495" /> + </marker> + <marker + style="overflow:visible" + id="marker1395" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutM" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.4)" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path1393" /> + </marker> + <marker + style="overflow:visible" + id="marker1293" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutM" + inkscape:isstock="true"> + <path + transform="scale(0.4)" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path1291" /> + </marker> + <marker + style="overflow:visible" + id="marker1263" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutM" + inkscape:isstock="true"> + <path + transform="scale(0.4)" + style="fill:#ff00ff;fill-opacity:1;fill-rule:evenodd;stroke:#ff00ff;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path1261" /> + </marker> + <marker + style="overflow:visible" + id="marker1203" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutM" + inkscape:isstock="true"> + <path + transform="scale(0.4)" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path1201" /> + </marker> + <marker + style="overflow:visible" + id="marker1143" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutM" + inkscape:isstock="true"> + <path + transform="scale(0.4)" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path1141" /> + </marker> + <marker + style="overflow:visible" + id="marker1047" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutM" + inkscape:isstock="true"> + <path + transform="scale(0.4)" + style="fill:#ff00ff;fill-opacity:1;fill-rule:evenodd;stroke:#ff00ff;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path1045" /> + </marker> + <marker + style="overflow:visible" + id="marker1011" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutM" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.4)" + style="fill:#ff00ff;fill-opacity:1;fill-rule:evenodd;stroke:#ff00ff;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path1009" /> + </marker> + <marker + style="overflow:visible" + id="marker1645" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutM" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.4)" + style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path1643" /> + </marker> + <inkscape:path-effect + effect="measure_segments" + id="path-effect1603" + is_visible="true" + lpeversion="1" + unit="mm" + orientation="parallel" + coloropacity="#000000ff" + fontbutton="Sans 10" + precision="2" + fix_overlaps="0" + position="5" + text_top_bottom="0" + helpline_distance="0" + helpline_overlap="2" + line_width="0.25" + scale="1" + format="{measure}{unit}" + blacklist="" + active_projection="false" + whitelist="false" + showindex="false" + arrows_outside="false" + flip_side="false" + scale_sensitive="true" + local_locale="true" + rotate_anotation="true" + hide_back="true" + hide_arrows="false" + smallx100="false" + linked_items="" + distance_projection="20" + angle_projection="0" + avoid_overlapping="true" + onbbox="false" + bboxonly="false" + centers="false" + maxmin="false" + helpdata="<b><big>General</big></b> Display and position dimension lines and labels <b><big>Projection</big></b> Show a line with measurements based on the selected items <b><big>Options</big></b> Options for color, precision, label formatting and display <b><big>Tips</big></b> <b><i>Custom styling:</i></b> To further customize the styles, use the XML editor to find out the class or ID, then use the Style dialog to apply a new style. <b><i>Blacklists:</i></b> allow to hide some segments or projection steps. <b><i>Multiple Measure LPEs:</i></b> In the same object, in conjunction with blacklists,this allows for labels and measurements with different orientations or additional projections. <b><i>Set Defaults:</i></b> For every LPE, default values can be set at the bottom." /> + <marker + style="overflow:visible" + id="marker1519" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutM" + inkscape:isstock="true"> + <path + transform="scale(0.4)" + style="fill:#808080;fill-opacity:1;fill-rule:evenodd;stroke:#808080;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path1517" /> + </marker> + <marker + style="overflow:visible" + id="TriangleOutM" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutM" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.4)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path1364" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="1" + inkscape:pageshadow="2" + inkscape:zoom="2.6577043" + inkscape:cx="162.5463" + inkscape:cy="86.728986" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + units="px" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + fit-margin-left="10" + fit-margin-right="10" + fit-margin-bottom="10" + fit-margin-top="10" /> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-81.511939,-113.77527)"> + <path + style="fill:#ff00ff;stroke:#ff00ff;stroke-width:3.26929;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1011)" + d="m 265.67004,240.12496 88.9392,-14.91372" + id="path1007" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#ff0000;stroke-width:3.26929;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1395)" + d="m 265.67004,240.12496 -36.34951,-79.9144" + id="path1391" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:2.89134;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM)" + d="M 232.74865,270.3408 373.39954,134.80367" + id="path1217" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="98.04657" + y="371.93192" + id="text1507" + transform="rotate(-44.465341)"><tspan + sodipodi:role="line" + id="tspan1505" + x="98.04657" + y="371.93192" + style="font-size:16px">bNorm</tspan></text> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 224.20549,260.95038 7.30751,-6.95146 7.76245,8.48559" + id="path1755" /> + <path + style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:2.89134;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1519)" + d="M 232.74865,270.3408 97.21152,129.68989" + id="path1515" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="218.83685" + y="39.289875" + id="text1559" + transform="rotate(45.53466)"><tspan + sodipodi:role="line" + id="tspan1557" + x="218.83685" + y="39.289875" + style="font-size:16px">bNorm.ccw()</tspan></text> + <circle + style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.89134;stroke-miterlimit:4;stroke-dasharray:none" + id="circle1563" + cx="265.19934" + cy="239.61365" + r="4.4594245" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:2.89134;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1645)" + d="m 232.74865,270.3408 23.89169,-23.36401" + id="path1641" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#0000ff" + x="217.75481" + y="249.06168" + id="text1769"><tspan + sodipodi:role="line" + id="tspan1767" + x="217.75481" + y="249.06168" + style="font-size:16px;fill:#0000ff">θ<tspan + style="font-size:65%;baseline-shift:sub" + id="tspan1771">b</tspan></tspan></text> + <path + style="fill:none;stroke:#ff0000;stroke-width:3.269;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.269, 3.269;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker2074)" + d="m 265.67004,240.12496 -79.9144,36.34952" + id="path2070" + sodipodi:nodetypes="cc" /> + <path + style="fill:#ff00ff;stroke:#ff00ff;stroke-width:3.26929;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.26929, 3.26929;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker2134)" + d="m 265.67004,240.12496 -14.91372,-88.9392" + id="path2130" + sodipodi:nodetypes="cc" /> + <path + style="opacity:0.5;fill:none;stroke:#ff0000;stroke-width:3.269;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.269, 3.269;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker2170)" + d="m 232.74865,270.3408 -79.9144,36.34952" + id="path2166" + sodipodi:nodetypes="cc" /> + <path + style="opacity:0.5;fill:#ff00ff;stroke:#ff00ff;stroke-width:3.26929;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.26929, 3.26929;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker2206)" + d="M 232.74865,270.3408 217.83493,181.4016" + id="path2202" + sodipodi:nodetypes="cc" /> + </g> +</svg> diff --git a/doc/livarot-images/find-point-same.svg b/doc/livarot-images/find-point-same.svg new file mode 100644 index 0000000..e337c2c --- /dev/null +++ b/doc/livarot-images/find-point-same.svg @@ -0,0 +1,386 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="307.80225" + height="208.18222" + viewBox="0 0 307.80225 208.18222" + version="1.1" + id="svg6" + inkscape:version="1.1-dev (d63ee585f6, 2020-08-11, custom)" + sodipodi:docname="find-point-same.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"> + <style + id="style1605"> +.measure-arrow +{ +} +.measure-label +{ + +} +.measure-line +{ +}</style> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="marker1533" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutM" + inkscape:isstock="true"> + <path + transform="scale(0.4)" + style="fill:#ff00ff;fill-opacity:1;fill-rule:evenodd;stroke:#ff00ff;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path1531" /> + </marker> + <marker + style="overflow:visible" + id="marker1497" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutM" + inkscape:isstock="true"> + <path + transform="scale(0.4)" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path1495" /> + </marker> + <marker + style="overflow:visible" + id="marker1449" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutM" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.4)" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path1447" /> + </marker> + <marker + style="overflow:visible" + id="marker1395" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutM" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.4)" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path1393" /> + </marker> + <marker + style="overflow:visible" + id="marker1353" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutM" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.4)" + style="fill:#ff00ff;fill-opacity:1;fill-rule:evenodd;stroke:#ff00ff;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path1351" /> + </marker> + <marker + style="overflow:visible" + id="marker1293" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutM" + inkscape:isstock="true"> + <path + transform="scale(0.4)" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path1291" /> + </marker> + <marker + style="overflow:visible" + id="marker1263" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutM" + inkscape:isstock="true"> + <path + transform="scale(0.4)" + style="fill:#ff00ff;fill-opacity:1;fill-rule:evenodd;stroke:#ff00ff;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path1261" /> + </marker> + <marker + style="overflow:visible" + id="marker1203" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutM" + inkscape:isstock="true"> + <path + transform="scale(0.4)" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path1201" /> + </marker> + <marker + style="overflow:visible" + id="marker1143" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutM" + inkscape:isstock="true"> + <path + transform="scale(0.4)" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path1141" /> + </marker> + <marker + style="overflow:visible" + id="marker1047" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutM" + inkscape:isstock="true"> + <path + transform="scale(0.4)" + style="fill:#ff00ff;fill-opacity:1;fill-rule:evenodd;stroke:#ff00ff;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path1045" /> + </marker> + <marker + style="overflow:visible" + id="marker1011" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutM" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.4)" + style="fill:#ff00ff;fill-opacity:1;fill-rule:evenodd;stroke:#ff00ff;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path1009" /> + </marker> + <marker + style="overflow:visible" + id="marker1645" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutM" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.4)" + style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path1643" /> + </marker> + <inkscape:path-effect + effect="measure_segments" + id="path-effect1603" + is_visible="true" + lpeversion="1" + unit="mm" + orientation="parallel" + coloropacity="#000000ff" + fontbutton="Sans 10" + precision="2" + fix_overlaps="0" + position="5" + text_top_bottom="0" + helpline_distance="0" + helpline_overlap="2" + line_width="0.25" + scale="1" + format="{measure}{unit}" + blacklist="" + active_projection="false" + whitelist="false" + showindex="false" + arrows_outside="false" + flip_side="false" + scale_sensitive="true" + local_locale="true" + rotate_anotation="true" + hide_back="true" + hide_arrows="false" + smallx100="false" + linked_items="" + distance_projection="20" + angle_projection="0" + avoid_overlapping="true" + onbbox="false" + bboxonly="false" + centers="false" + maxmin="false" + helpdata="<b><big>General</big></b> Display and position dimension lines and labels <b><big>Projection</big></b> Show a line with measurements based on the selected items <b><big>Options</big></b> Options for color, precision, label formatting and display <b><big>Tips</big></b> <b><i>Custom styling:</i></b> To further customize the styles, use the XML editor to find out the class or ID, then use the Style dialog to apply a new style. <b><i>Blacklists:</i></b> allow to hide some segments or projection steps. <b><i>Multiple Measure LPEs:</i></b> In the same object, in conjunction with blacklists,this allows for labels and measurements with different orientations or additional projections. <b><i>Set Defaults:</i></b> For every LPE, default values can be set at the bottom." /> + <marker + style="overflow:visible" + id="marker1519" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutM" + inkscape:isstock="true"> + <path + transform="scale(0.4)" + style="fill:#808080;fill-opacity:1;fill-rule:evenodd;stroke:#808080;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path1517" /> + </marker> + <marker + style="overflow:visible" + id="TriangleOutM" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutM" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.4)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path1364" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="1" + inkscape:pageshadow="2" + inkscape:zoom="2.6577043" + inkscape:cx="127.17743" + inkscape:cy="129.99942" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + units="px" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + fit-margin-left="10" + fit-margin-right="10" + fit-margin-bottom="10" + fit-margin-top="10" /> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-83.749898,-94.635058)"> + <path + style="fill:#ff00ff;stroke:#ff00ff;stroke-width:3.26929;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1011)" + d="m 208.27083,177.72879 -8.95566,98.42731" + id="path1007" /> + <path + style="fill:none;stroke:#ff0000;stroke-width:3.26929;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1395)" + d="m 208.27083,177.72879 -79.9144,36.34951" + id="path1391" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:2.89134;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM)" + d="M 240.31542,146.25174 99.664523,281.78887" + id="path1217" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="-119.34449" + y="266.36035" + id="text1507" + transform="rotate(-44.465341)"><tspan + sodipodi:role="line" + id="tspan1505" + x="-119.34449" + y="266.36035" + style="font-size:16px">bNorm</tspan></text> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 247.54911,157.14467 -7.30751,6.95146 -7.76245,-8.48559" + id="path1755" /> + <path + style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:2.89134;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1519)" + d="M 240.31542,146.25174 375.85255,286.90265" + id="path1515" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="356.33493" + y="-75.652992" + id="text1559" + transform="rotate(45.53466)"><tspan + sodipodi:role="line" + id="tspan1557" + x="356.33493" + y="-75.652992" + style="font-size:16px">bNorm.ccw()</tspan></text> + <circle + style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.89134;stroke-miterlimit:4;stroke-dasharray:none" + id="circle1563" + cx="207.79117" + cy="177.55916" + r="4.4594245" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:2.89134;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1645)" + d="m 240.31542,146.25174 -23.89169,23.36401" + id="path1641" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#0000ff" + x="228.36461" + y="173.38316" + id="text1769"><tspan + sodipodi:role="line" + id="tspan1767" + x="228.36461" + y="173.38316" + style="font-size:16px;fill:#0000ff">θ<tspan + style="font-size:65%;baseline-shift:sub" + id="tspan1771">b</tspan></tspan></text> + <path + style="fill:none;stroke:#ff0000;stroke-width:3.26929;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.26929, 3.26929;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker1449)" + d="m 208.27083,177.72879 36.34951,79.9144" + id="path1445" + sodipodi:nodetypes="cc" /> + <path + style="fill:#ff00ff;stroke:#ff00ff;stroke-width:3.26929;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.26929, 3.26929;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker1353)" + d="m 208.27083,177.72879 98.4273,8.95566" + id="path1349" /> + <path + style="fill:none;stroke:#ff0000;stroke-width:3.26929;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.26929, 3.26928999999999981;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker1497);opacity:0.5" + d="m 240.31542,146.25174 36.34951,79.9144" + id="path1493" + sodipodi:nodetypes="cc" /> + <path + style="fill:#ff00ff;stroke:#ff00ff;stroke-width:3.26929;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.26929, 3.26928999999999981;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker1533);opacity:0.5" + d="m 240.31542,146.25174 98.4273,8.95566" + id="path1529" /> + </g> +</svg> diff --git a/doc/livarot-images/find-point.svg b/doc/livarot-images/find-point.svg new file mode 100644 index 0000000..ba7ea2e --- /dev/null +++ b/doc/livarot-images/find-point.svg @@ -0,0 +1,299 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="307.80225" + height="208.18222" + viewBox="0 0 307.80225 208.18222" + version="1.1" + id="svg6" + inkscape:version="1.1-dev (d63ee585f6, 2020-08-11, custom)" + sodipodi:docname="find-point.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"> + <style + id="style1605"> +.measure-arrow +{ +} +.measure-label +{ + +} +.measure-line +{ +}</style> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="marker1645" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutM" + inkscape:isstock="true"> + <path + transform="scale(0.4)" + style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path1643" /> + </marker> + <inkscape:path-effect + effect="measure_segments" + id="path-effect1603" + is_visible="true" + lpeversion="1" + unit="mm" + orientation="parallel" + coloropacity="#000000ff" + fontbutton="Sans 10" + precision="2" + fix_overlaps="0" + position="5" + text_top_bottom="0" + helpline_distance="0" + helpline_overlap="2" + line_width="0.25" + scale="1" + format="{measure}{unit}" + blacklist="" + active_projection="false" + whitelist="false" + showindex="false" + arrows_outside="false" + flip_side="false" + scale_sensitive="true" + local_locale="true" + rotate_anotation="true" + hide_back="true" + hide_arrows="false" + smallx100="false" + linked_items="" + distance_projection="20" + angle_projection="0" + avoid_overlapping="true" + onbbox="false" + bboxonly="false" + centers="false" + maxmin="false" + helpdata="<b><big>General</big></b> +Display and position dimension lines and labels + +<b><big>Projection</big></b> +Show a line with measurements based on the selected items + +<b><big>Options</big></b> +Options for color, precision, label formatting and display + +<b><big>Tips</big></b> +<b><i>Custom styling:</i></b> To further customize the styles, use the XML editor to find out the class or ID, then use the Style dialog to apply a new style. +<b><i>Blacklists:</i></b> allow to hide some segments or projection steps. +<b><i>Multiple Measure LPEs:</i></b> In the same object, in conjunction with blacklists,this allows for labels and measurements with different orientations or additional projections. +<b><i>Set Defaults:</i></b> For every LPE, default values can be set at the bottom." /> + <marker + style="overflow:visible" + id="marker1571" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutM" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.4)" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path1569" /> + </marker> + <marker + style="overflow:visible" + id="marker1519" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutM" + inkscape:isstock="true"> + <path + transform="scale(0.4)" + style="fill:#808080;fill-opacity:1;fill-rule:evenodd;stroke:#808080;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path1517" /> + </marker> + <marker + style="overflow:visible" + id="TriangleOutM" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutM" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.4)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path1364" /> + </marker> + <marker + style="overflow:visible" + id="marker1571-3" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="TriangleOutM" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.4)" + style="fill:#008000;fill-opacity:1;fill-rule:evenodd;stroke:#008000;stroke-width:1pt;stroke-opacity:1" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path1569-6" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="1" + inkscape:pageshadow="2" + inkscape:zoom="10.630817" + inkscape:cx="146.46099" + inkscape:cy="64.952676" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + units="px" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + fit-margin-left="10" + fit-margin-right="10" + fit-margin-bottom="10" + fit-margin-top="10" /> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-83.749898,-94.635058)"> + <path + style="fill:none;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 263.61025,169.95772 c 0,0 -10.66367,14.35036 -23.27317,4.93666" + id="path1747" /> + <path + style="fill:none;stroke:#000000;stroke-width:2.89134;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM)" + d="M 240.31542,146.25174 99.664523,281.78887" + id="path1217" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="-58.365868" + y="264.45288" + id="text1507" + transform="rotate(-44.465341)"><tspan + sodipodi:role="line" + id="tspan1505" + x="-58.365868" + y="264.45288" + style="font-size:16px">bNorm</tspan></text> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 248.88319,138.53474 6.95145,7.30751 -8.48559,7.76245" + id="path1755" /> + <path + style="fill:#ff0000;stroke:#ff0000;stroke-width:2.89134;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1571)" + d="m 240.31542,146.25174 -1.58368,114.30611" + id="path1567" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#008000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 253.37421,160.24635 c 0,0 -27.56623,15.10365 -31.83159,-21.02529" + id="path1757" /> + <path + style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:2.89134;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1519)" + d="M 240.31542,146.25174 375.85255,286.90265" + id="path1515" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="342.99881" + y="-76.441467" + id="text1559" + transform="rotate(45.53466)"><tspan + sodipodi:role="line" + id="tspan1557" + x="342.99881" + y="-76.441467" + style="font-size:16px">bNorm.ccw()</tspan></text> + <circle + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.89134;stroke-miterlimit:4;stroke-dasharray:none" + id="path1561" + cx="238.05536" + cy="272.15973" + r="4.4594245" /> + <circle + style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.89134;stroke-miterlimit:4;stroke-dasharray:none" + id="circle1563" + cx="273.21555" + cy="114.23372" + r="4.4594245" /> + <circle + style="fill:#008000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.89134;stroke-miterlimit:4;stroke-dasharray:none" + id="circle1565" + cx="143.98232" + cy="109.09448" + r="4.4594245" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:2.89134;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1645)" + d="m 240.31542,146.25174 23.89169,-23.36401" + id="path1641" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#008000;stroke-width:2.89134;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1571-3)" + d="M 240.31542,146.25174 155.53223,113.45785" + id="path1567-7" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="251.02913" + y="192.64919" + id="text1751"><tspan + sodipodi:role="line" + id="tspan1749" + x="251.02913" + y="192.64919" + style="font-size:16px;fill:#ff0000">θ<tspan + style="font-size:65%;baseline-shift:sub" + id="tspan1753">r</tspan></tspan></text> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#0000ff" + x="257.61835" + y="153.61459" + id="text1769"><tspan + sodipodi:role="line" + id="tspan1767" + x="257.61835" + y="153.61459" + style="font-size:16px;fill:#0000ff">θ<tspan + style="font-size:65%;baseline-shift:sub" + id="tspan1771">b</tspan></tspan></text> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#008000" + x="206.59474" + y="153.46944" + id="text1777"><tspan + sodipodi:role="line" + id="tspan1775" + x="206.59474" + y="153.46944" + style="font-size:16px;fill:#008000">θ<tspan + style="font-size:65%;baseline-shift:sub;fill:#008000" + id="tspan1779">g</tspan></tspan></text> + </g> +</svg> diff --git a/doc/livarot-images/intersection-cross-product.svg b/doc/livarot-images/intersection-cross-product.svg new file mode 100644 index 0000000..b2004db --- /dev/null +++ b/doc/livarot-images/intersection-cross-product.svg @@ -0,0 +1,443 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="500" + height="700" + viewBox="0 0 500.00001 700" + version="1.1" + id="svg6" + inkscape:version="1.1-dev (6f52e792f5, 2020-08-23, custom)" + sodipodi:docname="intersection-cross-product.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"> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="marker1557" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1555" /> + </marker> + <marker + style="overflow:visible" + id="marker1499" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1497" /> + </marker> + <marker + style="overflow:visible" + id="marker1489" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1487" /> + </marker> + <marker + style="overflow:visible" + id="marker1347" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1345" /> + </marker> + <marker + style="overflow:visible" + id="marker1231" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1229" /> + </marker> + <marker + style="overflow:visible" + id="marker1159" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1157" /> + </marker> + <marker + style="overflow:visible" + id="marker1149" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1147" /> + </marker> + <marker + style="overflow:visible" + id="marker1091" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1089" /> + </marker> + <marker + style="overflow:visible" + id="marker1033" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1031" /> + </marker> + <marker + style="overflow:visible" + id="marker1023" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1021" /> + </marker> + <marker + style="overflow:visible" + id="marker933" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path931" /> + </marker> + <marker + style="overflow:visible" + id="marker903" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path901" /> + </marker> + <marker + style="overflow:visible" + id="marker847" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path845" /> + </marker> + <marker + style="overflow:visible" + id="marker1121" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1119" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1.7070136" + inkscape:cx="185.70443" + inkscape:cy="463.67527" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + units="px" + width="1000.0005px" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" /> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1121)" + d="M 40.376023,51.195578 184.68385,195.50341" + id="path829" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker847)" + d="M 186.94302,51.087771 42.635185,195.39561" + id="path843" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="27.279669" + y="45.689095" + id="text875"><tspan + sodipodi:role="line" + id="tspan873" + x="27.279669" + y="45.689095">left</tspan></text> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="174.84354" + y="39.357662" + id="text879"><tspan + sodipodi:role="line" + id="tspan877" + x="174.84354" + y="39.357662">right</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:0.860571px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker903)" + d="M 361.95404,61.714577 486.14115,185.90169" + id="path899" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.860571px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker933)" + d="M 361.95404,61.714577 237.76692,185.9017" + id="path929" /> + <text + xml:space="preserve" + style="font-size:13.7691px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.860571" + x="428.63852" + y="123.67144" + id="text967"><tspan + sodipodi:role="line" + id="tspan965" + x="428.63852" + y="123.67144" + style="stroke-width:0.860571">left</tspan></text> + <text + xml:space="preserve" + style="font-size:13.7691px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.860571" + x="267.50607" + y="120.33862" + id="text971"><tspan + sodipodi:role="line" + id="tspan969" + x="267.50607" + y="120.33862" + style="stroke-width:0.860571">right</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1033)" + d="M 31.562822,248.05474 175.87065,392.36257" + id="path1009" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1023)" + d="M 178.12982,247.94693 33.821984,392.25477" + id="path1011" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="168.3092" + y="239.50467" + id="text1015"><tspan + sodipodi:role="line" + id="tspan1013" + x="168.3092" + y="239.50467">left</tspan></text> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="13.953851" + y="240.20125" + id="text1019"><tspan + sodipodi:role="line" + id="tspan1017" + x="13.953851" + y="240.20125">right</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:0.860571px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1159)" + d="M 353.68417,264.68996 477.87128,388.87707" + id="path1135" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.860571px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1149)" + d="M 353.68417,264.68996 229.49705,388.87708" + id="path1137" /> + <text + xml:space="preserve" + style="font-size:13.7691px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.860571" + x="261.2811" + y="322.17184" + id="text1141"><tspan + sodipodi:role="line" + id="tspan1139" + x="261.2811" + y="322.17184" + style="stroke-width:0.860571">left</tspan></text> + <text + xml:space="preserve" + style="font-size:13.7691px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.860571" + x="413.39346" + y="319.2049" + id="text1145"><tspan + sodipodi:role="line" + id="tspan1143" + x="413.39346" + y="319.2049" + style="stroke-width:0.860571">right</tspan></text> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="304.15286" + y="29.0243" + id="text1193"><tspan + sodipodi:role="line" + id="tspan1191" + x="304.15286" + y="29.0243">cross(ldir, rdir);</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1231);paint-order:normal" + d="m 390.02678,90.544454 c 0,0 -25.46234,33.475456 -54.15233,0.04604" + id="path1227" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1347)" + d="m 326.30728,291.97517 c 0,0 20.78023,28.33579 51.3341,-0.47436" + id="path1343" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:12.5877px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.786733" + x="301.95645" + y="141.09514" + id="text1385"><tspan + sodipodi:role="line" + id="tspan1383" + x="301.95645" + y="141.09514" + style="stroke-width:0.786733">cross(ldir, rdir) > 0</tspan></text> + <text + xml:space="preserve" + style="font-size:12.5877px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.786733" + x="289.08221" + y="359.32712" + id="text1389"><tspan + sodipodi:role="line" + id="tspan1387" + x="289.08221" + y="359.32712" + style="stroke-width:0.786733">cross(ldir, rdir) < 0</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1499)" + d="M 33.412499,452.06889 177.72033,596.37672" + id="path1479" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="56.942776" + y="522.93726" + id="text1485"><tspan + sodipodi:role="line" + id="tspan1483" + x="56.942776" + y="522.93726">left</tspan></text> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="139.73827" + y="506.14304" + id="text1539"><tspan + sodipodi:role="line" + id="tspan1537" + x="139.73827" + y="506.14304">right</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1557)" + d="M 43.272694,443.14263 187.58052,587.45046" + id="path1553" /> + <text + xml:space="preserve" + style="font-size:12.5877px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.786733" + x="292.02301" + y="537.99573" + id="text1585"><tspan + sodipodi:role="line" + id="tspan1583" + x="292.02301" + y="537.99573" + style="stroke-width:0.786733">cross(ldir, rdir) = 0</tspan></text> + </g> +</svg> diff --git a/doc/livarot-images/intersection-cross-products.svg b/doc/livarot-images/intersection-cross-products.svg new file mode 100644 index 0000000..66fff08 --- /dev/null +++ b/doc/livarot-images/intersection-cross-products.svg @@ -0,0 +1,373 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="445.25089" + height="357.09039" + viewBox="0 0 445.25089 357.09039" + version="1.1" + id="svg6" + inkscape:version="1.1-dev (6f52e792f5, 2020-08-23, custom)" + sodipodi:docname="intersection-cross-products.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"> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="marker1503" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Mend" + inkscape:isstock="true"> + <path + transform="matrix(-0.4,0,0,-0.4,-4,0)" + style="fill:#ff00ff;fill-opacity:1;fill-rule:evenodd;stroke:#ff00ff;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1501" /> + </marker> + <marker + style="overflow:visible" + id="marker1461" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Mend" + inkscape:isstock="true"> + <path + transform="matrix(-0.4,0,0,-0.4,-4,0)" + style="fill:#000080;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1459" /> + </marker> + <marker + style="overflow:visible" + id="marker1427" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Mend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.4,0,0,-0.4,-4,0)" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1425" /> + </marker> + <marker + style="overflow:visible" + id="Arrow1Mend" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Mend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.4,0,0,-0.4,-4,0)" + style="fill:#008000;fill-opacity:1;fill-rule:evenodd;stroke:#008000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1142" /> + </marker> + <marker + style="overflow:visible" + id="marker1119" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1117" /> + </marker> + <marker + style="overflow:visible" + id="marker1097" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#ff00ff;fill-opacity:1;fill-rule:evenodd;stroke:#ff00ff;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1095" /> + </marker> + <marker + style="overflow:visible" + id="marker1063" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000080;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1061" /> + </marker> + <marker + style="overflow:visible" + id="marker1025" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1023" /> + </marker> + <marker + style="overflow:visible" + id="marker951" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#008000;fill-opacity:1;fill-rule:evenodd;stroke:#008000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path949" /> + </marker> + <marker + style="overflow:visible" + id="marker941" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path939" /> + </marker> + <marker + style="overflow:visible" + id="marker871" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path869" /> + </marker> + <marker + style="overflow:visible" + id="marker1121" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1119" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1" + inkscape:cx="408" + inkscape:cy="330.5" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + units="px" + width="1000px" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + showguides="false" + fit-margin-top="10" + fit-margin-left="10" + fit-margin-right="10" + fit-margin-bottom="10" /> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-28.419477,-56.383514)"> + <path + style="fill:none;stroke:#000000;stroke-width:1.30108;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1121)" + d="M 93.063111,88.297429 405.71371,400.94806" + id="path829" /> + <path + style="fill:none;stroke:#000000;stroke-width:1.30108;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker871)" + d="M 406.50688,87.557219 93.856281,400.20785" + id="path867" /> + <text + xml:space="preserve" + style="font-size:20.8173px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:1.30108" + x="144.9722" + y="193.51253" + id="text909"><tspan + sodipodi:role="line" + id="tspan907" + x="144.9722" + y="193.51253" + style="stroke-width:1.30108">left</tspan></text> + <text + xml:space="preserve" + style="font-size:20.8173px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:1.30108" + x="317.59818" + y="190.99515" + id="text913"><tspan + sodipodi:role="line" + id="tspan911" + x="317.59818" + y="190.99515" + style="stroke-width:1.30108">right</tspan></text> + <path + style="fill:none;stroke:#008000;stroke-width:1.30108px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker951)" + d="M 406.50688,87.557219 93.063111,88.297429" + id="path995" /> + <path + style="fill:none;stroke:#ff0000;stroke-width:1.30108px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1025)" + d="M 406.50688,87.557219 405.71371,400.94806" + id="path1021" /> + <text + xml:space="preserve" + style="font-size:20.8173px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#008000;stroke-width:1.30108" + x="238.57541" + y="82.199783" + id="text1047"><tspan + sodipodi:role="line" + id="tspan1045" + x="238.57541" + y="82.199783" + style="stroke-width:1.30108">sdiff1</tspan></text> + <text + xml:space="preserve" + style="font-size:20.8173px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000;stroke-width:1.30108" + x="413.12622" + y="252.7749" + id="text1051"><tspan + sodipodi:role="line" + id="tspan1049" + x="413.12622" + y="252.7749" + style="stroke-width:1.30108">ediff1</tspan></text> + <path + style="fill:none;stroke:#000080;stroke-width:1.30108px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1063)" + d="m 93.063111,86.817009 313.443769,0.74021" + id="path1059" /> + <text + xml:space="preserve" + style="font-size:20.8173px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000080;stroke:none;stroke-width:1.30108" + x="238.3334" + y="108.95457" + id="text1091"><tspan + sodipodi:role="line" + id="tspan1089" + x="238.3334" + y="108.95457" + style="stroke-width:1.30108">sdiff2</tspan></text> + <path + style="fill:none;stroke:#ff00ff;stroke-width:1.30108px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1097)" + d="m 93.063111,86.817009 0.79317,313.390841" + id="path1093" /> + <text + xml:space="preserve" + style="font-size:20.8173px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff00ff;stroke-width:1.30108" + x="33.270866" + y="248.48138" + id="text1113"><tspan + sodipodi:role="line" + id="tspan1111" + x="33.270866" + y="248.48138" + style="stroke-width:1.30108">ediff2</tspan></text> + <path + style="fill:none;stroke:#008000;stroke-width:1.30108px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)" + d="m 370.3101,124.92022 c 0,0 -30.07994,-6.6184 -24.16392,-37.112011" + id="path1115" /> + <text + xml:space="preserve" + style="font-size:11.4862px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#008000;stroke-width:0.717889" + x="318.56375" + y="122.53162" + id="text1421"><tspan + sodipodi:role="line" + id="tspan1419" + x="318.56375" + y="122.53162" + style="stroke-width:0.717889">srDot</tspan></text> + <path + style="fill:none;stroke:#ff0000;stroke-width:1.30108px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1427)" + d="m 370.3101,124.92022 c 0,0 14.56784,23.53419 36.68947,13.21591" + id="path1423" /> + <text + xml:space="preserve" + style="font-size:11.4862px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000;stroke-width:0.717889" + x="364.55103" + y="153.52997" + id="text1449"><tspan + sodipodi:role="line" + id="tspan1447" + x="364.55103" + y="153.52997" + style="fill:#ff0000;stroke-width:0.717889">erDot</tspan></text> + <path + style="fill:none;stroke:#000080;stroke-width:1.30108px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1461)" + d="m 130.61307,126.17116 c 0,0 23.53418,-14.56785 13.2159,-36.689471" + id="path1457" /> + <path + style="fill:none;stroke:#ff00ff;stroke-width:1.30108px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1503)" + d="m 130.61307,126.17116 c 0,0 -6.61841,30.07994 -37.112019,24.16392" + id="path1499" /> + <text + xml:space="preserve" + style="font-size:11.4862px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000080;stroke-width:0.717889" + x="151.19702" + y="125.0546" + id="text1537"><tspan + sodipodi:role="line" + id="tspan1535" + x="151.19702" + y="125.0546" + style="fill:#000080;stroke-width:0.717889">slDot</tspan></text> + <text + xml:space="preserve" + style="font-size:11.4862px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff00ff;stroke-width:0.717889" + x="111.54098" + y="163.82812" + id="text1541"><tspan + sodipodi:role="line" + id="tspan1539" + x="111.54098" + y="163.82812" + style="fill:#ff00ff;stroke-width:0.717889">elDot</tspan></text> + </g> +</svg> diff --git a/doc/livarot-images/intersection-point-calculation.svg b/doc/livarot-images/intersection-point-calculation.svg new file mode 100644 index 0000000..d52f533 --- /dev/null +++ b/doc/livarot-images/intersection-point-calculation.svg @@ -0,0 +1,1473 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="648.50635" + height="939.43402" + viewBox="0 0 648.50635 939.43402" + version="1.1" + id="svg6" + inkscape:version="1.1-dev (e41a0c7bf5, 2020-08-24, custom)" + sodipodi:docname="intersection-point-calculation.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"> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="marker3383" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path3381" /> + </marker> + <marker + style="overflow:visible" + id="marker3319" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Mend" + inkscape:isstock="true"> + <path + transform="matrix(-0.4,0,0,-0.4,-4,0)" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path3317" /> + </marker> + <marker + style="overflow:visible" + id="marker3173" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path3171" /> + </marker> + <marker + style="overflow:visible" + id="marker3163" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path3161" /> + </marker> + <marker + style="overflow:visible" + id="marker3153" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path3151" /> + </marker> + <marker + style="overflow:visible" + id="marker3143" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path3141" /> + </marker> + <marker + style="overflow:visible" + id="marker3133" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Mend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.4,0,0,-0.4,-4,0)" + style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path3131" /> + </marker> + <marker + style="overflow:visible" + id="marker3123" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Mend" + inkscape:isstock="true"> + <path + transform="matrix(-0.4,0,0,-0.4,-4,0)" + style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path3121" /> + </marker> + <marker + style="overflow:visible" + id="marker2981" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path2979" /> + </marker> + <marker + style="overflow:visible" + id="marker2923" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Mend" + inkscape:isstock="true"> + <path + transform="matrix(-0.4,0,0,-0.4,-4,0)" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path2921" /> + </marker> + <marker + style="overflow:visible" + id="marker2789" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path2787" /> + </marker> + <marker + style="overflow:visible" + id="marker2779" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path2777" /> + </marker> + <marker + style="overflow:visible" + id="marker2769" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path2767" /> + </marker> + <marker + style="overflow:visible" + id="marker2759" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path2757" /> + </marker> + <marker + style="overflow:visible" + id="marker2749" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Mend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.4,0,0,-0.4,-4,0)" + style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path2747" /> + </marker> + <marker + style="overflow:visible" + id="marker2739" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Mend" + inkscape:isstock="true"> + <path + transform="matrix(-0.4,0,0,-0.4,-4,0)" + style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path2737" /> + </marker> + <marker + style="overflow:visible" + id="marker2291" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path2289" /> + </marker> + <marker + style="overflow:visible" + id="marker2281" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path2279" /> + </marker> + <marker + style="overflow:visible" + id="marker2271" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path2269" /> + </marker> + <marker + style="overflow:visible" + id="marker2261" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path2259" /> + </marker> + <marker + style="overflow:visible" + id="marker2251" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Mend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.4,0,0,-0.4,-4,0)" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path2249" /> + </marker> + <marker + style="overflow:visible" + id="marker2241" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Mend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.4,0,0,-0.4,-4,0)" + style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path2239" /> + </marker> + <marker + style="overflow:visible" + id="marker2099" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path2097" /> + </marker> + <marker + style="overflow:visible" + id="marker1873" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1871" /> + </marker> + <marker + style="overflow:visible" + id="marker1863" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1861" /> + </marker> + <marker + style="overflow:visible" + id="marker1853" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1851" /> + </marker> + <marker + style="overflow:visible" + id="marker1843" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1841" /> + </marker> + <marker + style="overflow:visible" + id="marker1833" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Mend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.4,0,0,-0.4,-4,0)" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1831" /> + </marker> + <marker + style="overflow:visible" + id="marker1823" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Mend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.4,0,0,-0.4,-4,0)" + style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1821" /> + </marker> + <marker + style="overflow:visible" + id="marker1703" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Mend" + inkscape:isstock="true"> + <path + transform="matrix(-0.4,0,0,-0.4,-4,0)" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1701" /> + </marker> + <marker + style="overflow:visible" + id="marker1509" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1507" /> + </marker> + <marker + style="overflow:visible" + id="marker1499" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1497" /> + </marker> + <marker + style="overflow:visible" + id="marker1489" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1487" /> + </marker> + <marker + style="overflow:visible" + id="marker1479" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1477" /> + </marker> + <marker + style="overflow:visible" + id="marker1469" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Mend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.4,0,0,-0.4,-4,0)" + style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1467" /> + </marker> + <marker + style="overflow:visible" + id="marker1459" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Mend" + inkscape:isstock="true"> + <path + transform="matrix(-0.4,0,0,-0.4,-4,0)" + style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1457" /> + </marker> + <marker + style="overflow:visible" + id="marker1299" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Mend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.4,0,0,-0.4,-4,0)" + style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1297" /> + </marker> + <marker + style="overflow:visible" + id="marker1275" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Mend" + inkscape:isstock="true"> + <path + transform="matrix(-0.4,0,0,-0.4,-4,0)" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1273" /> + </marker> + <marker + style="overflow:visible" + id="Arrow1Mend" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Mend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.4,0,0,-0.4,-4,0)" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path988" /> + </marker> + <marker + style="overflow:visible" + id="marker919" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path917" /> + </marker> + <marker + style="overflow:visible" + id="marker889" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path887" /> + </marker> + <marker + style="overflow:visible" + id="marker851" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path849" /> + </marker> + <marker + style="overflow:visible" + id="marker1121" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1119" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.59005547" + inkscape:cx="106.76962" + inkscape:cy="509.27416" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + units="px" + width="1000px" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + showguides="false" + fit-margin-top="10" + fit-margin-left="10" + fit-margin-right="10" + fit-margin-bottom="10" /> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-22.043676,-14.197386)"> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1121)" + d="M 135.16769,56.686072 196.0682,294.44534" + id="path829" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="185.42911" + y="234.72577" + id="text845"><tspan + sodipodi:role="line" + id="tspan843" + x="185.42911" + y="234.72577">left</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker851)" + d="M 293.03344,81.589571 58.271003,267.0276" + id="path847" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="230.39577" + y="146.69347" + id="text867"><tspan + sodipodi:role="line" + id="tspan865" + x="230.39577" + y="146.69347">right</tspan></text> + <path + style="fill:none;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker889)" + d="M 135.16769,56.686072 293.03344,81.589571" + id="path885" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker919)" + d="M 135.16769,56.686072 58.271003,267.0276" + id="path915" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000;stroke:none" + x="198.6951" + y="64.560463" + id="text935"><tspan + sodipodi:role="line" + id="tspan933" + x="198.6951" + y="64.560463">sl</tspan></text> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#0000ff" + x="79.493889" + y="153.75989" + id="text939"><tspan + sodipodi:role="line" + id="tspan937" + x="79.493889" + y="153.75989">el</tspan></text> + <path + style="fill:none;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)" + d="m 142.09143,84.020601 c 0,0 14.51945,1.80683 23.00678,-20.183239" + id="path977" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1299)" + d="m 142.09143,84.020601 c 0,0 -6.1903,8.60689 -15.96596,4.08512" + id="path1295" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:11.9514px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000;stroke-width:0.746963" + x="159.90778" + y="89.113739" + id="text1333"><tspan + sodipodi:role="line" + id="tspan1331" + x="159.90778" + y="89.113739" + style="fill:#ff0000;stroke-width:0.746963">θ<tspan + style="font-size:7.76841px;baseline-shift:sub;fill:#ff0000;stroke-width:0.746963" + id="tspan1335">sl</tspan></tspan></text> + <text + xml:space="preserve" + style="font-size:11.9514px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#0000ff;stroke-width:0.746963" + x="126.4185" + y="104.74226" + id="text1341"><tspan + sodipodi:role="line" + id="tspan1339" + x="126.4185" + y="104.74226" + style="fill:#0000ff;stroke-width:0.746963">θ<tspan + style="font-size:65%;baseline-shift:sub;fill:#0000ff" + id="tspan1343">el</tspan></tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1509)" + d="M 555.72436,55.765056 538.48422,278.20039" + id="path1417" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="448.40778" + y="141.83841" + id="text1421"><tspan + sodipodi:role="line" + id="tspan1419" + x="448.40778" + y="141.83841">left</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1499)" + d="M 435.31866,95.249185 659.02551,271.62511" + id="path1423" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="550.3689" + y="156.31856" + id="text1427"><tspan + sodipodi:role="line" + id="tspan1425" + x="550.3689" + y="156.31856">right</tspan></text> + <path + style="fill:none;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1489)" + d="M 555.72436,55.765056 659.02551,271.62511" + id="path1429" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1479)" + d="M 555.72436,55.765056 435.31866,95.249185" + id="path1431" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000;stroke:none" + x="613.67993" + y="161.7193" + id="text1435"><tspan + sodipodi:role="line" + id="tspan1433" + x="613.67993" + y="161.7193">er</tspan></text> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#0000ff" + x="482.22571" + y="71.412544" + id="text1439"><tspan + sodipodi:role="line" + id="tspan1437" + x="482.22571" + y="71.412544">sr</tspan></text> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1469)" + d="m 553.31786,87.823815 c 0,0 -26.42952,2.62275 -25.4053,-20.504977" + id="path1673" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1703)" + d="m 553.31786,87.823815 c 0,0 6.44571,7.42495 15.41911,0.0755" + id="path1699" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:11.9514px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#0000ff;stroke-width:0.746963" + x="522.59601" + y="93.852287" + id="text1733"><tspan + sodipodi:role="line" + id="tspan1731" + x="522.59601" + y="93.852287" + style="fill:#0000ff;stroke-width:0.746963">θ<tspan + style="font-size:65%;baseline-shift:sub" + id="tspan1735">sr</tspan></tspan></text> + <text + xml:space="preserve" + style="font-size:11.9514px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000;stroke-width:0.746963" + x="557.55469" + y="106.46495" + id="text1741"><tspan + sodipodi:role="line" + id="tspan1739" + x="557.55469" + y="106.46495" + style="fill:#ff0000;stroke-width:0.746963">θ<tspan + style="font-size:65%;baseline-shift:sub;fill:#ff0000" + id="tspan1743">er</tspan></tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1873)" + d="m 148.06507,384.08974 60.90051,237.75927" + id="path1781" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="198.32649" + y="562.12946" + id="text1785"><tspan + sodipodi:role="line" + id="tspan1783" + x="198.32649" + y="562.12946">left</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1863)" + d="M 305.93082,408.99324 71.168384,594.43127" + id="path1787" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="243.29315" + y="474.09714" + id="text1791"><tspan + sodipodi:role="line" + id="tspan1789" + x="243.29315" + y="474.09714">right</tspan></text> + <path + style="fill:none;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1853)" + d="m 148.06507,384.08974 157.86575,24.9035" + id="path1793" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1843)" + d="M 148.06507,384.08974 71.168384,594.43127" + id="path1795" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000;stroke:none" + x="211.59248" + y="391.96414" + id="text1799"><tspan + sodipodi:role="line" + id="tspan1797" + x="211.59248" + y="391.96414">sl</tspan></text> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#0000ff" + x="92.391266" + y="481.16354" + id="text1803"><tspan + sodipodi:role="line" + id="tspan1801" + x="92.391266" + y="481.16354">el</tspan></text> + <path + style="fill:none;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1833)" + d="m 154.98881,411.42427 c 0,0 14.51945,1.80683 23.00678,-20.18324" + id="path1805" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1823)" + d="m 154.98881,411.42427 c 0,0 -6.1903,8.60689 -15.96596,4.08512" + id="path1807" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:11.9514px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000;stroke-width:0.746963" + x="172.80516" + y="416.5174" + id="text1813"><tspan + sodipodi:role="line" + id="tspan1811" + x="172.80516" + y="416.5174" + style="fill:#ff0000;stroke-width:0.746963">θ<tspan + style="font-size:7.76841px;baseline-shift:sub;fill:#ff0000;stroke-width:0.746963" + id="tspan1809">sl</tspan></tspan></text> + <text + xml:space="preserve" + style="font-size:11.9514px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#0000ff;stroke-width:0.746963" + x="139.31589" + y="432.14594" + id="text1819"><tspan + sodipodi:role="line" + id="tspan1817" + x="139.31589" + y="432.14594" + style="fill:#0000ff;stroke-width:0.746963">θ<tspan + style="font-size:65%;baseline-shift:sub;fill:#0000ff" + id="tspan1815">el</tspan></tspan></text> + <path + style="fill:none;stroke:#ff0000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1, 1;stroke-dashoffset:0;stroke-opacity:1" + d="M 163.75575,445.79773 303.57298,409.63644" + id="path1995" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1, 1;stroke-dashoffset:0;stroke-opacity:1" + d="M 193.56436,561.78721 71.168384,594.43127" + id="path2043" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:11.9514px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#0000ff;stroke-width:0.746963" + x="-10.587813" + y="607.22388" + id="text2129" + transform="rotate(-11.92579)"><tspan + sodipodi:role="line" + id="tspan2127" + x="-10.587813" + y="607.22388" + style="fill:#0000ff;stroke-width:0.746963">elsin(θ<tspan + style="font-size:65%;baseline-shift:sub" + id="tspan2131">el</tspan>)</tspan></text> + <text + xml:space="preserve" + style="font-size:11.9514px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000;stroke-width:0.746963" + x="69.625122" + y="487.75339" + id="text2137" + transform="rotate(-15.943369)"><tspan + sodipodi:role="line" + id="tspan2135" + x="69.625122" + y="487.75339" + style="fill:#ff0000;stroke-width:0.746963">slsin(θ<tspan + style="font-size:65%;baseline-shift:sub" + id="tspan2141">sl</tspan>)</tspan></text> + <path + style="fill:none;stroke:#0000ff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1, 1;stroke-dashoffset:0;stroke-opacity:1" + d="M 163.75575,445.79773 41.359774,478.44179" + id="path2143" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker2291)" + d="M 496.48889,385.98564 557.3894,623.74491" + id="path2181" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="546.75031" + y="564.02533" + id="text2185"><tspan + sodipodi:role="line" + id="tspan2183" + x="546.75031" + y="564.02533">left</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker2281)" + d="M 654.35464,410.88914 489.25291,533.09623" + id="path2187" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="591.71692" + y="475.99301" + id="text2191"><tspan + sodipodi:role="line" + id="tspan2189" + x="591.71692" + y="475.99301">right</tspan></text> + <path + style="fill:none;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker2271)" + d="m 496.48889,385.98564 157.86575,24.9035" + id="path2193" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker2261)" + d="m 496.48889,385.98564 -7.23598,147.11059" + id="path2195" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000;stroke:none" + x="560.0163" + y="393.86002" + id="text2199"><tspan + sodipodi:role="line" + id="tspan2197" + x="560.0163" + y="393.86002">sl</tspan></text> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#0000ff" + x="473.11127" + y="477.11063" + id="text2203"><tspan + sodipodi:role="line" + id="tspan2201" + x="473.11127" + y="477.11063">el</tspan></text> + <path + style="fill:none;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker2251)" + d="m 503.41263,413.32017 c 0,0 14.51945,1.80683 23.00678,-20.18324" + id="path2205" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker2241)" + d="m 503.41263,413.32017 c 0,0 2.39249,9.48133 -7.38317,4.95956" + id="path2207" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:11.9514px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000;stroke-width:0.746963" + x="521.22894" + y="418.41327" + id="text2213"><tspan + sodipodi:role="line" + id="tspan2211" + x="521.22894" + y="418.41327" + style="fill:#ff0000;stroke-width:0.746963">θ<tspan + style="font-size:7.76841px;baseline-shift:sub;fill:#ff0000;stroke-width:0.746963" + id="tspan2209">sl</tspan></tspan></text> + <text + xml:space="preserve" + style="font-size:11.9514px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#0000ff;stroke-width:0.746963" + x="495.46582" + y="446.24545" + id="text2219"><tspan + sodipodi:role="line" + id="tspan2217" + x="495.46582" + y="446.24545" + style="fill:#0000ff;stroke-width:0.746963">θ<tspan + style="font-size:65%;baseline-shift:sub;fill:#0000ff" + id="tspan2215">el</tspan></tspan></text> + <path + style="fill:none;stroke:#ff0000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1, 1;stroke-dashoffset:0;stroke-opacity:1" + d="M 512.17957,447.69363 651.9968,411.53234" + id="path2221" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1, 1;stroke-dashoffset:0;stroke-opacity:1" + d="m 532.14415,522.28889 -42.89124,10.80734" + id="path2223" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:11.9514px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#0000ff;stroke-width:0.746963" + x="358.86017" + y="638.76202" + id="text2229" + transform="rotate(-11.92579)"><tspan + sodipodi:role="line" + id="tspan2227" + x="358.86017" + y="638.76202" + style="fill:#0000ff;stroke-width:0.746963">elsin(θ<tspan + style="font-size:65%;baseline-shift:sub" + id="tspan2225">el</tspan>)</tspan></text> + <text + xml:space="preserve" + style="font-size:11.9514px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000;stroke-width:0.746963" + x="404.12558" + y="585.28394" + id="text2235" + transform="rotate(-15.943369)"><tspan + sodipodi:role="line" + id="tspan2233" + x="404.12558" + y="585.28394" + style="fill:#ff0000;stroke-width:0.746963">slsin(θ<tspan + style="font-size:65%;baseline-shift:sub" + id="tspan2231">sl</tspan>)</tspan></text> + <path + style="fill:none;stroke:#0000ff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1, 1;stroke-dashoffset:0;stroke-opacity:1" + d="m 512.17957,447.69363 -42.89124,10.80734" + id="path2425" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker2789)" + d="m 151.07875,697.80999 60.90051,237.75927" + id="path2679" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="138.66779" + y="765.84698" + id="text2683"><tspan + sodipodi:role="line" + id="tspan2681" + x="138.66779" + y="765.84698">left</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker2779)" + d="M 308.9445,722.71349 74.182065,908.15152" + id="path2685" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="87.225952" + y="865.48138" + id="text2689"><tspan + sodipodi:role="line" + id="tspan2687" + x="87.225952" + y="865.48138">right</tspan></text> + <path + style="fill:none;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker2769)" + d="M 308.9445,722.71349 211.97926,935.56926" + id="path2691" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker2759)" + d="M 308.9445,722.71349 151.07875,697.80999" + id="path2693" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000;stroke:none" + x="272.24536" + y="832.289" + id="text2697"><tspan + sodipodi:role="line" + id="tspan2695" + x="272.24536" + y="832.289">er</tspan></text> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#0000ff" + x="217.12143" + y="704.2002" + id="text2701"><tspan + sodipodi:role="line" + id="tspan2699" + x="217.12143" + y="704.2002">sr</tspan></text> + <text + xml:space="preserve" + style="font-size:11.9514px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000;stroke-width:0.746963" + x="268.44763" + y="769.25641" + id="text2711"><tspan + sodipodi:role="line" + id="tspan2709" + x="268.44763" + y="769.25641" + style="fill:#ff0000;stroke-width:0.746963">θ<tspan + style="font-size:65%;baseline-shift:sub" + id="tspan2969">er</tspan></tspan></text> + <text + xml:space="preserve" + style="font-size:11.9514px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#0000ff;stroke-width:0.746963" + x="255.62274" + y="737.24817" + id="text2717"><tspan + sodipodi:role="line" + id="tspan2715" + x="255.62274" + y="737.24817" + style="fill:#0000ff;stroke-width:0.746963">θ<tspan + style="font-size:65%;baseline-shift:sub" + id="tspan2967">sr</tspan></tspan></text> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker2749)" + d="m 281.64851,744.21016 c 0,0 -18.3076,-9.79274 -6.56203,-24.96139" + id="path2911" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker2923)" + d="m 281.64851,744.21016 c 0,0 -7.26638,14.11109 8.4247,15.05009" + id="path2919" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#ff0000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1, 1;stroke-dashoffset:0;stroke-opacity:1" + d="m 144.96677,852.44629 67.01249,83.12297" + id="path2977" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1, 1;stroke-dashoffset:0;stroke-opacity:1" + d="m 151.07875,697.80999 72.55876,91.45786" + id="path3007" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:11.9514px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#0000ff;stroke-width:0.746963" + x="673.98969" + y="333.04694" + id="text3013" + transform="rotate(49.85623)"><tspan + sodipodi:role="line" + id="tspan3011" + x="673.98969" + y="333.04694" + style="fill:#0000ff;stroke-width:0.746963">srsin(θ<tspan + style="font-size:65%;baseline-shift:sub" + id="tspan3015">sr</tspan>)</tspan></text> + <text + xml:space="preserve" + style="font-size:11.9514px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000;stroke-width:0.746963" + x="801.20343" + y="389.59534" + id="text3021" + transform="rotate(54.217931)"><tspan + sodipodi:role="line" + id="tspan3019" + x="801.20343" + y="389.59534" + style="fill:#ff0000;stroke-width:0.746963">ersin(θ<tspan + style="font-size:65%;baseline-shift:sub" + id="tspan3023">er</tspan>)</tspan></text> + <path + style="fill:none;stroke:#ff0000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1, 1;stroke-dashoffset:0;stroke-opacity:1" + d="M 223.63751,789.26785 290.65,872.39082" + id="path3025" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker3173)" + d="m 495.48037,703.99148 60.90051,237.75927" + id="path3063" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="484.33508" + y="780.65839" + id="text3067"><tspan + sodipodi:role="line" + id="tspan3065" + x="484.33508" + y="780.65839">left</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker3163)" + d="M 653.34612,728.89498 488.24439,851.10207" + id="path3069" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="575.08008" + y="799.73828" + id="text3073"><tspan + sodipodi:role="line" + id="tspan3071" + x="575.08008" + y="799.73828">right</tspan></text> + <path + style="fill:none;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker3153)" + d="M 653.34612,728.89498 556.38088,941.75075" + id="path3075" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker3143)" + d="M 653.34612,728.89498 495.48037,703.99148" + id="path3077" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000;stroke:none" + x="617.52051" + y="845.56146" + id="text3081"><tspan + sodipodi:role="line" + id="tspan3079" + x="617.52051" + y="845.56146">er</tspan></text> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#0000ff" + x="569.09357" + y="709.5929" + id="text3085"><tspan + sodipodi:role="line" + id="tspan3083" + x="569.09357" + y="709.5929">sr</tspan></text> + <text + xml:space="preserve" + style="font-size:11.9514px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#0000ff;stroke-width:0.746963" + x="595.19434" + y="747.26141" + id="text3095"><tspan + sodipodi:role="line" + id="tspan3093" + x="595.19434" + y="747.26141" + style="fill:#0000ff;stroke-width:0.746963">θ<tspan + style="font-size:65%;baseline-shift:sub;fill:#0000ff" + id="tspan3339">sr</tspan></tspan></text> + <text + xml:space="preserve" + style="font-size:11.9514px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000;stroke-width:0.746963" + x="612.15448" + y="773.90698" + id="text3101"><tspan + sodipodi:role="line" + id="tspan3099" + x="612.15448" + y="773.90698" + style="fill:#ff0000;stroke-width:0.746963">θ<tspan + style="font-size:65%;baseline-shift:sub;fill:#ff0000" + id="tspan3341">er</tspan></tspan></text> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker3133)" + d="m 621.96485,752.41567 c 0,0 -18.95544,-7.75067 -6.38961,-27.19956" + id="path3307" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker3319)" + d="m 621.96485,752.41567 c 0,0 -1.29219,14.56104 14.97198,11.96259" + id="path3315" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1, 1;stroke-dashoffset:0;stroke-opacity:1" + d="M 559.79973,798.02066 495.48037,703.99148" + id="path3379" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#ff0000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1, 1;stroke-dashoffset:0;stroke-opacity:1" + d="M 556.38088,941.75075 492.06152,847.72157" + id="path3409" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:11.9514px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#0000ff;stroke-width:0.746963" + x="903.65625" + y="76.356575" + id="text3415" + transform="rotate(49.85623)"><tspan + sodipodi:role="line" + id="tspan3413" + x="903.65625" + y="76.356575" + style="fill:#0000ff;stroke-width:0.746963">srsin(θ<tspan + style="font-size:65%;baseline-shift:sub" + id="tspan3411">sr</tspan>)</tspan></text> + <text + xml:space="preserve" + style="font-size:11.9514px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000;stroke-width:0.746963" + x="1010.1659" + y="113.25944" + id="text3421" + transform="rotate(54.217931)"><tspan + sodipodi:role="line" + id="tspan3419" + x="1010.1659" + y="113.25944" + style="fill:#ff0000;stroke-width:0.746963">ersin(θ<tspan + style="font-size:65%;baseline-shift:sub" + id="tspan3417">er</tspan>)</tspan></text> + <path + style="fill:none;stroke:#ff0000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1, 1;stroke-dashoffset:0;stroke-opacity:1" + d="M 624.11909,892.04984 559.79973,798.02066" + id="path3423" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="29.426485" + y="44.457829" + id="text3443"><tspan + sodipodi:role="line" + id="tspan3441" + x="29.426485" + y="44.457829" + style="font-size:26.6667px">Fig 0</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="359.70151" + y="44.457829" + id="text3447"><tspan + sodipodi:role="line" + id="tspan3445" + x="359.70151" + y="44.457829" + style="font-size:26.6667px">Fig 1</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="41.487854" + y="367.78854" + id="text3451"><tspan + sodipodi:role="line" + id="tspan3449" + x="41.487854" + y="367.78854" + style="font-size:26.6667px">Fig 2</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="371.76288" + y="367.78854" + id="text3455"><tspan + sodipodi:role="line" + id="tspan3453" + x="371.76288" + y="367.78854" + style="font-size:26.6667px">Fig 3</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="50.613743" + y="674.32947" + id="text3459"><tspan + sodipodi:role="line" + id="tspan3457" + x="50.613743" + y="674.32947" + style="font-size:26.6667px">Fig 4</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="380.88876" + y="674.32947" + id="text3463"><tspan + sodipodi:role="line" + id="tspan3461" + x="380.88876" + y="674.32947" + style="font-size:26.6667px">Fig 5</tspan></text> + </g> +</svg> diff --git a/doc/livarot-images/lastChgtPt-from-avance.svg b/doc/livarot-images/lastChgtPt-from-avance.svg new file mode 100644 index 0000000..6eb93cc --- /dev/null +++ b/doc/livarot-images/lastChgtPt-from-avance.svg @@ -0,0 +1,146 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="332.26663" + height="300.29181" + viewBox="0 0 332.26663 300.29181" + version="1.1" + id="svg6" + inkscape:version="1.1-dev (80318448fe, 2020-08-23, custom)" + sodipodi:docname="lastChgtPt-from-avance.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"> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="marker883" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path881" /> + </marker> + <marker + style="overflow:visible" + id="marker1121" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1119" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1.5020252" + inkscape:cx="173.09963" + inkscape:cy="156.12255" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + units="px" + width="1000px" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + fit-margin-top="10" + fit-margin-left="10" + fit-margin-right="10" + fit-margin-bottom="10" /> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-103.57619,-121.75057)"> + <circle + style="fill:#000000;fill-rule:evenodd;stroke-width:0.00465015;stroke-linecap:square" + id="path829" + cx="168.05617" + cy="182.92595" + r="14.716245" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke-width:0.00465015;stroke-linecap:square" + id="circle831" + cx="263.57138" + cy="182.92595" + r="14.716245" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke-width:0.00465015;stroke-linecap:square" + id="circle833" + cx="359.08658" + cy="182.92595" + r="14.716245" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke-width:0.00465015;stroke-linecap:square" + id="circle835" + cx="167.10698" + cy="267.31601" + r="14.716245" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke-width:0.00465015;stroke-linecap:square" + id="circle837" + cx="262.62219" + cy="267.31601" + r="14.716245" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke-width:0.00465015;stroke-linecap:square" + id="circle839" + cx="358.13739" + cy="267.31601" + r="14.716245" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke-width:0.00465015;stroke-linecap:square" + id="circle841" + cx="168.34859" + cy="352.23386" + r="14.716245" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="210.49413" + y="377.92395" + id="text865"><tspan + sodipodi:role="line" + id="tspan863" + x="210.49413" + y="377.92395">lastPointNo</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1121)" + d="m 230.20665,355.48728 c 0,0 11.64353,-39.00475 -41.64015,-17.29232" + id="path867" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="260.49899" + y="314.62433" + id="text877"><tspan + sodipodi:role="line" + id="tspan875" + x="260.49899" + y="314.62433">lastChgtPt</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker883)" + d="m 244.02337,313.50571 c 0,0 -38.11809,-8.29918 -55.70413,-31.97461" + id="path879" /> + </g> +</svg> diff --git a/doc/livarot-images/problematic-intersection-case.svg b/doc/livarot-images/problematic-intersection-case.svg new file mode 100644 index 0000000..d47b474 --- /dev/null +++ b/doc/livarot-images/problematic-intersection-case.svg @@ -0,0 +1,185 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="593.25421" + height="414.70798" + viewBox="0 0 593.25421 414.70798" + version="1.1" + id="svg6" + inkscape:version="1.1-dev (e41a0c7bf5, 2020-08-24, custom)" + sodipodi:docname="problematic-intersection-case.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"> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="marker973" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path971" /> + </marker> + <marker + style="overflow:visible" + id="marker963" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path961" /> + </marker> + <marker + style="overflow:visible" + id="marker859" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path857" /> + </marker> + <marker + style="overflow:visible" + id="marker1121" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1119" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.53409942" + inkscape:cx="-56.169318" + inkscape:cy="317.35665" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + units="px" + width="1000px" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + fit-margin-left="10" + fit-margin-top="10" + fit-margin-right="10" + fit-margin-bottom="10" /> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-172.41122,-63.625426)"> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1121)" + d="m 250.89042,81.406202 85.6937,319.813218" + id="path829" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker859)" + d="M 291.90829,238.05712 183.88162,144.92989" + id="path855" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="203.0696" + y="209.07495" + id="text887"><tspan + sodipodi:role="line" + id="tspan885" + x="203.0696" + y="209.07495">left</tspan></text> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="298.60837" + y="186.01599" + id="text891"><tspan + sodipodi:role="line" + id="tspan889" + x="298.60837" + y="186.01599">right</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker973)" + d="m 657.14458,73.754836 85.6937,319.813214" + id="path949" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker963)" + d="M 698.16245,230.40575 626.79513,357.48346" + id="path951" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="630.6897" + y="285.12833" + id="text955"><tspan + sodipodi:role="line" + id="tspan953" + x="630.6897" + y="285.12833">left</tspan></text> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="704.86255" + y="178.36462" + id="text959"><tspan + sodipodi:role="line" + id="tspan957" + x="704.86255" + y="178.36462">right</tspan></text> + <text + xml:space="preserve" + style="font-size:34.2668px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:2.14167" + x="205.33521" + y="467.84818" + id="text1029"><tspan + sodipodi:role="line" + id="tspan1027" + x="205.33521" + y="467.84818" + style="stroke-width:2.14167">lst > lEn</tspan></text> + <text + xml:space="preserve" + style="font-size:33.5599px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:2.09749" + x="617.29639" + y="459.41025" + id="text1033"><tspan + sodipodi:role="line" + id="tspan1031" + x="617.29639" + y="459.41025" + style="stroke-width:2.09749">lst < lEn</tspan></text> + </g> +</svg> diff --git a/doc/livarot-images/process-flat-to-convert.svg b/doc/livarot-images/process-flat-to-convert.svg new file mode 100644 index 0000000..ad11931 --- /dev/null +++ b/doc/livarot-images/process-flat-to-convert.svg @@ -0,0 +1,855 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="1500" + height="500" + viewBox="0 0 1500 500" + version="1.1" + id="svg6" + inkscape:version="1.1-dev (037b845d7b, 2020-08-19, custom)" + sodipodi:docname="process-flat-to-convert.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"> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="marker2838" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="TriangleOutL" + inkscape:isstock="true"> + <path + transform="scale(0.8)" + style="fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z " + id="path2836" /> + </marker> + <marker + style="overflow:visible" + id="marker2816" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="TriangleOutL" + inkscape:isstock="true"> + <path + transform="scale(0.8)" + style="fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z " + id="path2814" /> + </marker> + <marker + style="overflow:visible" + id="marker2764" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="TriangleOutL" + inkscape:isstock="true"> + <path + transform="scale(0.8)" + style="fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z " + id="path2762" /> + </marker> + <marker + style="overflow:visible" + id="marker2730" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="TriangleOutL" + inkscape:isstock="true"> + <path + transform="scale(0.8)" + style="fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z " + id="path2728" /> + </marker> + <marker + style="overflow:visible" + id="marker2714" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="TriangleOutL" + inkscape:isstock="true"> + <path + transform="scale(0.8)" + style="fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z " + id="path2712" /> + </marker> + <marker + style="overflow:visible" + id="marker2692" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="TriangleOutL" + inkscape:isstock="true"> + <path + transform="scale(0.8)" + style="fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z " + id="path2690" /> + </marker> + <marker + style="overflow:visible" + id="marker2676" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="TriangleOutL" + inkscape:isstock="true"> + <path + transform="scale(0.8)" + style="fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z " + id="path2674" /> + </marker> + <marker + style="overflow:visible" + id="marker2660" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="TriangleOutL" + inkscape:isstock="true"> + <path + transform="scale(0.8)" + style="fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z " + id="path2658" /> + </marker> + <marker + style="overflow:visible" + id="marker2644" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="TriangleOutL" + inkscape:isstock="true"> + <path + transform="scale(0.8)" + style="fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z " + id="path2642" /> + </marker> + <marker + style="overflow:visible" + id="marker2446" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Mstart" + inkscape:isstock="true"> + <path + transform="scale(0.4) translate(10,0)" + style="fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path2444" /> + </marker> + <marker + style="overflow:visible" + id="marker2436" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Mstart" + inkscape:isstock="true"> + <path + transform="scale(0.4) translate(10,0)" + style="fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path2434" /> + </marker> + <marker + style="overflow:visible" + id="marker2426" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Mstart" + inkscape:isstock="true"> + <path + transform="scale(0.4) translate(10,0)" + style="fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path2424" /> + </marker> + <marker + style="overflow:visible" + id="marker2416" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Mstart" + inkscape:isstock="true"> + <path + transform="scale(0.4) translate(10,0)" + style="fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path2414" /> + </marker> + <marker + style="overflow:visible" + id="marker2406" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Mstart" + inkscape:isstock="true"> + <path + transform="scale(0.4) translate(10,0)" + style="fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path2404" /> + </marker> + <marker + style="overflow:visible" + id="marker2396" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Mstart" + inkscape:isstock="true"> + <path + transform="scale(0.4) translate(10,0)" + style="fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path2394" /> + </marker> + <marker + style="overflow:visible" + id="marker2386" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Mstart" + inkscape:isstock="true"> + <path + transform="scale(0.4) translate(10,0)" + style="fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path2384" /> + </marker> + <marker + style="overflow:visible" + id="marker2376" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Mstart" + inkscape:isstock="true"> + <path + transform="scale(0.4) translate(10,0)" + style="fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path2374" /> + </marker> + <marker + style="overflow:visible" + id="marker2040" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="TriangleOutL" + inkscape:isstock="true"> + <path + transform="scale(0.8)" + style="fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z " + id="path2038" /> + </marker> + <marker + style="overflow:visible" + id="marker2018" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="TriangleOutL" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.8)" + style="fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z " + id="path2016" /> + </marker> + <marker + style="overflow:visible" + id="marker1960" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="TriangleOutL" + inkscape:isstock="true"> + <path + transform="scale(0.8)" + style="fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z " + id="path1958" /> + </marker> + <marker + style="overflow:visible" + id="marker1950" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="TriangleOutL" + inkscape:isstock="true"> + <path + transform="scale(0.8)" + style="fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z " + id="path1948" /> + </marker> + <marker + style="overflow:visible" + id="marker1940" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="TriangleOutL" + inkscape:isstock="true"> + <path + transform="scale(0.8)" + style="fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z " + id="path1938" /> + </marker> + <marker + style="overflow:visible" + id="marker1930" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="TriangleOutL" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.8)" + style="fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z " + id="path1928" /> + </marker> + <marker + style="overflow:visible" + id="marker1920" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="TriangleOutL" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.8)" + style="fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z " + id="path1918" /> + </marker> + <marker + style="overflow:visible" + id="marker1910" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="TriangleOutL" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.8)" + style="fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z " + id="path1908" /> + </marker> + <marker + style="overflow:visible" + id="marker1900" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="TriangleOutL" + inkscape:isstock="true"> + <path + transform="scale(0.8)" + style="fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z " + id="path1898" /> + </marker> + <marker + style="overflow:visible;" + id="marker1407" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow2Mend" + inkscape:isstock="true"> + <path + transform="scale(0.6) rotate(180) translate(0,0)" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#0000ff;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + id="path1405" /> + </marker> + <marker + style="overflow:visible;" + id="marker1111" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow2Mend" + inkscape:isstock="true"> + <path + transform="scale(0.6) rotate(180) translate(0,0)" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#0000ff;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + id="path1109" /> + </marker> + <marker + style="overflow:visible;" + id="marker1101" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow2Mend" + inkscape:isstock="true"> + <path + transform="scale(0.6) rotate(180) translate(0,0)" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#0000ff;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + id="path1099" /> + </marker> + <marker + style="overflow:visible;" + id="marker1091" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow2Mend" + inkscape:isstock="true"> + <path + transform="scale(0.6) rotate(180) translate(0,0)" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#0000ff;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + id="path1089" /> + </marker> + <marker + style="overflow:visible;" + id="marker1071" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow2Mend" + inkscape:isstock="true"> + <path + transform="scale(0.6) rotate(180) translate(0,0)" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#0000ff;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + id="path1069" /> + </marker> + <marker + style="overflow:visible;" + id="marker1061" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow2Mend" + inkscape:isstock="true"> + <path + transform="scale(0.6) rotate(180) translate(0,0)" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#0000ff;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + id="path1059" /> + </marker> + <marker + style="overflow:visible;" + id="marker1051" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow2Mend" + inkscape:isstock="true"> + <path + transform="scale(0.6) rotate(180) translate(0,0)" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#0000ff;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + id="path1049" /> + </marker> + <marker + style="overflow:visible;" + id="marker1041" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow2Mend" + inkscape:isstock="true"> + <path + transform="scale(0.6) rotate(180) translate(0,0)" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#0000ff;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + id="path1039" /> + </marker> + <marker + style="overflow:visible;" + id="marker1031" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow2Mend" + inkscape:isstock="true"> + <path + transform="scale(0.6) rotate(180) translate(0,0)" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#0000ff;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + id="path1029" /> + </marker> + <marker + style="overflow:visible" + id="marker923" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path921" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="7.0550821" + inkscape:cx="1203.2461" + inkscape:cy="208.43131" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + units="px" + width="1500px" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:lockguides="true" /> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 35.326022,353.69409 c 0,0 41.895205,-165.85263 212.908788,-152.66748 l -92.49916,57.62752 79.35282,-138.30902 109.79549,222.65806 z" + id="path829" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 390.08736,342.48623 c 0,0 41.8952,-165.85263 212.90879,-152.66748 l -92.49916,57.62752 79.35282,-138.30902 109.79549,222.65806 z" + id="path835" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:3.6465;stroke-dasharray:7.293, 7.293" + id="path831" + cx="391.24176" + cy="341.56976" + r="4.6614089" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:3.6465;stroke-dasharray:7.293, 7.293" + id="circle853" + cx="437.13937" + cy="255.43558" + r="4.6614089" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:3.6465;stroke-dasharray:7.293, 7.293" + id="circle855" + cx="497.14078" + cy="208.7459" + r="4.6614089" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:3.6465;stroke-dasharray:7.293, 7.293" + id="circle857" + cx="562.44568" + cy="190.12463" + r="4.6614089" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:3.6465;stroke-dasharray:7.293, 7.293" + id="circle859" + cx="603.85394" + cy="189.72343" + r="4.6614089" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:3.6465;stroke-dasharray:7.293, 7.293" + id="circle861" + cx="512.40961" + cy="246.39914" + r="4.6614089" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:3.6465;stroke-dasharray:7.293, 7.293" + id="circle863" + cx="590.08545" + cy="107.97838" + r="4.6614089" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:3.6465;stroke-dasharray:7.293, 7.293" + id="circle865" + cx="699.90894" + cy="331.86072" + r="4.6614089" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:3,3;stroke-dashoffset:0" + d="m 390.08736,342.48623 47.54346,-88.03417 60.38131,-45.9603 64.83556,-18.10578 40.14846,-0.56723 -92.49916,57.62752 79.35282,-138.30902 109.79549,222.65806 z" + id="path883" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:3.6465;stroke-dasharray:7.293, 7.293" + id="circle887" + cx="751.59222" + cy="330.35614" + r="4.6614089" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:3.6465;stroke-dasharray:7.293, 7.293" + id="circle889" + cx="797.48981" + cy="244.22194" + r="4.6614089" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:3.6465;stroke-dasharray:7.293, 7.293" + id="circle891" + cx="857.49121" + cy="197.53226" + r="4.6614089" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:3.6465;stroke-dasharray:7.293, 7.293" + id="circle893" + cx="922.79614" + cy="178.911" + r="4.6614089" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:3.6465;stroke-dasharray:7.293, 7.293" + id="circle895" + cx="964.20441" + cy="178.5098" + r="4.6614089" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:3.6465;stroke-dasharray:7.293, 7.293" + id="circle897" + cx="872.76007" + cy="235.1855" + r="4.6614089" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:3.6465;stroke-dasharray:7.293, 7.293" + id="circle899" + cx="950.43591" + cy="96.76474" + r="4.6614089" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:3.6465;stroke-dasharray:7.293, 7.293" + id="circle901" + cx="1060.2594" + cy="320.64709" + r="4.6614089" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker2040)" + d="m 753.01517,325.9249 39.27636,-73.07465" + id="path1235" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1910)" + d="m 801.49521,241.76393 47.8429,-38.4059" + id="path1275" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1920)" + d="M 861.86391,196.83092 913.36747,181.965" + id="path1305" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker2018)" + d="m 927.38106,178.75985 27.23737,0.0444" + id="path1335" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1930)" + d="m 960.70488,181.47408 -78.85054,49.14656" + id="path1365" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1940)" + d="M 874.20885,230.8235 945.09517,105.19924" + id="path1395" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1950)" + d="M 952.44023,101.03683 1056.2572,311.16797" + id="path1425" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1960)" + d="m 1055.605,320.94286 -293.89186,9.27867" + id="path1461" + sodipodi:nodetypes="cc" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:3.6465;stroke-dasharray:7.293, 7.293" + id="circle995" + cx="1136.7375" + cy="326.53745" + r="4.6614089" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:3.6465;stroke-dasharray:7.293, 7.293" + id="circle997" + cx="1182.6351" + cy="240.40324" + r="4.6614089" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:3.6465;stroke-dasharray:7.293, 7.293" + id="circle999" + cx="1242.6366" + cy="193.71356" + r="4.6614089" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:3.6465;stroke-dasharray:7.293, 7.293" + id="circle1001" + cx="1307.9415" + cy="175.0923" + r="4.6614089" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:3.6465;stroke-dasharray:7.293, 7.293" + id="circle1003" + cx="1349.3497" + cy="174.6911" + r="4.6614089" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:3.6465;stroke-dasharray:7.293, 7.293" + id="circle1005" + cx="1257.9054" + cy="231.36681" + r="4.6614089" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:3.6465;stroke-dasharray:7.293, 7.293" + id="circle1007" + cx="1335.5813" + cy="92.946053" + r="4.6614089" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:3.6465;stroke-dasharray:7.293, 7.293" + id="circle1009" + cx="1445.4048" + cy="316.8284" + r="4.6614089" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker2644)" + d="m 1180.6084,244.46984 -39.367,73.54152" + id="path1011" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker2816)" + d="m 1239.2175,197.24738 -48.4404,36.88694" + id="path1015" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker2838)" + d="m 1284.8779,182.16393 -32.8837,8.69811" + id="path1017" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1900)" + d="m 1312.5731,175.13895 30.642,-0.15315" + id="path1019" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker2730)" + d="m 1346.0276,178.03976 -79.29,49.0325" + id="path1021" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker2676)" + d="M 1443.3183,312.95924 1340.6121,101.88125" + id="path1025" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker2660)" + d="m 1141.3047,326.72802 294.7223,-8.63214" + id="path1027" + sodipodi:nodetypes="cc" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:3.6465;stroke-dasharray:7.293, 7.293" + id="circle1341" + cx="1284.6919" + cy="182.21416" + r="4.6614089" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker2692)" + d="m 1333.1858,96.850075 -42.8181,76.404755" + id="path1023" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker2714)" + d="m 1260.3216,227.4814 19.5513,-36.48655" + id="path1373" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker2764)" + d="m 1289.1656,181.47107 9.2725,-2.8258" + id="path1403" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="29.738272" + y="392.17133" + id="text1429"><tspan + sodipodi:role="line" + id="tspan1427" + x="29.738272" + y="392.17133">1. Path Descriptions </tspan><tspan + sodipodi:role="line" + x="29.738272" + y="425.5047" + id="tspan1431">Added.</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="373.73657" + y="383.69681" + id="text1437"><tspan + sodipodi:role="line" + x="373.73657" + y="383.69681" + id="tspan1435">2. Path::Convert</tspan><tspan + sodipodi:role="line" + x="373.73657" + y="417.03018" + id="tspan1441">or</tspan><tspan + sodipodi:role="line" + x="373.73657" + y="450.36356" + id="tspan1443">Path::ConvertWithBackData</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="763.67297" + y="372.67661" + id="text1451"><tspan + sodipodi:role="line" + x="763.67297" + y="372.67661" + id="tspan1449">3. Path::Fill</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="1114.0807" + y="381.37952" + id="text1460"><tspan + sodipodi:role="line" + x="1114.0807" + y="381.37952" + id="tspan1458">4. Shape::ConvertToShape</tspan></text> + </g> +</svg> diff --git a/doc/livarot-images/process-flat-to-convert.svg.2020_08_20_00_55_09.0.svg b/doc/livarot-images/process-flat-to-convert.svg.2020_08_20_00_55_09.0.svg new file mode 100644 index 0000000..33c525e --- /dev/null +++ b/doc/livarot-images/process-flat-to-convert.svg.2020_08_20_00_55_09.0.svg @@ -0,0 +1,566 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="1500" + height="500" + viewBox="0 0 1500 500" + version="1.1" + id="svg6" + inkscape:version="1.1-dev (037b845d7b, 2020-08-19, custom)" + sodipodi:docname="process-flat-to-convert.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"> + <defs + id="defs2"> + <marker + style="overflow:visible;" + id="marker1655" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow2Mend" + inkscape:isstock="true"> + <path + transform="scale(0.6) rotate(180) translate(0,0)" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#0000ff;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + id="path1653" /> + </marker> + <marker + style="overflow:visible;" + id="marker1645" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow2Mend" + inkscape:isstock="true"> + <path + transform="scale(0.6) rotate(180) translate(0,0)" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#0000ff;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + id="path1643" /> + </marker> + <marker + style="overflow:visible;" + id="marker1635" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow2Mend" + inkscape:isstock="true"> + <path + transform="scale(0.6) rotate(180) translate(0,0)" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#0000ff;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + id="path1633" /> + </marker> + <marker + style="overflow:visible;" + id="marker1625" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow2Mend" + inkscape:isstock="true"> + <path + transform="scale(0.6) rotate(180) translate(0,0)" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#0000ff;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + id="path1623" /> + </marker> + <marker + style="overflow:visible;" + id="marker1615" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow2Mend" + inkscape:isstock="true"> + <path + transform="scale(0.6) rotate(180) translate(0,0)" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#0000ff;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + id="path1613" /> + </marker> + <marker + style="overflow:visible;" + id="marker1605" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow2Mend" + inkscape:isstock="true"> + <path + transform="scale(0.6) rotate(180) translate(0,0)" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#0000ff;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + id="path1603" /> + </marker> + <marker + style="overflow:visible;" + id="marker1595" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow2Mend" + inkscape:isstock="true"> + <path + transform="scale(0.6) rotate(180) translate(0,0)" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#0000ff;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + id="path1593" /> + </marker> + <marker + style="overflow:visible;" + id="marker1585" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow2Mend" + inkscape:isstock="true"> + <path + transform="scale(0.6) rotate(180) translate(0,0)" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#0000ff;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + id="path1583" /> + </marker> + <marker + style="overflow:visible;" + id="marker1575" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow2Mend" + inkscape:isstock="true"> + <path + transform="scale(0.6) rotate(180) translate(0,0)" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#0000ff;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + id="path1573" /> + </marker> + <marker + style="overflow:visible;" + id="marker1465" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow2Mend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.6) rotate(180) translate(0,0)" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#0000ff;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + id="path1463" /> + </marker> + <marker + style="overflow:visible;" + id="marker1429" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow2Mend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.6) rotate(180) translate(0,0)" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#0000ff;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + id="path1427" /> + </marker> + <marker + style="overflow:visible;" + id="marker1399" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow2Mend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.6) rotate(180) translate(0,0)" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#0000ff;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + id="path1397" /> + </marker> + <marker + style="overflow:visible;" + id="marker1369" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow2Mend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.6) rotate(180) translate(0,0)" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#0000ff;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + id="path1367" /> + </marker> + <marker + style="overflow:visible;" + id="marker1339" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow2Mend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.6) rotate(180) translate(0,0)" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#0000ff;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + id="path1337" /> + </marker> + <marker + style="overflow:visible;" + id="marker1309" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow2Mend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.6) rotate(180) translate(0,0)" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#0000ff;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + id="path1307" /> + </marker> + <marker + style="overflow:visible;" + id="marker1279" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow2Mend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.6) rotate(180) translate(0,0)" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#0000ff;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + id="path1277" /> + </marker> + <marker + style="overflow:visible;" + id="marker1261" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow2Mend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.6) rotate(180) translate(0,0)" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#0000ff;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + id="path1259" /> + </marker> + <marker + style="overflow:visible;" + id="Arrow2Mend" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow2Mend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.6) rotate(180) translate(0,0)" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#0000ff;stroke-opacity:1;fill:#0000ff;fill-opacity:1" + id="path982" /> + </marker> + <marker + style="overflow:visible" + id="marker923" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path921" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1.8380483" + inkscape:cx="933.59895" + inkscape:cy="234.21582" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + units="px" + width="1500px" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:lockguides="true" /> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 35.326022,353.69409 c 0,0 41.895205,-165.85263 212.908788,-152.66748 l -92.49916,57.62752 79.35282,-138.30902 109.79549,222.65806 z" + id="path829" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 390.08736,342.48623 c 0,0 41.8952,-165.85263 212.90879,-152.66748 l -92.49916,57.62752 79.35282,-138.30902 109.79549,222.65806 z" + id="path835" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:3.6465;stroke-dasharray:7.293, 7.293" + id="path831" + cx="391.24176" + cy="341.56976" + r="4.6614089" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:3.6465;stroke-dasharray:7.293, 7.293" + id="circle853" + cx="437.13937" + cy="255.43558" + r="4.6614089" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:3.6465;stroke-dasharray:7.293, 7.293" + id="circle855" + cx="497.14078" + cy="208.7459" + r="4.6614089" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:3.6465;stroke-dasharray:7.293, 7.293" + id="circle857" + cx="562.44568" + cy="190.12463" + r="4.6614089" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:3.6465;stroke-dasharray:7.293, 7.293" + id="circle859" + cx="603.85394" + cy="189.72343" + r="4.6614089" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:3.6465;stroke-dasharray:7.293, 7.293" + id="circle861" + cx="512.40961" + cy="246.39914" + r="4.6614089" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:3.6465;stroke-dasharray:7.293, 7.293" + id="circle863" + cx="590.08545" + cy="107.97838" + r="4.6614089" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:3.6465;stroke-dasharray:7.293, 7.293" + id="circle865" + cx="699.90894" + cy="331.86072" + r="4.6614089" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:3,3;stroke-dashoffset:0" + d="m 390.08736,342.48623 47.54346,-88.03417 60.38131,-45.9603 64.83556,-18.10578 40.14846,-0.56723 -92.49916,57.62752 79.35282,-138.30902 109.79549,222.65806 z" + id="path883" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:3.6465;stroke-dasharray:7.293, 7.293" + id="circle887" + cx="751.59222" + cy="330.35614" + r="4.6614089" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:3.6465;stroke-dasharray:7.293, 7.293" + id="circle889" + cx="797.48981" + cy="244.22194" + r="4.6614089" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:3.6465;stroke-dasharray:7.293, 7.293" + id="circle891" + cx="857.49121" + cy="197.53226" + r="4.6614089" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:3.6465;stroke-dasharray:7.293, 7.293" + id="circle893" + cx="922.79614" + cy="178.911" + r="4.6614089" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:3.6465;stroke-dasharray:7.293, 7.293" + id="circle895" + cx="964.20441" + cy="178.5098" + r="4.6614089" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:3.6465;stroke-dasharray:7.293, 7.293" + id="circle897" + cx="872.76007" + cy="235.1855" + r="4.6614089" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:3.6465;stroke-dasharray:7.293, 7.293" + id="circle899" + cx="950.43591" + cy="96.76474" + r="4.6614089" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:3.6465;stroke-dasharray:7.293, 7.293" + id="circle901" + cx="1060.2594" + cy="320.64709" + r="4.6614089" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" + d="m 750.43782,331.27259 47.03937,-86.55458" + id="path905" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1261)" + d="m 750.43782,331.27259 47.03937,-86.55458" + id="path1235" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1279)" + d="M 797.47719,244.71801 857.5353,197.79005" + id="path1275" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1309)" + d="m 857.5353,197.79005 64.93717,-18.08061" + id="path1305" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1339)" + d="m 922.47247,179.70944 40.87414,-1.10433" + id="path1335" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1369)" + d="m 963.34661,178.60511 -92.49916,57.62752" + id="path1365" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1399)" + d="M 870.84745,236.23263 950.20027,97.923613" + id="path1395" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1429)" + d="M 950.20027,97.923613 1059.9958,320.58167" + id="path1425" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1465)" + d="M 1059.9958,320.58167 750.43782,331.27259" + id="path1461" + sodipodi:nodetypes="cc" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:3.6465;stroke-dasharray:7.293, 7.293" + id="circle1539" + cx="1110.3844" + cy="318.76852" + r="4.6614089" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:3.6465;stroke-dasharray:7.293, 7.293" + id="circle1541" + cx="1156.282" + cy="232.63429" + r="4.6614089" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:3.6465;stroke-dasharray:7.293, 7.293" + id="circle1543" + cx="1216.2834" + cy="185.94461" + r="4.6614089" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:3.6465;stroke-dasharray:7.293, 7.293" + id="circle1545" + cx="1281.5884" + cy="167.32335" + r="4.6614089" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:3.6465;stroke-dasharray:7.293, 7.293" + id="circle1547" + cx="1322.9966" + cy="166.92215" + r="4.6614089" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:3.6465;stroke-dasharray:7.293, 7.293" + id="circle1549" + cx="1231.5522" + cy="223.59785" + r="4.6614089" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:3.6465;stroke-dasharray:7.293, 7.293" + id="circle1551" + cx="1309.2281" + cy="85.177101" + r="4.6614089" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:3.6465;stroke-dasharray:7.293, 7.293" + id="circle1553" + cx="1419.0516" + cy="309.05948" + r="4.6614089" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1655)" + d="m 1109.23,319.68495 47.0393,-86.55458" + id="path1555" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1645)" + d="m 1109.23,319.68495 47.0393,-86.55458" + id="path1557" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1635)" + d="m 1156.2693,233.13037 60.0582,-46.92796" + id="path1559" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1625)" + d="m 1216.3275,186.20241 64.9371,-18.08061" + id="path1561" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1615)" + d="m 1281.2646,168.1218 40.8742,-1.10433" + id="path1563" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1605)" + d="m 1322.1388,167.01747 -92.4992,57.62752" + id="path1565" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1595)" + d="M 1229.6396,224.64499 1308.9924,86.335971" + id="path1567" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1585)" + d="M 1308.9924,86.335971 1418.788,308.99403" + id="path1569" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1575)" + d="M 1418.788,308.99403 1109.23,319.68495" + id="path1571" + sodipodi:nodetypes="cc" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:3.6465;stroke-dasharray:7.293, 7.293" + id="circle1771" + cx="1258.8988" + cy="174.04913" + r="4.6614089" /> + </g> +</svg> diff --git a/doc/livarot-images/rounded-edge-diagonal-avoid.svg b/doc/livarot-images/rounded-edge-diagonal-avoid.svg new file mode 100644 index 0000000..d376a55 --- /dev/null +++ b/doc/livarot-images/rounded-edge-diagonal-avoid.svg @@ -0,0 +1,271 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="500" + height="500" + viewBox="0 0 500 500" + version="1.1" + id="svg6" + inkscape:version="1.1-dev (80318448fe, 2020-08-23, custom)" + sodipodi:docname="rounded-edge-diagonal-avoid.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"> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="marker1049" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1047" /> + </marker> + <marker + style="overflow:visible" + id="marker977" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path975" /> + </marker> + <marker + style="overflow:visible" + id="marker939" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path937" /> + </marker> + <marker + style="overflow:visible" + id="marker911" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path909" /> + </marker> + <marker + style="overflow:visible" + id="marker1121" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1119" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1.4345874" + inkscape:cx="266.27865" + inkscape:cy="248.50351" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + units="px" + width="500px" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" /> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;stroke:#ff00ff;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" + d="M 191.78627,187.96645 V 316.27874 H 313.09566" + id="path971" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.54245;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect833" + width="119.04181" + height="119.04181" + x="130.48016" + y="128.77312" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.54245;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect835" + width="119.04181" + height="119.04181" + x="249.52196" + y="128.77312" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.54245;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect837" + width="119.04181" + height="119.04181" + x="130.48016" + y="247.81493" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.54245;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect839" + width="119.04181" + height="119.04181" + x="249.52196" + y="247.81493" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="path841" + cx="191.12761" + cy="189.35629" + r="39.345333" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="circle859" + cx="311.5365" + cy="310.30621" + r="39.345333" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="235.49031" + y="76.456963" + id="text863"><tspan + sodipodi:role="line" + id="tspan861" + x="235.49031" + y="76.456963" + style="font-size:26.6667px">lp</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1121)" + d="m 214.05208,70.449106 c 0,0 -39.62381,9.305858 -28.67538,74.636724" + id="path865" + sodipodi:nodetypes="cc" /> + <circle + style="fill:#ff00ff;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="circle895" + cx="191.12761" + cy="310.30621" + r="39.345333" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="406.09329" + y="317.00021" + id="text899"><tspan + sodipodi:role="line" + id="tspan897" + x="406.09329" + y="317.00021" + style="font-size:26.6667px">lftN</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker911)" + d="m 426.08485,291.19709 c 0,0 -2.05097,-13.04856 -67.38183,-2.10013" + id="path907" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="151.58751" + y="410.58646" + id="text933"><tspan + sodipodi:role="line" + id="tspan931" + x="151.58751" + y="410.58646" + style="font-size:26.6667px">lftN-1</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker939)" + d="m 144.77976,384.51252 c 0,0 -5.00305,-17.31523 14.35045,-42.59101" + id="path935" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#ff0000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" + d="M 191.78627,187.96645 312.10026,312.47717" + id="path969" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker977)" + d="m 358.64187,93.761094 c 0,0 -72.99126,47.745006 -98.73333,140.759806" + id="path973" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="363.58093" + y="94.583557" + id="text993"><tspan + sodipodi:role="line" + id="tspan991" + x="363.58093" + y="94.583557" + style="font-size:16px">we want to</tspan><tspan + sodipodi:role="line" + x="363.58093" + y="114.58356" + id="tspan995" + style="font-size:16px">avoid</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1049)" + d="m 75.850462,292.37458 c 0,0 7.461366,-36.31628 109.013618,-30.14191" + id="path1045" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="9.8154373" + y="310.22327" + id="text1127"><tspan + sodipodi:role="line" + x="9.8154373" + y="310.22327" + id="tspan1125" + style="font-size:16px">we prefer</tspan><tspan + sodipodi:role="line" + x="9.8154373" + y="330.22327" + style="font-size:16px" + id="tspan1131">the magenta</tspan><tspan + sodipodi:role="line" + x="9.8154373" + y="350.22327" + style="font-size:16px" + id="tspan1133">edges instead</tspan><tspan + sodipodi:role="line" + x="9.8154373" + y="370.22327" + style="font-size:16px" + id="tspan1135">of the red</tspan></text> + </g> +</svg> diff --git a/doc/livarot-images/sequence-convert-shape-loop.svg b/doc/livarot-images/sequence-convert-shape-loop.svg new file mode 100644 index 0000000..2070a79 --- /dev/null +++ b/doc/livarot-images/sequence-convert-shape-loop.svg @@ -0,0 +1,618 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="460.31302" + height="590.33685" + viewBox="0 0 460.31302 590.33685" + version="1.1" + id="svg6" + inkscape:version="1.1-dev (b11d04efb7, 2020-08-25, custom)" + sodipodi:docname="sequence-convert-shape-loop.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"> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="marker1121" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#008000;fill-opacity:1;fill-rule:evenodd;stroke:#008000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1119" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.53018718" + inkscape:cx="475.30384" + inkscape:cy="510.19717" + inkscape:document-units="px" + inkscape:current-layer="g1066" + showgrid="false" + units="px" + width="1000px" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + showguides="true" + inkscape:guide-bbox="true" + fit-margin-top="10" + fit-margin-left="10" + fit-margin-right="10" + fit-margin-bottom="10" /> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-85.279484,-60.687766)"> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke-width:0.966873;stroke-linecap:square;stroke-dasharray:0.966873, 0.966873" + id="path829" + cx="119.1729" + cy="213.40791" + r="22.591625" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke-width:0.966873;stroke-linecap:square;stroke-dasharray:0.966873, 0.966873" + id="circle831" + cx="231.82152" + cy="211.8035" + r="22.591625" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke-width:0.966873;stroke-linecap:square;stroke-dasharray:0.966873, 0.966873" + id="circle833" + cx="340.60272" + cy="215.01233" + r="22.591625" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke-width:0.966873;stroke-linecap:square;stroke-dasharray:0.966873, 0.966873" + id="circle835" + cx="117.87111" + cy="303.18491" + r="22.591625" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke-width:0.966873;stroke-linecap:square;stroke-dasharray:0.966873, 0.966873" + id="circle837" + cx="230.51976" + cy="301.58047" + r="22.591625" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke-width:0.966873;stroke-linecap:square;stroke-dasharray:0.966873, 0.966873" + id="circle839" + cx="339.30096" + cy="304.78931" + r="22.591625" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke-width:0.966873;stroke-linecap:square;stroke-dasharray:0.966873, 0.966873" + id="circle843" + cx="118.44617" + cy="398.50806" + r="22.591625" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke-width:0.966873;stroke-linecap:square;stroke-dasharray:0.966873, 0.966873" + id="circle845" + cx="231.09483" + cy="396.90359" + r="22.591625" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke-width:0.966873;stroke-linecap:square;stroke-dasharray:0.966873, 0.966873" + id="circle847" + cx="339.87604" + cy="400.11243" + r="22.591625" /> + <text + xml:space="preserve" + style="font-size:15.4699px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;stroke-width:0.966873" + x="114.44395" + y="218.86243" + id="text851"><tspan + sodipodi:role="line" + id="tspan849" + x="114.44395" + y="218.86243" + style="stroke-width:0.966873">0</tspan></text> + <text + xml:space="preserve" + style="font-size:15.4699px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;stroke-width:0.966873" + x="225.49794" + y="217.54526" + id="text855"><tspan + sodipodi:role="line" + id="tspan853" + x="225.49794" + y="217.54526" + style="stroke-width:0.966873">1</tspan></text> + <text + xml:space="preserve" + style="font-size:15.4699px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;stroke-width:0.966873" + x="335.65616" + y="219.52641" + id="text859"><tspan + sodipodi:role="line" + id="tspan857" + x="335.65616" + y="219.52641" + style="stroke-width:0.966873">2</tspan></text> + <text + xml:space="preserve" + style="font-size:15.4699px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;stroke-width:0.966873" + x="224.48131" + y="308.00348" + id="text863"><tspan + sodipodi:role="line" + id="tspan861" + x="224.48131" + y="308.00348" + style="stroke-width:0.966873">4</tspan></text> + <text + xml:space="preserve" + style="font-size:15.4699px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;stroke-width:0.966873" + x="113.22529" + y="309.7952" + id="text867"><tspan + sodipodi:role="line" + id="tspan865" + x="113.22529" + y="309.7952" + style="stroke-width:0.966873">3</tspan></text> + <text + xml:space="preserve" + style="font-size:15.4699px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;stroke-width:0.966873" + x="333.99774" + y="311.33444" + id="text871"><tspan + sodipodi:role="line" + id="tspan869" + x="333.99774" + y="311.33444" + style="stroke-width:0.966873">5</tspan></text> + <text + xml:space="preserve" + style="font-size:15.4699px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;stroke-width:0.966873" + x="113.64395" + y="403.90793" + id="text875"><tspan + sodipodi:role="line" + id="tspan873" + x="113.64395" + y="403.90793" + style="stroke-width:0.966873">6</tspan></text> + <text + xml:space="preserve" + style="font-size:15.4699px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;stroke-width:0.966873" + x="225.44637" + y="403.42715" + id="text879"><tspan + sodipodi:role="line" + id="tspan877" + x="225.44637" + y="403.42715" + style="stroke-width:0.966873">7</tspan></text> + <text + xml:space="preserve" + style="font-size:15.4699px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;stroke-width:0.966873" + x="334.24973" + y="407.63211" + id="text883"><tspan + sodipodi:role="line" + id="tspan881" + x="334.24973" + y="407.63211" + style="stroke-width:0.966873">8</tspan></text> + <g + id="g926" + transform="matrix(0.53646214,0,0,0.53646214,143.95697,-30.619609)"> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-linecap:square;stroke-dasharray:1, 1" + id="rect917" + width="254.51257" + height="55.541786" + x="474.66269" + y="189.34348" /> + <text + xml:space="preserve" + style="font-size:21.3333px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="486.30383" + y="224.65175" + id="text921"><tspan + sodipodi:role="line" + id="tspan919" + x="486.30383" + y="224.65175" + style="font-size:21.3333px">Add point 0</tspan></text> + </g> + <g + id="g934" + transform="matrix(0.53646214,0,0,0.53646214,143.95697,-0.82354433)"> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-linecap:square;stroke-dasharray:1, 1" + id="rect928" + width="254.51257" + height="55.541786" + x="474.66269" + y="189.34348" /> + <text + xml:space="preserve" + style="font-size:21.3333px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="486.30383" + y="224.65175" + id="text932"><tspan + sodipodi:role="line" + id="tspan930" + x="486.30383" + y="224.65175" + style="font-size:21.3333px">Reconstruction block</tspan></text> + </g> + <g + id="g942" + transform="matrix(0.53646214,0,0,0.53646214,143.95697,28.972516)"> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-linecap:square;stroke-dasharray:1, 1" + id="rect936" + width="254.51257" + height="55.541786" + x="474.66269" + y="189.34348" /> + <text + xml:space="preserve" + style="font-size:21.3333px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="486.30383" + y="224.65175" + id="text940"><tspan + sodipodi:role="line" + id="tspan938" + x="486.30383" + y="224.65175" + style="font-size:21.3333px">Sweepline stuff</tspan></text> + </g> + <g + id="g950" + transform="matrix(0.53646214,0,0,0.53646214,143.95697,58.768579)"> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-linecap:square;stroke-dasharray:1, 1" + id="rect944" + width="254.51257" + height="55.541786" + x="474.66269" + y="189.34348" /> + <text + xml:space="preserve" + style="font-size:21.3333px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="486.30383" + y="224.65175" + id="text948"><tspan + sodipodi:role="line" + id="tspan946" + x="486.30383" + y="224.65175" + style="font-size:21.3333px">Add point 1</tspan></text> + </g> + <g + id="g958" + transform="matrix(0.53646214,0,0,0.53646214,143.95697,88.564639)"> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-linecap:square;stroke-dasharray:1, 1" + id="rect952" + width="254.51257" + height="55.541786" + x="474.66269" + y="189.34348" /> + <text + xml:space="preserve" + style="font-size:21.3333px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="486.30383" + y="224.65175" + id="text956"><tspan + sodipodi:role="line" + id="tspan954" + x="486.30383" + y="224.65175" + style="font-size:21.3333px">Sweepline stuff</tspan></text> + </g> + <g + id="g966" + transform="matrix(0.53646214,0,0,0.53646214,143.95697,118.3607)"> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-linecap:square;stroke-dasharray:1, 1" + id="rect960" + width="254.51257" + height="55.541786" + x="474.66269" + y="189.34348" /> + <text + xml:space="preserve" + style="font-size:21.3333px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="486.30383" + y="224.65175" + id="text964"><tspan + sodipodi:role="line" + id="tspan962" + x="486.30383" + y="224.65175" + style="font-size:21.3333px">Add point 2</tspan></text> + </g> + <g + id="g974" + transform="matrix(0.53646214,0,0,0.53646214,143.95697,148.15676)"> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-linecap:square;stroke-dasharray:1, 1" + id="rect968" + width="254.51257" + height="55.541786" + x="474.66269" + y="189.34348" /> + <text + xml:space="preserve" + style="font-size:21.3333px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="486.30383" + y="224.65175" + id="text972"><tspan + sodipodi:role="line" + id="tspan970" + x="486.30383" + y="224.65175" + style="font-size:21.3333px">Sweepline stuff</tspan></text> + </g> + <g + id="g990" + transform="matrix(0.53659598,0,0,0.53651321,143.85939,177.94316)"> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-linecap:square;stroke-dasharray:1, 1" + id="rect984" + width="254.51257" + height="55.541786" + x="474.66269" + y="189.34348" /> + <text + xml:space="preserve" + style="font-size:21.3333px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="486.30383" + y="224.65175" + id="text988"><tspan + sodipodi:role="line" + id="tspan986" + x="486.30383" + y="224.65175" + style="font-size:21.3333px">Add point 3</tspan></text> + </g> + <g + id="g998" + transform="matrix(0.53646214,0,0,0.53646214,143.95697,207.75172)"> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-linecap:square;stroke-dasharray:1, 1" + id="rect992" + width="254.51257" + height="55.541786" + x="474.66269" + y="189.34348" /> + <text + xml:space="preserve" + style="font-size:21.3333px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="486.30383" + y="224.65175" + id="text996"><tspan + sodipodi:role="line" + id="tspan994" + x="486.30383" + y="224.65175" + style="font-size:21.3333px">Reconstruction block</tspan></text> + </g> + <g + id="g1006" + transform="matrix(0.53646214,0,0,0.53646214,143.95697,237.54778)"> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-linecap:square;stroke-dasharray:1, 1" + id="rect1000" + width="254.51257" + height="55.541786" + x="474.66269" + y="189.34348" /> + <text + xml:space="preserve" + style="font-size:21.3333px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="486.30383" + y="224.65175" + id="text1004"><tspan + sodipodi:role="line" + id="tspan1002" + x="486.30383" + y="224.65175" + style="font-size:21.3333px">Sweepline stuff</tspan></text> + </g> + <g + id="g1014" + transform="matrix(0.53646214,0,0,0.53646214,143.95697,267.34385)"> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-linecap:square;stroke-dasharray:1, 1" + id="rect1008" + width="254.51257" + height="55.541786" + x="474.66269" + y="189.34348" /> + <text + xml:space="preserve" + style="font-size:21.3333px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="486.30383" + y="224.65175" + id="text1012"><tspan + sodipodi:role="line" + id="tspan1010" + x="486.30383" + y="224.65175" + style="font-size:21.3333px">Add point 4</tspan></text> + </g> + <g + id="g1022" + transform="matrix(0.53646214,0,0,0.53646214,143.95697,297.13991)"> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-linecap:square;stroke-dasharray:1, 1" + id="rect1016" + width="254.51257" + height="55.541786" + x="474.66269" + y="189.34348" /> + <text + xml:space="preserve" + style="font-size:21.3333px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="486.30383" + y="224.65175" + id="text1020"><tspan + sodipodi:role="line" + id="tspan1018" + x="486.30383" + y="224.65175" + style="font-size:21.3333px">Sweepline stuff</tspan></text> + </g> + <g + id="g1030" + transform="matrix(0.53646214,0,0,0.53646214,143.95697,326.93597)"> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-linecap:square;stroke-dasharray:1, 1" + id="rect1024" + width="254.51257" + height="55.541786" + x="474.66269" + y="189.34348" /> + <text + xml:space="preserve" + style="font-size:21.3333px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="486.30383" + y="224.65175" + id="text1028"><tspan + sodipodi:role="line" + id="tspan1026" + x="486.30383" + y="224.65175" + style="font-size:21.3333px">Add point 5</tspan></text> + </g> + <g + id="g1038" + transform="matrix(0.53646214,0,0,0.53646214,143.95697,356.73203)"> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-linecap:square;stroke-dasharray:1, 1" + id="rect1032" + width="254.51257" + height="55.541786" + x="474.66269" + y="189.34348" /> + <text + xml:space="preserve" + style="font-size:21.3333px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="486.30383" + y="224.65175" + id="text1036"><tspan + sodipodi:role="line" + id="tspan1034" + x="486.30383" + y="224.65175" + style="font-size:21.3333px">Sweepline stuff</tspan></text> + </g> + <text + xml:space="preserve" + style="font-size:35.3405px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:2.20878" + x="499.6633" + y="-462.91425" + id="text1042" + transform="rotate(90)"><tspan + sodipodi:role="line" + id="tspan1040" + x="499.6633" + y="-462.91425" + style="stroke-width:2.20878">....</tspan></text> + <g + id="g1050" + transform="matrix(0.53646214,0,0,0.53646214,144.14933,449.79259)"> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-linecap:square;stroke-dasharray:1, 1" + id="rect1044" + width="254.51257" + height="55.541786" + x="474.66269" + y="189.34348" /> + <text + xml:space="preserve" + style="font-size:21.3333px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="486.30383" + y="224.65175" + id="text1048"><tspan + sodipodi:role="line" + id="tspan1046" + x="486.30383" + y="224.65175" + style="font-size:21.3333px">Add point 8</tspan></text> + </g> + <g + id="g1058" + transform="matrix(0.53646214,0,0,0.53646214,144.14933,479.58865)"> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-linecap:square;stroke-dasharray:1, 1" + id="rect1052" + width="254.51257" + height="55.541786" + x="474.66269" + y="189.34348" /> + <text + xml:space="preserve" + style="font-size:21.3333px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="486.30383" + y="224.65175" + id="text1056"><tspan + sodipodi:role="line" + id="tspan1054" + x="486.30383" + y="224.65175" + style="font-size:21.3333px">Sweepline stuff</tspan></text> + </g> + <g + id="g1066" + transform="matrix(0.85532258,0,0,0.85532258,173.19641,770.13583)" + style="stroke:#008000"> + <rect + style="fill:none;fill-rule:evenodd;stroke:#008000;stroke-width:0.627204;stroke-linecap:square;stroke-dasharray:0.627204, 0.627204" + id="rect1060" + width="159.63142" + height="34.836056" + x="263.75018" + y="-186.09998" /> + <text + xml:space="preserve" + style="font-size:13.3803px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#008000;stroke:none;stroke-width:0.627204" + x="271.05154" + y="-163.95447" + id="text1064"><tspan + sodipodi:role="line" + id="tspan1062" + x="271.05154" + y="-163.95447" + style="font-size:13.3803px;fill:#008000;stroke:none;stroke-width:0.627204">Reconstruction block</tspan></text> + <text + xml:space="preserve" + style="font-size:16.4634px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#008000;stroke:none;stroke-width:1.02896" + x="39.374828" + y="-226.5031" + id="text1070"><tspan + sodipodi:role="line" + id="tspan1068" + style="fill:#008000;stroke:none;stroke-width:1.02896" + x="39.374828" + y="-226.5031">Written after the loop</tspan></text> + <path + style="fill:none;stroke:#008000;stroke-width:0.733296;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1121)" + d="m 128.95645,-211.67322 c 0,0 4.50002,41.77953 117.60645,44.43107" + id="path1072" /> + </g> + </g> +</svg> diff --git a/doc/livarot-images/situation-from-add-chgt.svg b/doc/livarot-images/situation-from-add-chgt.svg new file mode 100644 index 0000000..a106f95 --- /dev/null +++ b/doc/livarot-images/situation-from-add-chgt.svg @@ -0,0 +1,152 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="332.26663" + height="300.29181" + viewBox="0 0 332.26663 300.29181" + version="1.1" + id="svg6" + inkscape:version="1.1-dev (6f52e792f5, 2020-08-23, custom)" + sodipodi:docname="situation-from-add-chgt.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"> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="marker966" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path964" /> + </marker> + <marker + style="overflow:visible" + id="marker883" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path881" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1.5020252" + inkscape:cx="173.09963" + inkscape:cy="155.45678" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + units="px" + width="1000px" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + fit-margin-top="10" + fit-margin-left="10" + fit-margin-right="10" + fit-margin-bottom="10" /> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-103.57619,-121.75057)"> + <circle + style="fill:#000000;fill-rule:evenodd;stroke-width:0.00465015;stroke-linecap:square" + id="path829" + cx="168.05617" + cy="182.92595" + r="14.716245" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke-width:0.00465015;stroke-linecap:square" + id="circle831" + cx="263.57138" + cy="182.92595" + r="14.716245" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke-width:0.00465015;stroke-linecap:square" + id="circle833" + cx="359.08658" + cy="182.92595" + r="14.716245" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke-width:0.00465015;stroke-linecap:square" + id="circle835" + cx="167.10698" + cy="267.31601" + r="14.716245" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke-width:0.00465015;stroke-linecap:square" + id="circle837" + cx="262.62219" + cy="267.31601" + r="14.716245" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke-width:0.00465015;stroke-linecap:square" + id="circle839" + cx="358.13739" + cy="267.31601" + r="14.716245" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke-width:0.00465015;stroke-linecap:square" + id="circle841" + cx="168.34859" + cy="352.23386" + r="14.716245" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="234.48026" + y="409.72568" + id="text865"><tspan + sodipodi:role="line" + id="tspan863" + x="234.48026" + y="409.72568">lastPointNo</tspan></text> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="119.64504" + y="409.64163" + id="text877"><tspan + sodipodi:role="line" + id="tspan875" + x="119.64504" + y="409.64163">lastChgtPt</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker883)" + d="m 124.10989,390.24057 c 0,0 -8.78406,-11.69035 14.78151,-27.12439" + id="path952" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke-width:0.00465015;stroke-linecap:square" + id="circle960" + cx="262.62219" + cy="352.23386" + r="14.716245" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker966)" + d="m 320.20628,386.42472 c 0,0 -0.42318,-24.77027 -27.56073,-28.67999" + id="path962" /> + </g> +</svg> diff --git a/doc/livarot-images/snap-rounding-with.svg b/doc/livarot-images/snap-rounding-with.svg new file mode 100644 index 0000000..702186f --- /dev/null +++ b/doc/livarot-images/snap-rounding-with.svg @@ -0,0 +1,806 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="1000" + height="1000" + viewBox="0 0 1000 1000" + version="1.1" + id="svg6" + inkscape:version="1.1-dev (b11d04efb7, 2020-08-25, custom)" + sodipodi:docname="snap-rounding-with.svg" + inkscape:export-filename="/home/moazin/Desktop/snap-rounding-with.png" + inkscape:export-xdpi="96" + inkscape:export-ydpi="96" + 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"> + <defs + id="defs2"> + <marker + style="overflow:visible;" + id="marker1121" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="scale(0.8) rotate(180) translate(12.5,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path1119" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.67911215" + inkscape:cx="222.34914" + inkscape:cy="539.67522" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + units="px" + width="1000px" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" /> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;stroke:#ff00ff;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 198.67033,286.84145 368.40575,285.112 792.25904,194.9126 793.43268,626.26572 618.80571,542.56997 368.40575,285.112 l 0.16756,174.08651 250.2324,83.37146 -424.4699,84.86538 z" + id="path1061" + sodipodi:nodetypes="cccccccccc" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect829" + width="84.756966" + height="84.756966" + x="71.449844" + y="71.494476" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect831" + width="84.756966" + height="84.756966" + x="156.20682" + y="71.494476" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect833" + width="84.756966" + height="84.756966" + x="240.96378" + y="71.494476" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect835" + width="84.756966" + height="84.756966" + x="325.72073" + y="71.494476" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect837" + width="84.756966" + height="84.756966" + x="410.47769" + y="71.494476" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect839" + width="84.756966" + height="84.756966" + x="495.23468" + y="71.494476" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect841" + width="84.756966" + height="84.756966" + x="579.99164" + y="71.494476" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect843" + width="84.756966" + height="84.756966" + x="664.7486" + y="71.494476" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect845" + width="84.756966" + height="84.756966" + x="749.50555" + y="71.494476" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect847" + width="84.756966" + height="84.756966" + x="834.26251" + y="71.494476" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect849" + width="84.756966" + height="84.756966" + x="71.449875" + y="156.25143" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect851" + width="84.756966" + height="84.756966" + x="156.20685" + y="156.25143" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect853" + width="84.756966" + height="84.756966" + x="240.96381" + y="156.25143" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect855" + width="84.756966" + height="84.756966" + x="325.72076" + y="156.25143" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect857" + width="84.756966" + height="84.756966" + x="410.47772" + y="156.25143" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect859" + width="84.756966" + height="84.756966" + x="495.23471" + y="156.25143" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect861" + width="84.756966" + height="84.756966" + x="579.9917" + y="156.25143" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect863" + width="84.756966" + height="84.756966" + x="664.74866" + y="156.25143" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect865" + width="84.756966" + height="84.756966" + x="749.50562" + y="156.25143" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect867" + width="84.756966" + height="84.756966" + x="834.26257" + y="156.25143" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect869" + width="84.756966" + height="84.756966" + x="71.449905" + y="241.00839" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect871" + width="84.756966" + height="84.756966" + x="156.20688" + y="241.00839" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect873" + width="84.756966" + height="84.756966" + x="240.96384" + y="241.00839" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect875" + width="84.756966" + height="84.756966" + x="325.72079" + y="241.00839" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect877" + width="84.756966" + height="84.756966" + x="410.47775" + y="241.00839" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect879" + width="84.756966" + height="84.756966" + x="495.23474" + y="241.00839" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect881" + width="84.756966" + height="84.756966" + x="579.9917" + y="241.00839" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect883" + width="84.756966" + height="84.756966" + x="664.74866" + y="241.00839" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect885" + width="84.756966" + height="84.756966" + x="749.50562" + y="241.00839" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect887" + width="84.756966" + height="84.756966" + x="834.26257" + y="241.00839" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect889" + width="84.756966" + height="84.756966" + x="71.449875" + y="325.76535" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect891" + width="84.756966" + height="84.756966" + x="156.20685" + y="325.76535" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect893" + width="84.756966" + height="84.756966" + x="240.96381" + y="325.76535" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect895" + width="84.756966" + height="84.756966" + x="325.72076" + y="325.76535" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect897" + width="84.756966" + height="84.756966" + x="410.47772" + y="325.76535" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect899" + width="84.756966" + height="84.756966" + x="495.23471" + y="325.76535" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect901" + width="84.756966" + height="84.756966" + x="579.9917" + y="325.76535" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect903" + width="84.756966" + height="84.756966" + x="664.74866" + y="325.76535" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect905" + width="84.756966" + height="84.756966" + x="749.50562" + y="325.76535" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect907" + width="84.756966" + height="84.756966" + x="834.26257" + y="325.76535" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect909" + width="84.756966" + height="84.756966" + x="71.449905" + y="410.52231" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect911" + width="84.756966" + height="84.756966" + x="156.20688" + y="410.52231" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect913" + width="84.756966" + height="84.756966" + x="240.96384" + y="410.52231" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect915" + width="84.756966" + height="84.756966" + x="325.72079" + y="410.52231" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect917" + width="84.756966" + height="84.756966" + x="410.47775" + y="410.52231" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect919" + width="84.756966" + height="84.756966" + x="495.23474" + y="410.52231" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect921" + width="84.756966" + height="84.756966" + x="579.9917" + y="410.52231" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect923" + width="84.756966" + height="84.756966" + x="664.74866" + y="410.52231" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect925" + width="84.756966" + height="84.756966" + x="749.50562" + y="410.52231" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect927" + width="84.756966" + height="84.756966" + x="834.26257" + y="410.52231" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect929" + width="84.756966" + height="84.756966" + x="71.449936" + y="495.27927" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect931" + width="84.756966" + height="84.756966" + x="156.20691" + y="495.27927" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect933" + width="84.756966" + height="84.756966" + x="240.96387" + y="495.27927" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect935" + width="84.756966" + height="84.756966" + x="325.72083" + y="495.27927" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect937" + width="84.756966" + height="84.756966" + x="410.47778" + y="495.27927" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect939" + width="84.756966" + height="84.756966" + x="495.23477" + y="495.27927" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect941" + width="84.756966" + height="84.756966" + x="579.99176" + y="495.27927" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect943" + width="84.756966" + height="84.756966" + x="664.74872" + y="495.27927" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect945" + width="84.756966" + height="84.756966" + x="749.50568" + y="495.27927" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect947" + width="84.756966" + height="84.756966" + x="834.26263" + y="495.27927" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect949" + width="84.756966" + height="84.756966" + x="71.449966" + y="580.03625" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect951" + width="84.756966" + height="84.756966" + x="156.20694" + y="580.03625" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect953" + width="84.756966" + height="84.756966" + x="240.9639" + y="580.03625" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect955" + width="84.756966" + height="84.756966" + x="325.72086" + y="580.03625" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect957" + width="84.756966" + height="84.756966" + x="410.47781" + y="580.03625" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect959" + width="84.756966" + height="84.756966" + x="495.2348" + y="580.03625" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect961" + width="84.756966" + height="84.756966" + x="579.99176" + y="580.03625" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect963" + width="84.756966" + height="84.756966" + x="664.74872" + y="580.03625" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect965" + width="84.756966" + height="84.756966" + x="749.50568" + y="580.03625" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect967" + width="84.756966" + height="84.756966" + x="834.26263" + y="580.03625" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect969" + width="84.756966" + height="84.756966" + x="71.449936" + y="664.79321" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect971" + width="84.756966" + height="84.756966" + x="156.20691" + y="664.79321" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect973" + width="84.756966" + height="84.756966" + x="240.96387" + y="664.79321" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect975" + width="84.756966" + height="84.756966" + x="325.72083" + y="664.79321" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect977" + width="84.756966" + height="84.756966" + x="410.47778" + y="664.79321" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect979" + width="84.756966" + height="84.756966" + x="495.23477" + y="664.79321" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect981" + width="84.756966" + height="84.756966" + x="579.99176" + y="664.79321" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect983" + width="84.756966" + height="84.756966" + x="664.74872" + y="664.79321" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect985" + width="84.756966" + height="84.756966" + x="749.50568" + y="664.79321" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect987" + width="84.756966" + height="84.756966" + x="834.26263" + y="664.79321" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect989" + width="84.756966" + height="84.756966" + x="71.449966" + y="749.55017" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect991" + width="84.756966" + height="84.756966" + x="156.20694" + y="749.55017" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect993" + width="84.756966" + height="84.756966" + x="240.9639" + y="749.55017" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect995" + width="84.756966" + height="84.756966" + x="325.72086" + y="749.55017" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect997" + width="84.756966" + height="84.756966" + x="410.47781" + y="749.55017" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect999" + width="84.756966" + height="84.756966" + x="495.2348" + y="749.55017" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect1001" + width="84.756966" + height="84.756966" + x="579.99176" + y="749.55017" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect1003" + width="84.756966" + height="84.756966" + x="664.74872" + y="749.55017" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect1005" + width="84.756966" + height="84.756966" + x="749.50568" + y="749.55017" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect1007" + width="84.756966" + height="84.756966" + x="834.26263" + y="749.55017" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect1009" + width="84.756966" + height="84.756966" + x="71.449936" + y="834.30713" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect1011" + width="84.756966" + height="84.756966" + x="156.20691" + y="834.30713" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect1013" + width="84.756966" + height="84.756966" + x="240.96387" + y="834.30713" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect1015" + width="84.756966" + height="84.756966" + x="325.72083" + y="834.30713" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect1017" + width="84.756966" + height="84.756966" + x="410.47778" + y="834.30713" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect1019" + width="84.756966" + height="84.756966" + x="495.23477" + y="834.30713" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect1021" + width="84.756966" + height="84.756966" + x="579.99176" + y="834.30713" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect1023" + width="84.756966" + height="84.756966" + x="664.74872" + y="834.30713" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect1025" + width="84.756966" + height="84.756966" + x="749.50568" + y="834.30713" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect1027" + width="84.756966" + height="84.756966" + x="834.26263" + y="834.30713" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="path1029" + cx="196.42531" + cy="283.91745" + r="21.058813" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="circle1031" + cx="791.37793" + cy="197.10309" + r="21.058813" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="circle1033" + cx="792.03827" + cy="625.56738" + r="21.058813" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="circle1035" + cx="369.68683" + cy="285.2713" + r="21.058813" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="circle1037" + cx="195.70045" + cy="625.53809" + r="21.058813" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="circle1057" + cx="370.71881" + cy="455.9498" + r="21.058813" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="circle1059" + cx="618.74072" + cy="541.64209" + r="21.058813" /> + </g> +</svg> diff --git a/doc/livarot-images/snap-rounding-without.png b/doc/livarot-images/snap-rounding-without.png Binary files differnew file mode 100644 index 0000000..deb4620 --- /dev/null +++ b/doc/livarot-images/snap-rounding-without.png diff --git a/doc/livarot-images/snap-rounding-without.svg b/doc/livarot-images/snap-rounding-without.svg new file mode 100644 index 0000000..e6da690 --- /dev/null +++ b/doc/livarot-images/snap-rounding-without.svg @@ -0,0 +1,802 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="1000" + height="1000" + viewBox="0 0 1000 1000" + version="1.1" + id="svg6" + inkscape:version="1.1-dev (b11d04efb7, 2020-08-25, custom)" + sodipodi:docname="snap-rounding-without.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"> + <defs + id="defs2"> + <marker + style="overflow:visible;" + id="marker1121" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="scale(0.8) rotate(180) translate(12.5,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path1119" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.8217843" + inkscape:cx="461.19158" + inkscape:cy="497.08908" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + units="px" + width="1000px" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" /> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;stroke:#ff00ff;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" + d="M 198.67033,286.84145 792.25904,194.9126 793.43268,626.26572 368.40575,285.112 l 0.16756,174.08651 257.76564,84.28271 -432.00314,83.95413 z" + id="path1061" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect829" + width="84.756966" + height="84.756966" + x="71.449844" + y="71.494476" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect831" + width="84.756966" + height="84.756966" + x="156.20682" + y="71.494476" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect833" + width="84.756966" + height="84.756966" + x="240.96378" + y="71.494476" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect835" + width="84.756966" + height="84.756966" + x="325.72073" + y="71.494476" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect837" + width="84.756966" + height="84.756966" + x="410.47769" + y="71.494476" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect839" + width="84.756966" + height="84.756966" + x="495.23468" + y="71.494476" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect841" + width="84.756966" + height="84.756966" + x="579.99164" + y="71.494476" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect843" + width="84.756966" + height="84.756966" + x="664.7486" + y="71.494476" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect845" + width="84.756966" + height="84.756966" + x="749.50555" + y="71.494476" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect847" + width="84.756966" + height="84.756966" + x="834.26251" + y="71.494476" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect849" + width="84.756966" + height="84.756966" + x="71.449875" + y="156.25143" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect851" + width="84.756966" + height="84.756966" + x="156.20685" + y="156.25143" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect853" + width="84.756966" + height="84.756966" + x="240.96381" + y="156.25143" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect855" + width="84.756966" + height="84.756966" + x="325.72076" + y="156.25143" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect857" + width="84.756966" + height="84.756966" + x="410.47772" + y="156.25143" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect859" + width="84.756966" + height="84.756966" + x="495.23471" + y="156.25143" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect861" + width="84.756966" + height="84.756966" + x="579.9917" + y="156.25143" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect863" + width="84.756966" + height="84.756966" + x="664.74866" + y="156.25143" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect865" + width="84.756966" + height="84.756966" + x="749.50562" + y="156.25143" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect867" + width="84.756966" + height="84.756966" + x="834.26257" + y="156.25143" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect869" + width="84.756966" + height="84.756966" + x="71.449905" + y="241.00839" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect871" + width="84.756966" + height="84.756966" + x="156.20688" + y="241.00839" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect873" + width="84.756966" + height="84.756966" + x="240.96384" + y="241.00839" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect875" + width="84.756966" + height="84.756966" + x="325.72079" + y="241.00839" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect877" + width="84.756966" + height="84.756966" + x="410.47775" + y="241.00839" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect879" + width="84.756966" + height="84.756966" + x="495.23474" + y="241.00839" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect881" + width="84.756966" + height="84.756966" + x="579.9917" + y="241.00839" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect883" + width="84.756966" + height="84.756966" + x="664.74866" + y="241.00839" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect885" + width="84.756966" + height="84.756966" + x="749.50562" + y="241.00839" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect887" + width="84.756966" + height="84.756966" + x="834.26257" + y="241.00839" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect889" + width="84.756966" + height="84.756966" + x="71.449875" + y="325.76535" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect891" + width="84.756966" + height="84.756966" + x="156.20685" + y="325.76535" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect893" + width="84.756966" + height="84.756966" + x="240.96381" + y="325.76535" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect895" + width="84.756966" + height="84.756966" + x="325.72076" + y="325.76535" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect897" + width="84.756966" + height="84.756966" + x="410.47772" + y="325.76535" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect899" + width="84.756966" + height="84.756966" + x="495.23471" + y="325.76535" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect901" + width="84.756966" + height="84.756966" + x="579.9917" + y="325.76535" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect903" + width="84.756966" + height="84.756966" + x="664.74866" + y="325.76535" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect905" + width="84.756966" + height="84.756966" + x="749.50562" + y="325.76535" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect907" + width="84.756966" + height="84.756966" + x="834.26257" + y="325.76535" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect909" + width="84.756966" + height="84.756966" + x="71.449905" + y="410.52231" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect911" + width="84.756966" + height="84.756966" + x="156.20688" + y="410.52231" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect913" + width="84.756966" + height="84.756966" + x="240.96384" + y="410.52231" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect915" + width="84.756966" + height="84.756966" + x="325.72079" + y="410.52231" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect917" + width="84.756966" + height="84.756966" + x="410.47775" + y="410.52231" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect919" + width="84.756966" + height="84.756966" + x="495.23474" + y="410.52231" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect921" + width="84.756966" + height="84.756966" + x="579.9917" + y="410.52231" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect923" + width="84.756966" + height="84.756966" + x="664.74866" + y="410.52231" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect925" + width="84.756966" + height="84.756966" + x="749.50562" + y="410.52231" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect927" + width="84.756966" + height="84.756966" + x="834.26257" + y="410.52231" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect929" + width="84.756966" + height="84.756966" + x="71.449936" + y="495.27927" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect931" + width="84.756966" + height="84.756966" + x="156.20691" + y="495.27927" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect933" + width="84.756966" + height="84.756966" + x="240.96387" + y="495.27927" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect935" + width="84.756966" + height="84.756966" + x="325.72083" + y="495.27927" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect937" + width="84.756966" + height="84.756966" + x="410.47778" + y="495.27927" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect939" + width="84.756966" + height="84.756966" + x="495.23477" + y="495.27927" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect941" + width="84.756966" + height="84.756966" + x="579.99176" + y="495.27927" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect943" + width="84.756966" + height="84.756966" + x="664.74872" + y="495.27927" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect945" + width="84.756966" + height="84.756966" + x="749.50568" + y="495.27927" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect947" + width="84.756966" + height="84.756966" + x="834.26263" + y="495.27927" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect949" + width="84.756966" + height="84.756966" + x="71.449966" + y="580.03625" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect951" + width="84.756966" + height="84.756966" + x="156.20694" + y="580.03625" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect953" + width="84.756966" + height="84.756966" + x="240.9639" + y="580.03625" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect955" + width="84.756966" + height="84.756966" + x="325.72086" + y="580.03625" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect957" + width="84.756966" + height="84.756966" + x="410.47781" + y="580.03625" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect959" + width="84.756966" + height="84.756966" + x="495.2348" + y="580.03625" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect961" + width="84.756966" + height="84.756966" + x="579.99176" + y="580.03625" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect963" + width="84.756966" + height="84.756966" + x="664.74872" + y="580.03625" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect965" + width="84.756966" + height="84.756966" + x="749.50568" + y="580.03625" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect967" + width="84.756966" + height="84.756966" + x="834.26263" + y="580.03625" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect969" + width="84.756966" + height="84.756966" + x="71.449936" + y="664.79321" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect971" + width="84.756966" + height="84.756966" + x="156.20691" + y="664.79321" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect973" + width="84.756966" + height="84.756966" + x="240.96387" + y="664.79321" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect975" + width="84.756966" + height="84.756966" + x="325.72083" + y="664.79321" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect977" + width="84.756966" + height="84.756966" + x="410.47778" + y="664.79321" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect979" + width="84.756966" + height="84.756966" + x="495.23477" + y="664.79321" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect981" + width="84.756966" + height="84.756966" + x="579.99176" + y="664.79321" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect983" + width="84.756966" + height="84.756966" + x="664.74872" + y="664.79321" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect985" + width="84.756966" + height="84.756966" + x="749.50568" + y="664.79321" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect987" + width="84.756966" + height="84.756966" + x="834.26263" + y="664.79321" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect989" + width="84.756966" + height="84.756966" + x="71.449966" + y="749.55017" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect991" + width="84.756966" + height="84.756966" + x="156.20694" + y="749.55017" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect993" + width="84.756966" + height="84.756966" + x="240.9639" + y="749.55017" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect995" + width="84.756966" + height="84.756966" + x="325.72086" + y="749.55017" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect997" + width="84.756966" + height="84.756966" + x="410.47781" + y="749.55017" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect999" + width="84.756966" + height="84.756966" + x="495.2348" + y="749.55017" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect1001" + width="84.756966" + height="84.756966" + x="579.99176" + y="749.55017" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect1003" + width="84.756966" + height="84.756966" + x="664.74872" + y="749.55017" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect1005" + width="84.756966" + height="84.756966" + x="749.50568" + y="749.55017" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect1007" + width="84.756966" + height="84.756966" + x="834.26263" + y="749.55017" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect1009" + width="84.756966" + height="84.756966" + x="71.449936" + y="834.30713" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect1011" + width="84.756966" + height="84.756966" + x="156.20691" + y="834.30713" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect1013" + width="84.756966" + height="84.756966" + x="240.96387" + y="834.30713" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect1015" + width="84.756966" + height="84.756966" + x="325.72083" + y="834.30713" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect1017" + width="84.756966" + height="84.756966" + x="410.47778" + y="834.30713" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect1019" + width="84.756966" + height="84.756966" + x="495.23477" + y="834.30713" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect1021" + width="84.756966" + height="84.756966" + x="579.99176" + y="834.30713" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect1023" + width="84.756966" + height="84.756966" + x="664.74872" + y="834.30713" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect1025" + width="84.756966" + height="84.756966" + x="749.50568" + y="834.30713" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="rect1027" + width="84.756966" + height="84.756966" + x="834.26263" + y="834.30713" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="path1029" + cx="196.42531" + cy="283.91745" + r="21.058813" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="circle1031" + cx="791.37793" + cy="197.10309" + r="21.058813" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="circle1033" + cx="792.03827" + cy="625.56738" + r="21.058813" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="circle1035" + cx="369.68683" + cy="285.2713" + r="21.058813" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="circle1037" + cx="195.70045" + cy="625.53809" + r="21.058813" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="circle1057" + cx="370.71881" + cy="455.9498" + r="21.058813" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none" + id="circle1059" + cx="618.74072" + cy="541.64209" + r="21.058813" /> + </g> +</svg> diff --git a/doc/livarot-images/sweep-tree.svg b/doc/livarot-images/sweep-tree.svg new file mode 100644 index 0000000..6e9b15b --- /dev/null +++ b/doc/livarot-images/sweep-tree.svg @@ -0,0 +1,527 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="124.28852mm" + height="94.016853mm" + viewBox="0 0 124.28852 94.016851" + version="1.1" + id="svg6" + inkscape:version="1.1-dev (d63ee585f6, 2020-08-11, custom)" + sodipodi:docname="sweep-tree.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"> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="marker1760" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lstart" + inkscape:isstock="true"> + <path + transform="matrix(0.8,0,0,0.8,10,0)" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1758" /> + </marker> + <marker + style="overflow:visible" + id="marker1726" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lstart" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(0.8,0,0,0.8,10,0)" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1724" /> + </marker> + <marker + style="overflow:visible" + id="marker1692" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lstart" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(0.8,0,0,0.8,10,0)" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1690" /> + </marker> + <marker + style="overflow:visible" + id="marker1658" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lstart" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(0.8,0,0,0.8,10,0)" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1656" /> + </marker> + <marker + style="overflow:visible" + id="marker1624" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lstart" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(0.8,0,0,0.8,10,0)" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1622" /> + </marker> + <marker + style="overflow:visible" + id="Arrow1Lstart" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lstart" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(0.8,0,0,0.8,10,0)" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path948" /> + </marker> + <marker + style="overflow:visible" + id="marker1570" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1568" /> + </marker> + <marker + style="overflow:visible" + id="marker1552" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1550" /> + </marker> + <marker + style="overflow:visible" + id="marker1528" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1526" /> + </marker> + <marker + style="overflow:visible" + id="marker1510" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1508" /> + </marker> + <marker + style="overflow:visible" + id="marker1492" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1490" /> + </marker> + <marker + style="overflow:visible" + id="marker1456" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1454" /> + </marker> + <marker + style="overflow:visible" + id="marker1342" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1340" /> + </marker> + <marker + style="overflow:visible" + id="marker1318" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1316" /> + </marker> + <marker + style="overflow:visible" + id="marker1294" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1292" /> + </marker> + <marker + style="overflow:visible" + id="marker1270" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1268" /> + </marker> + <marker + style="overflow:visible" + id="marker1246" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1244" /> + </marker> + <marker + style="overflow:visible" + id="Arrow1Lend" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path951" /> + </marker> + <marker + style="overflow:visible" + id="Arrow2Mend" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend" + inkscape:isstock="true"> + <path + transform="scale(-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + id="path975" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1" + inkscape:cx="28" + inkscape:cy="292.5" + inkscape:document-units="mm" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + fit-margin-top="10" + fit-margin-left="10" + fit-margin-right="10" + fit-margin-bottom="10" /> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-40.978363,-3.0172235)"> + <g + id="g832"> + <circle + style="opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.765" + id="path823" + cx="104.78666" + cy="20.534264" + r="7.1345401" /> + <text + xml:space="preserve" + style="font-size:4.93889px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583" + x="101.53806" + y="22.276302" + id="text827"><tspan + sodipodi:role="line" + id="tspan825" + style="font-size:4.93889px;stroke-width:0.264583" + x="101.53806" + y="22.276302">10</tspan></text> + </g> + <g + id="g872" + transform="translate(-23.348819,27.982776)"> + <circle + style="opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.765" + id="circle866" + cx="104.78666" + cy="20.534264" + r="7.1345401" /> + <text + xml:space="preserve" + style="font-size:4.93889px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583" + x="101.53806" + y="22.276302" + id="text870"><tspan + sodipodi:role="line" + id="tspan868" + style="font-size:4.93889px;stroke-width:0.264583" + x="101.53806" + y="22.276302"> 5</tspan></text> + </g> + <g + id="g880" + transform="translate(22.799712,27.982776)"> + <circle + style="opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.765" + id="circle874" + cx="104.78666" + cy="20.534264" + r="7.1345401" /> + <text + xml:space="preserve" + style="font-size:4.93889px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583" + x="101.53806" + y="22.276302" + id="text878"><tspan + sodipodi:role="line" + id="tspan876" + style="font-size:4.93889px;stroke-width:0.264583" + x="101.53806" + y="22.276302">15</tspan></text> + </g> + <g + id="g888" + transform="translate(-45.471245,58.982776)"> + <circle + style="opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.765" + id="circle882" + cx="104.78666" + cy="20.534264" + r="7.1345401" /> + <text + xml:space="preserve" + style="font-size:4.93889px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583" + x="101.53806" + y="22.276302" + id="text886"><tspan + sodipodi:role="line" + id="tspan884" + style="font-size:4.93889px;stroke-width:0.264583" + x="101.53806" + y="22.276302"> 2</tspan></text> + </g> + <g + id="g896" + transform="translate(-10.320324,58.982776)"> + <circle + style="opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.765" + id="circle890" + cx="104.78666" + cy="20.534264" + r="7.1345401" /> + <text + xml:space="preserve" + style="font-size:4.93889px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583" + x="101.53806" + y="22.276302" + id="text894"><tspan + sodipodi:role="line" + id="tspan892" + style="font-size:4.93889px;stroke-width:0.264583" + x="101.53806" + y="22.276302"> 6</tspan></text> + </g> + <g + id="g904" + transform="translate(13.727096,58.982776)"> + <circle + style="opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.765" + id="circle898" + cx="104.78666" + cy="20.534264" + r="7.1345401" /> + <text + xml:space="preserve" + style="font-size:4.93889px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583" + x="101.53806" + y="22.276302" + id="text902"><tspan + sodipodi:role="line" + id="tspan900" + style="font-size:4.93889px;stroke-width:0.264583" + x="101.53806" + y="22.276302">12</tspan></text> + </g> + <g + id="g912" + transform="translate(42.963188,58.982776)"> + <circle + style="opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.765" + id="circle906" + cx="104.78666" + cy="20.534264" + r="7.1345401" /> + <text + xml:space="preserve" + style="font-size:4.93889px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583" + x="101.53806" + y="22.276302" + id="text910"><tspan + sodipodi:role="line" + id="tspan908" + style="font-size:4.93889px;stroke-width:0.264583" + x="101.53806" + y="22.276302">16</tspan></text> + </g> + <path + style="fill:none;stroke:#000000;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Lend)" + d="M 100.25707,26.41835 86.117126,42.284718" + id="path946" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1246)" + d="m 110.55328,25.303924 13.32307,16.504903" + id="path1242" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1270)" + d="M 75.828181,53.445818 62.095933,72.494939" + id="path1266" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1294)" + d="m 86.994418,53.481936 6.28842,18.408665" + id="path1290" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1318)" + d="m 123.69923,54.909719 -5.50839,16.911353" + id="path1314" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1342)" + d="M 133.16502,53.221276 144.26564,72.61295" + id="path1338" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#ff0000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow1Lstart);marker-end:url(#marker1456)" + d="m 53.998481,73.746375 c 0,0 -8.467299,-17.695479 19.445787,-25.117427" + id="path1452" /> + <path + style="fill:none;stroke:#ff0000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker1624);marker-end:url(#marker1492)" + d="m 83.044574,55.610074 c 0,0 -6.423041,13.995289 5.671534,19.427698" + id="path1488" /> + <path + style="fill:none;stroke:#ff0000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker1658);marker-end:url(#marker1510)" + d="m 97.226875,72.582952 c 0,0 -9.390967,-23.446878 5.899485,-45.018169" + id="path1506" /> + <path + style="fill:none;stroke:#ff0000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker1692);marker-end:url(#marker1528)" + d="m 107.63796,27.676623 c 0,0 11.11293,17.049964 7.50924,45.042653" + id="path1524" /> + <path + style="fill:none;stroke:#ff0000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker1726);marker-end:url(#marker1552)" + d="m 123.64723,74.063491 c 0,0 -2.08728,-6.595073 3.61579,-18.253844" + id="path1548" /> + <path + style="fill:none;stroke:#ff0000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker1760);marker-end:url(#marker1570)" + d="m 135.20751,48.710794 c 0,0 13.47163,6.568286 13.01054,23.537195" + id="path1566" /> + </g> +</svg> diff --git a/doc/livarot-images/sweepline-list-node-add-removal.svg b/doc/livarot-images/sweepline-list-node-add-removal.svg new file mode 100644 index 0000000..10dd86e --- /dev/null +++ b/doc/livarot-images/sweepline-list-node-add-removal.svg @@ -0,0 +1,524 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="1000" + height="1000" + viewBox="0 0 1000 1000" + version="1.1" + id="svg6" + inkscape:version="1.1-dev (037b845d7b, 2020-08-19, custom)" + sodipodi:docname="sweepline-list-node-add-removal.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"> + <defs + id="defs2"> + <marker + style="overflow:visible;" + id="marker1675" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="scale(0.8) rotate(180) translate(12.5,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path1673" /> + </marker> + <marker + style="overflow:visible;" + id="marker1603" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="scale(0.8) rotate(180) translate(12.5,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path1601" /> + </marker> + <marker + style="overflow:visible;" + id="marker1501" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.8) rotate(180) translate(12.5,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path1499" /> + </marker> + <marker + style="overflow:visible;" + id="marker1491" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="scale(0.8) rotate(180) translate(12.5,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path1489" /> + </marker> + <marker + style="overflow:visible;" + id="marker1481" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="scale(0.8) rotate(180) translate(12.5,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path1479" /> + </marker> + <marker + style="overflow:visible;" + id="marker1471" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="scale(0.8) rotate(180) translate(12.5,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path1469" /> + </marker> + <marker + style="overflow:visible" + id="marker1461" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Lstart" + inkscape:isstock="true"> + <path + transform="scale(0.8) translate(12.5,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path1459" /> + </marker> + <marker + style="overflow:visible" + id="marker1451" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Lstart" + inkscape:isstock="true"> + <path + transform="scale(0.8) translate(12.5,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path1449" /> + </marker> + <marker + style="overflow:visible" + id="marker1235" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Lstart" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.8) translate(12.5,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path1233" /> + </marker> + <marker + style="overflow:visible;" + id="marker1219" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.8) rotate(180) translate(12.5,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path1217" /> + </marker> + <marker + style="overflow:visible;" + id="marker1195" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.8) rotate(180) translate(12.5,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path1193" /> + </marker> + <marker + style="overflow:visible" + id="Arrow1Lstart" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Lstart" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.8) translate(12.5,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path913" /> + </marker> + <marker + style="overflow:visible;" + id="marker875" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.8) rotate(180) translate(12.5,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path873" /> + </marker> + <marker + style="overflow:visible;" + id="marker1121" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.8) rotate(180) translate(12.5,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path1119" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.64995572" + inkscape:cx="361.56309" + inkscape:cy="626.96579" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + units="px" + width="1000px" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" /> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + id="g1847"> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none" + id="rect829" + width="144.05873" + height="72.029366" + x="227.12935" + y="113.07404" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none" + id="rect833" + width="144.05873" + height="72.029366" + x="614.05084" + y="113.07404" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1121)" + d="M 398.25309,147.95307 H 580.47504" + id="path835" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="248.59921" + y="158.92729" + id="text851"><tspan + sodipodi:role="line" + id="tspan849" + x="248.59921" + y="158.92729">Node A</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="638.16888" + y="158.95834" + id="text855"><tspan + sodipodi:role="line" + id="tspan853" + x="638.16888" + y="158.95834">Node C</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none" + id="rect857" + width="144.05873" + height="72.029366" + x="416.0134" + y="289.00961" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="162.1252" + y="150.03897" + id="text861"><tspan + sodipodi:role="line" + id="tspan859" + x="162.1252" + y="150.03897">...</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="799.82977" + y="150.34343" + id="text865"><tspan + sodipodi:role="line" + id="tspan863" + x="799.82977" + y="150.34343">...</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="438.8143" + y="334.28433" + id="text869"><tspan + sodipodi:role="line" + id="tspan867" + x="438.8143" + y="334.28433">Node B</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker875)" + d="m 479.34323,276.90051 c 0,0 -7.47623,-74.55159 0.49492,-110.25811" + id="path871" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="482.88586" + y="214.18095" + id="text891"><tspan + sodipodi:role="line" + id="tspan889" + x="482.88586" + y="214.18095" + style="font-size:16px">Node B should</tspan><tspan + sodipodi:role="line" + x="482.88586" + y="234.18095" + id="tspan893" + style="font-size:16px">go here!</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow1Lstart);marker-end:url(#marker1195)" + d="m 289.35549,204.02359 c 0,0 -14.54869,110.6081 100.03454,119.46346" + id="path911" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker1235);marker-end:url(#marker1219)" + d="m 687.26266,201.72696 c 0,0 18.23666,80.13707 -87.49543,121.9944" + id="path1215" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="136.2262" + y="336.39407" + id="text1281"><tspan + sodipodi:role="line" + x="136.2262" + y="336.39407" + id="tspan1279" + style="font-size:16px">Test intersection of Node A</tspan><tspan + sodipodi:role="line" + x="136.2262" + y="356.39407" + style="font-size:16px" + id="tspan1285">and Node B</tspan></text> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="650.39099" + y="326.96677" + id="text1291"><tspan + sodipodi:role="line" + x="650.39099" + y="326.96677" + style="font-size:16px" + id="tspan1295">Test interesction of Node B</tspan><tspan + sodipodi:role="line" + x="650.39099" + y="346.96677" + style="font-size:16px" + id="tspan1299">and Node C</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="406.17383" + y="83.143784" + id="text1355"><tspan + sodipodi:role="line" + id="tspan1353" + x="406.17383" + y="83.143784">Node Insertion</tspan></text> + </g> + <g + id="g1993"> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none" + id="rect1393" + width="144.05873" + height="72.029366" + x="163.45003" + y="593.651" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none" + id="rect1395" + width="144.05873" + height="72.029366" + x="664.37152" + y="593.651" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1501)" + d="m 321.20528,628.87828 h 64.22195" + id="path1397" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="186.91988" + y="639.50427" + id="text1401"><tspan + sodipodi:role="line" + id="tspan1399" + x="186.91988" + y="639.50427">Node A</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="688.48956" + y="639.53534" + id="text1405"><tspan + sodipodi:role="line" + id="tspan1403" + x="688.48956" + y="639.53534">Node C</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none" + id="rect1407" + width="144.05873" + height="72.029366" + x="408.97522" + y="593.33228" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="106.44588" + y="630.61597" + id="text1411"><tspan + sodipodi:role="line" + id="tspan1409" + x="106.44588" + y="630.61597">...</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="868.15045" + y="630.92041" + id="text1415"><tspan + sodipodi:role="line" + id="tspan1413" + x="868.15045" + y="630.92041">...</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="431.77612" + y="638.60706" + id="text1419"><tspan + sodipodi:role="line" + id="tspan1417" + x="431.77612" + y="638.60706">Node B</tspan></text> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="396.54059" + y="708.59326" + id="text1443"><tspan + sodipodi:role="line" + x="396.54059" + y="708.59326" + style="font-size:16px" + id="tspan1441">Node B is to removed!</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="390.60059" + y="554.08777" + id="text1447"><tspan + sodipodi:role="line" + id="tspan1445" + x="390.60059" + y="554.08777">Node Removal</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1603)" + d="m 575.83993,628.89852 h 64.22195" + id="path1599" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:200px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="421.59924" + y="689.41443" + id="text1657"><tspan + sodipodi:role="line" + id="tspan1655" + x="421.59924" + y="689.41443" + style="font-size:200px;fill:#ff0000">x</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker1461);marker-end:url(#marker1675)" + d="m 235.19859,678.95928 c 0,0 261.58614,386.40472 501.64177,-0.73691" + id="path1659" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="334.86252" + y="879.20044" + id="text1697"><tspan + sodipodi:role="line" + id="tspan1695" + x="334.86252" + y="879.20044" + style="font-size:16px">Test intersection of Node A and Node C</tspan></text> + </g> + </g> +</svg> diff --git a/doc/livarot-images/sweepline-list-node-event.svg b/doc/livarot-images/sweepline-list-node-event.svg new file mode 100644 index 0000000..113b038 --- /dev/null +++ b/doc/livarot-images/sweepline-list-node-event.svg @@ -0,0 +1,749 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="968.10083" + height="331.81192" + viewBox="0 0 968.10083 331.81192" + version="1.1" + id="svg6" + inkscape:version="1.1-dev (037b845d7b, 2020-08-19, custom)" + sodipodi:docname="sweepline-list-node-event.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"> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="marker5479" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path5477" /> + </marker> + <marker + style="overflow:visible" + id="marker5433" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path5431" /> + </marker> + <marker + style="overflow:visible" + id="marker5393" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path5391" /> + </marker> + <marker + style="overflow:visible" + id="marker5353" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path5351" /> + </marker> + <marker + style="overflow:visible" + id="marker5313" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path5311" /> + </marker> + <marker + style="overflow:visible" + id="marker5267" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path5265" /> + </marker> + <marker + style="overflow:visible" + id="marker5033" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path5031" /> + </marker> + <marker + style="overflow:visible" + id="marker5023" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path5021" /> + </marker> + <marker + style="overflow:visible" + id="marker4979" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path4977" /> + </marker> + <marker + style="overflow:visible" + id="marker4949" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path4947" /> + </marker> + <marker + style="overflow:visible" + id="marker4905" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path4903" /> + </marker> + <marker + style="overflow:visible" + id="marker1675" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1673" /> + </marker> + <marker + style="overflow:visible" + id="marker1603" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1601" /> + </marker> + <marker + style="overflow:visible" + id="marker1491" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1489" /> + </marker> + <marker + style="overflow:visible" + id="marker1481" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1479" /> + </marker> + <marker + style="overflow:visible" + id="marker1471" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1469" /> + </marker> + <marker + style="overflow:visible" + id="marker1461" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lstart" + inkscape:isstock="true"> + <path + transform="matrix(0.8,0,0,0.8,10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1459" /> + </marker> + <marker + style="overflow:visible" + id="marker1451" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lstart" + inkscape:isstock="true"> + <path + transform="matrix(0.8,0,0,0.8,10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1449" /> + </marker> + <marker + style="overflow:visible" + id="marker1501" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1499" /> + </marker> + <marker + style="overflow:visible" + id="marker1603-3" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1601-6" /> + </marker> + <marker + style="overflow:visible" + id="marker2716" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path2714" /> + </marker> + <marker + style="overflow:visible" + id="marker2822" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path2820" /> + </marker> + <marker + style="overflow:visible" + id="marker2910" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path2908" /> + </marker> + <marker + style="overflow:visible" + id="marker3148" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lstart" + inkscape:isstock="true"> + <path + transform="matrix(0.8,0,0,0.8,10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path3146" /> + </marker> + <marker + style="overflow:visible" + id="marker3158" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path3156" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1" + inkscape:cx="456" + inkscape:cy="218.5" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + units="px" + width="1000px" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + fit-margin-top="10" + fit-margin-left="10" + fit-margin-right="10" + fit-margin-bottom="10" /> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-19.258692,-171.43173)"> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none" + id="rect1393" + width="144.05873" + height="72.029366" + x="79.677895" + y="184.81586" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none" + id="rect1395" + width="144.05873" + height="72.029366" + x="552.59943" + y="184.81586" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1501)" + d="m 235.43316,222.04313 h 64.22195" + id="path1397" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="103.14777" + y="230.66913" + id="text1401"><tspan + sodipodi:role="line" + id="tspan1399" + x="103.14777" + y="230.66913">Node A</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="576.71747" + y="230.7002" + id="text1405"><tspan + sodipodi:role="line" + id="tspan1403" + x="576.71747" + y="230.7002">Node C</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none" + id="rect1407" + width="144.05873" + height="72.029366" + x="313.20309" + y="184.49713" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="38.673744" + y="221.78082" + id="text1411"><tspan + sodipodi:role="line" + id="tspan1409" + x="38.673744" + y="221.78082">...</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="336.004" + y="229.77191" + id="text1419"><tspan + sodipodi:role="line" + id="tspan1417" + x="336.004" + y="229.77191">Node B</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="372.01352" + y="468.19766" + id="text1447"><tspan + sodipodi:role="line" + id="tspan1445" + x="372.01352" + y="468.19766">Intersection Event Y</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1603-3)" + d="m 470.06781,220.06337 h 64.22195" + id="path1599" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker2716)" + d="m 711.3125,221.08891 h 64.22195" + id="path2712" + sodipodi:nodetypes="cc" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none" + id="rect2736" + width="144.05873" + height="72.029366" + x="790.00989" + y="183.93173" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="814.12793" + y="229.81607" + id="text2740"><tspan + sodipodi:role="line" + id="tspan2738" + x="814.12793" + y="229.81607">Node D</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="954.80743" + y="222.15726" + id="text2768"><tspan + sodipodi:role="line" + id="tspan2766" + x="954.80743" + y="222.15726">...</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5" + id="rect4865" + width="280.40131" + height="60.872498" + x="366.26901" + y="427.63132" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1675)" + d="m 411.9676,421.78292 c 0,0 -20.52681,-102.8869 -10.50871,-145.89724" + id="path4887" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker4905)" + d="m 602.98362,419.05248 c 0,0 20.52681,-102.8869 10.50871,-145.89724" + id="path4901" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="35.503197" + y="467.66599" + id="text4929"><tspan + sodipodi:role="line" + id="tspan4927" + x="35.503197" + y="467.66599">Intersection Event X</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5" + id="rect4931" + width="280.40131" + height="60.872498" + x="31.758692" + y="427.09964" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="685.30121" + y="470.4375" + id="text4935"><tspan + sodipodi:role="line" + id="tspan4933" + x="685.30121" + y="470.4375">Intersection Event Z</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5" + id="rect4937" + width="280.40131" + height="60.872498" + x="681.5567" + y="429.87115" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker4949)" + d="m 275.70823,415.58419 c 0,0 17.41976,-99.46264 48.07449,-147.62808" + id="path4945" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker4979)" + d="m 118.09847,415.23126 c 0,0 -20.526812,-102.8869 -10.50871,-145.89724" + id="path4975" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker5033)" + d="m 701.16684,420.74245 c 0,0 -20.52681,-102.8869 -10.50871,-145.89724" + id="path5017" /> + <path + style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker5023)" + d="m 894.18286,416.01201 c 0,0 20.52681,-102.8869 10.50871,-145.89724" + id="path5019" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#0000ff;stroke:none" + x="31.799215" + y="397.14044" + id="text5241"><tspan + sodipodi:role="line" + id="tspan5239" + x="31.799215" + y="397.14044" + style="font-size:16px;fill:#0000ff;stroke:none">sweep[0]</tspan></text> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#0000ff;stroke:none" + x="201.39487" + y="394.77426" + id="text5245"><tspan + sodipodi:role="line" + id="tspan5243" + x="201.39487" + y="394.77426" + style="font-size:16px;fill:#0000ff;stroke:none">sweep[1]</tspan></text> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#0000ff;stroke:none" + x="331.86487" + y="412.71164" + id="text5249"><tspan + sodipodi:role="line" + id="tspan5247" + x="331.86487" + y="412.71164" + style="font-size:16px;fill:#0000ff;stroke:none">sweep[0]</tspan></text> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#0000ff;stroke:none" + x="594.96307" + y="399.85498" + id="text5253"><tspan + sodipodi:role="line" + id="tspan5251" + x="594.96307" + y="399.85498" + style="font-size:16px;fill:#0000ff;stroke:none">sweep[1]</tspan></text> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#0000ff;stroke:none" + x="644.31329" + y="366.16492" + id="text5257"><tspan + sodipodi:role="line" + id="tspan5255" + x="644.31329" + y="366.16492" + style="font-size:16px;fill:#0000ff;stroke:none">sweep[0]</tspan></text> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#0000ff;stroke:none" + x="818.49713" + y="398.42136" + id="text5261"><tspan + sodipodi:role="line" + id="tspan5259" + x="818.49713" + y="398.42136" + style="font-size:16px;fill:#0000ff;stroke:none">sweep[1]</tspan></text> + <path + style="fill:none;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker5267)" + d="m 146.80155,268.85211 c 0,0 17.80183,84.37686 9.26573,141.4038" + id="path5263" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000;stroke:none" + x="161.88095" + y="288.25156" + id="text5301"><tspan + sodipodi:role="line" + id="tspan5299" + x="161.88095" + y="288.25156" + style="font-size:16px;fill:#ff0000;stroke:none">evt[1]</tspan></text> + <path + style="fill:none;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker5313)" + d="m 338.14022,269.7805 c 0,0 -11.59661,85.01459 -40.50607,144.5068" + id="path5309" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000;stroke:none" + x="341.47235" + y="286.50262" + id="text5341"><tspan + sodipodi:role="line" + id="tspan5339" + x="341.47235" + y="286.50262" + style="font-size:16px;fill:#ff0000;stroke:none">evt[0]</tspan></text> + <path + style="fill:none;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker5353)" + d="m 438.36393,268.58972 c 0,0 9.90869,82.06385 -2.54565,147.47676" + id="path5349" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000;stroke:none" + x="451.87653" + y="285.96515" + id="text5381"><tspan + sodipodi:role="line" + id="tspan5379" + x="451.87653" + y="285.96515" + style="font-size:16px;fill:#ff0000;stroke:none">evt[1]</tspan></text> + <path + style="fill:none;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker5393)" + d="m 586.78974,268.88019 c 0,0 9.90869,82.06385 -2.54565,147.47676" + id="path5389" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000;stroke:none" + x="530.96545" + y="288.37717" + id="text5421"><tspan + sodipodi:role="line" + id="tspan5419" + x="530.96545" + y="288.37717" + style="font-size:16px;fill:#ff0000;stroke:none">evt[0]</tspan></text> + <path + style="fill:none;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker5433)" + d="m 705.77116,266.30022 c 0,0 30.56394,86.10881 18.1096,151.52172" + id="path5429" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000;stroke:none" + x="824.99908" + y="285.34741" + id="text5467"><tspan + sodipodi:role="line" + id="tspan5465" + x="824.99908" + y="285.34741" + style="font-size:16px;fill:#ff0000;stroke:none">evt[0]</tspan></text> + <path + style="fill:none;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker5479)" + d="m 824.20936,267.3433 c 0,0 -30.56394,86.10881 -18.1096,151.52172" + id="path5475" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000;stroke:none" + x="728.1355" + y="288.90375" + id="text5603"><tspan + sodipodi:role="line" + id="tspan5601" + x="728.1355" + y="288.90375" + style="font-size:16px;fill:#ff0000;stroke:none">evt[1]</tspan></text> + </g> +</svg> diff --git a/doc/livarot-images/sweepline-list-node-intersection.svg b/doc/livarot-images/sweepline-list-node-intersection.svg new file mode 100644 index 0000000..d625ee8 --- /dev/null +++ b/doc/livarot-images/sweepline-list-node-intersection.svg @@ -0,0 +1,607 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="976.51135" + height="558.99365" + viewBox="0 0 976.51135 558.99365" + version="1.1" + id="svg6" + inkscape:version="1.1-dev (037b845d7b, 2020-08-19, custom)" + sodipodi:docname="sweepline-list-node-intersection.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"> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="marker3158" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path3156" /> + </marker> + <marker + style="overflow:visible" + id="marker3148" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lstart" + inkscape:isstock="true"> + <path + transform="matrix(0.8,0,0,0.8,10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path3146" /> + </marker> + <marker + style="overflow:visible" + id="marker3112" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path3110" /> + </marker> + <marker + style="overflow:visible" + id="marker3090" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lstart" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(0.8,0,0,0.8,10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path3088" /> + </marker> + <marker + style="overflow:visible" + id="marker3066" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path3064" /> + </marker> + <marker + style="overflow:visible" + id="marker3018" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path3016" /> + </marker> + <marker + style="overflow:visible" + id="marker3002" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path3000" /> + </marker> + <marker + style="overflow:visible" + id="marker2920" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path2918" /> + </marker> + <marker + style="overflow:visible" + id="marker2910" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path2908" /> + </marker> + <marker + style="overflow:visible" + id="marker2900" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path2898" /> + </marker> + <marker + style="overflow:visible" + id="marker2822" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path2820" /> + </marker> + <marker + style="overflow:visible" + id="marker2716" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path2714" /> + </marker> + <marker + style="overflow:visible" + id="marker1675" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1673" /> + </marker> + <marker + style="overflow:visible" + id="marker1603" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1601" /> + </marker> + <marker + style="overflow:visible" + id="marker1501" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1499" /> + </marker> + <marker + style="overflow:visible" + id="marker1491" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1489" /> + </marker> + <marker + style="overflow:visible" + id="marker1481" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1479" /> + </marker> + <marker + style="overflow:visible" + id="marker1471" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1469" /> + </marker> + <marker + style="overflow:visible" + id="marker1461" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lstart" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(0.8,0,0,0.8,10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1459" /> + </marker> + <marker + style="overflow:visible" + id="marker1451" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lstart" + inkscape:isstock="true"> + <path + transform="matrix(0.8,0,0,0.8,10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1449" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.5" + inkscape:cx="234" + inkscape:cy="441" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + units="px" + width="1000px" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + fit-margin-left="20" + fit-margin-right="20" + fit-margin-bottom="20" + fit-margin-top="20" /> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-4.514839,-14.117568)"> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none" + id="rect1393" + width="144.05873" + height="72.029366" + x="62.667423" + y="174.41948" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none" + id="rect1395" + width="144.05873" + height="72.029366" + x="535.58893" + y="174.41948" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1501)" + d="m 218.42268,211.64676 h 64.22195" + id="path1397" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="86.137276" + y="220.27275" + id="text1401"><tspan + sodipodi:role="line" + id="tspan1399" + x="86.137276" + y="220.27275">Node A</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="559.70697" + y="220.30382" + id="text1405"><tspan + sodipodi:role="line" + id="tspan1403" + x="559.70697" + y="220.30382">Node C</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none" + id="rect1407" + width="144.05873" + height="72.029366" + x="296.1926" + y="174.10075" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="21.663273" + y="211.38445" + id="text1411"><tspan + sodipodi:role="line" + id="tspan1409" + x="21.663273" + y="211.38445">...</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="318.9935" + y="219.37553" + id="text1419"><tspan + sodipodi:role="line" + id="tspan1417" + x="318.9935" + y="219.37553">Node B</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="383.48172" + y="54.37801" + id="text1447"><tspan + sodipodi:role="line" + id="tspan1445" + x="383.48172" + y="54.37801">Intersection Event</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1603)" + d="m 453.05733,209.667 h 64.22195" + id="path1599" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker2716)" + d="m 694.30202,210.69254 h 64.22195" + id="path2712" + sodipodi:nodetypes="cc" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none" + id="rect2736" + width="144.05873" + height="72.029366" + x="772.99939" + y="173.53534" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="797.11743" + y="219.41968" + id="text2740"><tspan + sodipodi:role="line" + id="tspan2738" + x="797.11743" + y="219.41968">Node D</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="937.79694" + y="211.76088" + id="text2768"><tspan + sodipodi:role="line" + id="tspan2766" + x="937.79694" + y="211.76088">...</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker1461);marker-end:url(#marker2822)" + d="m 367.07502,165.02758 c 0,0 122.44573,-169.2719463 237.84173,-1.9313" + id="path2806" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none" + id="rect2860" + width="144.05873" + height="72.029366" + x="63.344536" + y="350.12198" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none" + id="rect2862" + width="144.05873" + height="72.029366" + x="536.26605" + y="350.12198" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker2920)" + d="m 219.0998,387.34925 h 64.22195" + id="path2864" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="86.814392" + y="395.97525" + id="text2868"><tspan + sodipodi:role="line" + id="tspan2866" + x="86.814392" + y="395.97525">Node A</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="560.38409" + y="396.00632" + id="text2872"><tspan + sodipodi:role="line" + id="tspan2870" + x="560.38409" + y="396.00632">Node B</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none" + id="rect2874" + width="144.05873" + height="72.029366" + x="296.86972" + y="349.80325" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="22.340389" + y="387.08694" + id="text2878"><tspan + sodipodi:role="line" + id="tspan2876" + x="22.340389" + y="387.08694">...</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="319.67062" + y="395.07803" + id="text2882"><tspan + sodipodi:role="line" + id="tspan2880" + x="319.67062" + y="395.07803">Node C</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker2910)" + d="M 453.73445,385.36949 H 517.9564" + id="path2884" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker2900)" + d="m 694.97914,386.39503 h 64.22195" + id="path2886" + sodipodi:nodetypes="cc" /> + <rect + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none" + id="rect2888" + width="144.05873" + height="72.029366" + x="773.67651" + y="349.23782" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="797.79456" + y="395.12216" + id="text2892"><tspan + sodipodi:role="line" + id="tspan2890" + x="797.79456" + y="395.12216">Node D</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="938.47406" + y="387.46338" + id="text2896"><tspan + sodipodi:role="line" + id="tspan2894" + x="938.47406" + y="387.46338">...</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker3018)" + d="m 354.89564,261.0309 c 23.13156,81.68357 127.46419,10.52624 205.68985,76.25342" + id="path2982" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker3066)" + d="M 566.79266,261.80415 C 543.6611,343.48772 439.32847,272.33039 361.10281,338.05757" + id="path3062" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker3090);marker-end:url(#marker3112)" + d="m 148.79191,446.67774 c 0,0 101.99589,128.05773 194.32452,1.50452" + id="path3086" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker3148);marker-end:url(#marker3158)" + d="m 627.74341,445.12726 c 0,0 101.99589,128.05773 194.32452,1.50452" + id="path3144" /> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="155.84358" + y="528.97888" + id="text3192"><tspan + sodipodi:role="line" + id="tspan3190" + x="155.84358" + y="528.97888" + style="font-size:16px">Test intersection between</tspan><tspan + sodipodi:role="line" + x="155.84358" + y="548.97888" + style="font-size:16px" + id="tspan3194">Node A and Node C</tspan></text> + <text + xml:space="preserve" + style="font-size:16px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="636.01483" + y="532.88464" + id="text3200"><tspan + sodipodi:role="line" + id="tspan3196" + x="636.01483" + y="532.88464" + style="font-size:16px">Test intersection between</tspan><tspan + sodipodi:role="line" + x="636.01483" + y="552.88464" + style="font-size:16px" + id="tspan3198">Node B and Node D</tspan></text> + </g> +</svg> diff --git a/doc/livarot-images/teste-intersection.svg b/doc/livarot-images/teste-intersection.svg new file mode 100644 index 0000000..6da9eff --- /dev/null +++ b/doc/livarot-images/teste-intersection.svg @@ -0,0 +1,193 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="1000" + height="500" + viewBox="0 0 1000 500" + version="1.1" + id="svg6" + inkscape:version="1.1-dev (6f52e792f5, 2020-08-23, custom)" + sodipodi:docname="teste-intersection.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"> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="marker1039" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1037" /> + </marker> + <marker + style="overflow:visible" + id="marker1029" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1027" /> + </marker> + <marker + style="overflow:visible" + id="marker979" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path977" /> + </marker> + <marker + style="overflow:visible" + id="marker949" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path947" /> + </marker> + <marker + style="overflow:visible" + id="marker1121" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1119" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1.0419628" + inkscape:cx="481.78306" + inkscape:cy="314.31066" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + units="px" + width="1000px" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + height="500px" /> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;stroke:#000000;stroke-width:2.72916;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1121)" + d="M 100.23342,95.023744 359.84197,387.71018" + id="path829" /> + <path + style="fill:none;stroke:#000000;stroke-width:2.72916;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker979)" + d="M 361.73888,93.579984 102.13033,386.26641" + id="path975" /> + <path + style="fill:none;stroke:#000000;stroke-width:2.72916;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1039)" + d="M 577.69298,97.217464 837.30153,389.90391" + id="path1023" /> + <path + style="fill:none;stroke:#000000;stroke-width:2.72916;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1029)" + d="M 839.19844,95.773704 579.58989,388.46014" + id="path1025" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="79.295097" + y="83.473335" + id="text1085"><tspan + sodipodi:role="line" + id="tspan1083" + x="79.295097" + y="83.473335">left</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="339.72794" + y="83.15741" + id="text1089"><tspan + sodipodi:role="line" + id="tspan1087" + x="339.72794" + y="83.15741">right</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="550.44861" + y="80.070129" + id="text1093"><tspan + sodipodi:role="line" + id="tspan1091" + x="550.44861" + y="80.070129">right</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="810.88141" + y="79.754204" + id="text1097"><tspan + sodipodi:role="line" + id="tspan1095" + x="810.88141" + y="79.754204">left</tspan></text> + <text + xml:space="preserve" + style="font-size:21.3333px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#008000" + x="69.516663" + y="433.01526" + id="text1117"><tspan + sodipodi:role="line" + id="tspan1115" + x="69.516663" + y="433.01526" + style="font-size:21.3333px">intersection will be detected!</tspan></text> + <text + xml:space="preserve" + style="font-size:21.3333px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000;stroke:none" + x="543.74603" + y="429.28043" + id="text1121"><tspan + sodipodi:role="line" + id="tspan1119" + x="543.74603" + y="429.28043" + style="font-size:21.3333px;fill:#ff0000;stroke:none">intersection won't be detected!</tspan></text> + </g> +</svg> diff --git a/doc/livarot-images/winding-brutal-bounds.svg b/doc/livarot-images/winding-brutal-bounds.svg new file mode 100644 index 0000000..8686d52 --- /dev/null +++ b/doc/livarot-images/winding-brutal-bounds.svg @@ -0,0 +1,121 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="1000" + height="1000" + viewBox="0 0 1000 1000" + version="1.1" + id="svg6" + inkscape:version="1.1-dev (d255dbba1b, 2020-08-17, custom)" + sodipodi:docname="winding-brutal-bounds.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"> + <defs + id="defs2"> + <marker + style="overflow:visible;" + id="Arrow1Lend" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="scale(0.8) rotate(180) translate(12.5,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path1262" /> + </marker> + <marker + style="overflow:visible;" + id="marker841" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="scale(0.8) rotate(180) translate(12.5,0)" + style="fill-rule:evenodd;stroke:#9d9d9d;stroke-width:1pt;stroke-opacity:1;fill:#9d9d9d;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path839" /> + </marker> + <marker + style="overflow:visible;" + id="marker1121" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.8) rotate(180) translate(12.5,0)" + style="fill-rule:evenodd;stroke:#9d9d9d;stroke-width:1pt;stroke-opacity:1;fill:#9d9d9d;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path1119" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.75218964" + inkscape:cx="438.71915" + inkscape:cy="477.93798" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + units="px" + width="1000px" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" /> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;stroke:#9d9d9d;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1121)" + d="m 268.58337,281.77376 381.89668,-75.04827 170.54306,234.09509 3.59727,293.7843 -240.71554,101.7599 -382.00521,41.82466 -40.08303,-314.83498 z" + id="path829" /> + <path + style="fill:none;stroke:#9d9d9d;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker841)" + d="m 386.72433,423.48759 248.27774,-57.7043 51.39574,230.68115 -79.13973,115.11225 -303.03516,-17.57966 z" + id="path837" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend);stroke-miterlimit:4;stroke-dasharray:none" + d="m 386.72433,423.48759 248.27774,-57.7043" + id="path1257" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4, 4;stroke-dashoffset:0;stroke-opacity:1" + d="M 385.82101,4.5522816 V 998.06984" + id="path1533" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4, 4;stroke-dashoffset:0;stroke-opacity:1" + d="M 634.64283,2.2138937 V 995.73145" + id="path1535" /> + <circle + style="opacity:1;fill:#000000;fill-rule:evenodd;stroke:#9d9d9d;stroke-width:0.675296;stroke-miterlimit:4;stroke-dasharray:2.70118, 2.70118;stroke-dashoffset:0;stroke-opacity:1" + id="path1537" + cx="501.03006" + cy="531.95819" + r="7.3470368" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="516.05164" + y="530.62878" + id="text1541"><tspan + sodipodi:role="line" + id="tspan1539" + x="516.05164" + y="530.62878">px</tspan></text> + </g> +</svg> diff --git a/doc/livarot-images/winding-brutal-endpoints-end.svg b/doc/livarot-images/winding-brutal-endpoints-end.svg new file mode 100644 index 0000000..8651451 --- /dev/null +++ b/doc/livarot-images/winding-brutal-endpoints-end.svg @@ -0,0 +1,497 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="1500" + height="500" + viewBox="0 0 1500 500" + version="1.1" + id="svg6" + inkscape:version="1.1-dev (d255dbba1b, 2020-08-17, custom)" + sodipodi:docname="winding-brutal-endpoints-end.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"> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="marker1121" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1119" /> + </marker> + <marker + style="overflow:visible" + id="Arrow1Lend" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1262" /> + </marker> + <marker + style="overflow:visible" + id="marker1942" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1940" /> + </marker> + <marker + style="overflow:visible" + id="marker2028" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path2026" /> + </marker> + <marker + style="overflow:visible" + id="marker2090" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path2088" /> + </marker> + <marker + style="overflow:visible" + id="marker2184" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path2182" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1.2996964" + inkscape:cx="1217.2073" + inkscape:cy="312.76535" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + units="px" + width="1500px" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" /> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3;stroke-dashoffset:0;stroke-opacity:1" + d="M 97.829677,62.083183 V 432.4746" + id="path1878" /> + <path + style="fill:none;stroke:#000000;stroke-width:2.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Lend)" + d="m 391.74945,230.44379 -294.128343,6.6255" + id="path1712" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:2.2;stroke-miterlimit:4;stroke-dasharray:none" + id="path1838" + cx="97.440231" + cy="237.38846" + r="6.9231076" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:2.2;stroke-miterlimit:4;stroke-dasharray:none" + id="circle1840" + cx="396.2977" + cy="230.35394" + r="6.9231076" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="413.01929" + y="258.05316" + id="text1844"><tspan + sodipodi:role="line" + id="tspan1842" + x="413.01929" + y="258.05316">st</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="52.019428" + y="254.02423" + id="text1848"><tspan + sodipodi:role="line" + id="tspan1846" + x="52.019428" + y="254.02423">en</tspan></text> + <circle + style="fill:#0000ff;fill-rule:evenodd;stroke:none;stroke-width:2.2;stroke-miterlimit:4;stroke-dasharray:none" + id="circle1872" + cx="97.669662" + cy="144.77304" + r="6.9231076" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="115.17683" + y="148.27361" + id="text1876"><tspan + sodipodi:role="line" + id="tspan1874" + x="115.17683" + y="148.27361">px</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3;stroke-dashoffset:0;stroke-opacity:1" + d="M 508.43652,67.795173 V 438.18658" + id="path1918" /> + <path + style="fill:none;stroke:#000000;stroke-width:2.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1942)" + d="M 508.22795,68.781263 508.00138,327.99903" + id="path1920" + sodipodi:nodetypes="cc" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:2.2;stroke-miterlimit:4;stroke-dasharray:none" + id="circle1922" + cx="508.04703" + cy="69.100441" + r="6.9231076" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:2.2;stroke-miterlimit:4;stroke-dasharray:none" + id="circle1924" + cx="508.47964" + cy="331.97455" + r="6.9231076" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="469.4422" + y="99.835777" + id="text1928"><tspan + sodipodi:role="line" + id="tspan1926" + x="469.4422" + y="99.835777">st</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="520.54718" + y="336.90927" + id="text1932"><tspan + sodipodi:role="line" + id="tspan1930" + x="520.54718" + y="336.90927">en</tspan></text> + <circle + style="fill:#0000ff;fill-rule:evenodd;stroke:none;stroke-width:2.2;stroke-miterlimit:4;stroke-dasharray:none" + id="circle1934" + cx="507.46701" + cy="373.78403" + r="6.9231076" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="524.76398" + y="379.10217" + id="text1938"><tspan + sodipodi:role="line" + id="tspan1936" + x="524.76398" + y="379.10217">px</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3;stroke-dashoffset:0;stroke-opacity:1" + d="M 672.03367,73.661163 V 444.05258" + id="path2004" /> + <path + style="fill:none;stroke:#000000;stroke-width:2.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker2028)" + d="M 671.8071,332.87893 672.03367,73.661163" + id="path2006" + sodipodi:nodetypes="cc" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:2.2;stroke-miterlimit:4;stroke-dasharray:none" + id="circle2008" + cx="671.64423" + cy="74.966438" + r="6.9231076" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:2.2;stroke-miterlimit:4;stroke-dasharray:none" + id="circle2010" + cx="672.07684" + cy="337.84055" + r="6.9231076" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="627.03937" + y="105.70177" + id="text2014"><tspan + sodipodi:role="line" + id="tspan2012" + x="627.03937" + y="105.70177">en</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="684.14435" + y="342.77527" + id="text2018"><tspan + sodipodi:role="line" + id="tspan2016" + x="684.14435" + y="342.77527">st</tspan></text> + <circle + style="fill:#0000ff;fill-rule:evenodd;stroke:none;stroke-width:2.2;stroke-miterlimit:4;stroke-dasharray:none" + id="circle2020" + cx="671.06421" + cy="379.65002" + r="6.9231076" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="688.36115" + y="384.96817" + id="text2024"><tspan + sodipodi:role="line" + id="tspan2022" + x="688.36115" + y="384.96817">px</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3;stroke-dashoffset:0;stroke-opacity:1" + d="M 1074.1954,68.909523 V 439.30094" + id="path2066" /> + <path + style="fill:none;stroke:#000000;stroke-width:2.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker2090)" + d="m 811.27004,274.91853 262.71676,-31.0229" + id="path2068" + sodipodi:nodetypes="cc" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:2.2;stroke-miterlimit:4;stroke-dasharray:none" + id="circle2070" + cx="1073.8058" + cy="244.21478" + r="6.9231076" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:2.2;stroke-miterlimit:4;stroke-dasharray:none" + id="circle2072" + cx="804.8031" + cy="274.3696" + r="6.9231076" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="795.71118" + y="312.6402" + id="text2076"><tspan + sodipodi:role="line" + id="tspan2074" + x="795.71118" + y="312.6402">st</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="1031.8691" + y="282.4342" + id="text2080"><tspan + sodipodi:role="line" + id="tspan2078" + x="1031.8691" + y="282.4342">en</tspan></text> + <circle + style="fill:#0000ff;fill-rule:evenodd;stroke:none;stroke-width:2.2;stroke-miterlimit:4;stroke-dasharray:none" + id="circle2110" + cx="1075.1056" + cy="351.57867" + r="6.9231076" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="1092.6128" + y="355.07922" + id="text2114"><tspan + sodipodi:role="line" + id="tspan2112" + x="1092.6128" + y="355.07922">px</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:3, 3;stroke-dashoffset:0" + id="rect2146" + width="745.49908" + height="479.21591" + x="15.103928" + y="12.970182" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3;stroke-dashoffset:0;stroke-opacity:1" + d="M 1185.0759,66.706113 V 437.09753" + id="path2160" /> + <path + style="fill:none;stroke:#000000;stroke-width:2.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker2184)" + d="M 1454.9518,287.60526 1184.8673,241.69222" + id="path2162" + sodipodi:nodetypes="cc" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:2.2;stroke-miterlimit:4;stroke-dasharray:none" + id="circle2164" + cx="1184.6863" + cy="242.01138" + r="6.9231076" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:2.2;stroke-miterlimit:4;stroke-dasharray:none" + id="circle2166" + cx="1460.5824" + cy="288.33813" + r="6.9231076" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="1444.3207" + y="327.28195" + id="text2170"><tspan + sodipodi:role="line" + id="tspan2168" + x="1444.3207" + y="327.28195">st</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="1143.5872" + y="270.00342" + id="text2174"><tspan + sodipodi:role="line" + id="tspan2172" + x="1143.5872" + y="270.00342">en</tspan></text> + <circle + style="fill:#0000ff;fill-rule:evenodd;stroke:none;stroke-width:2.2;stroke-miterlimit:4;stroke-dasharray:none" + id="circle2176" + cx="1185.9861" + cy="349.37524" + r="6.9231076" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="1203.4933" + y="352.87579" + id="text2180"><tspan + sodipodi:role="line" + id="tspan2178" + x="1203.4933" + y="352.87579">px</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#008000;stroke-width:0.987852;stroke-miterlimit:4;stroke-dasharray:2.96356, 2.96356;stroke-dashoffset:0" + id="rect2216" + width="711.75806" + height="478.97443" + x="778.21667" + y="12.970182" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="877.24799" + y="163.7778" + id="text2220"><tspan + sodipodi:role="line" + id="tspan2218" + x="877.24799" + y="163.7778">ll -= weight</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="1242.0385" + y="87.960579" + id="text2224"><tspan + sodipodi:role="line" + id="tspan2222" + x="1242.0385" + y="87.960579">rr += weight</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000" + x="146.97099" + y="50.400936" + id="text3150"><tspan + sodipodi:role="line" + id="tspan3148" + x="146.97099" + y="50.400936">en.y >= px.y</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000" + x="415.3587" + y="470.14624" + id="text3185"><tspan + sodipodi:role="line" + id="tspan3183" + x="415.3587" + y="470.14624">st.x == px.x</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000" + x="586.68628" + y="46.106606" + id="text3189"><tspan + sodipodi:role="line" + id="tspan3187" + x="586.68628" + y="46.106606">st.x == px.x</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#008000" + x="844.28601" + y="434.89484" + id="text3193"><tspan + sodipodi:role="line" + id="tspan3191" + x="844.28601" + y="434.89484">st.x < px.x</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#008000" + x="1263.3663" + y="434.08752" + id="text3197"><tspan + sodipodi:role="line" + id="tspan3195" + x="1263.3663" + y="434.08752">st.x > px.x</tspan></text> + </g> +</svg> diff --git a/doc/livarot-images/winding-brutal-endpoints-start.svg b/doc/livarot-images/winding-brutal-endpoints-start.svg new file mode 100644 index 0000000..7522dfb --- /dev/null +++ b/doc/livarot-images/winding-brutal-endpoints-start.svg @@ -0,0 +1,511 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="1500" + height="500" + viewBox="0 0 1500 500" + version="1.1" + id="svg6" + inkscape:version="1.1-dev (d255dbba1b, 2020-08-17, custom)" + sodipodi:docname="winding-brutal-endpoints-start.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"> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="marker2184" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path2182" /> + </marker> + <marker + style="overflow:visible" + id="marker2090" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path2088" /> + </marker> + <marker + style="overflow:visible" + id="marker2028" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path2026" /> + </marker> + <marker + style="overflow:visible" + id="marker1942" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1940" /> + </marker> + <marker + style="overflow:visible" + id="Arrow1Send" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Send" + inkscape:isstock="true"> + <path + transform="matrix(-0.2,0,0,-0.2,-1.2,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1274" /> + </marker> + <marker + style="overflow:visible" + id="Arrow1Lend" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1262" /> + </marker> + <marker + style="overflow:visible" + id="marker1121" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1119" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1.2996964" + inkscape:cx="1132.5722" + inkscape:cy="259.67602" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + units="px" + width="1200px" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" /> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3;stroke-dashoffset:0;stroke-opacity:1" + d="M 96.784771,60.327315 V 430.71873" + id="path1878" /> + <path + style="fill:none;stroke:#000000;stroke-width:2.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Lend)" + d="m 96.576201,235.31342 294.128349,-6.6255" + id="path1712" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:2.2;stroke-miterlimit:4;stroke-dasharray:none" + id="path1838" + cx="96.395317" + cy="235.63258" + r="6.9231076" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:2.2;stroke-miterlimit:4;stroke-dasharray:none" + id="circle1840" + cx="395.25281" + cy="228.59808" + r="6.9231076" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="57.790482" + y="266.36792" + id="text1844"><tspan + sodipodi:role="line" + id="tspan1842" + x="57.790482" + y="266.36792">st</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="411.57416" + y="252.49287" + id="text1848"><tspan + sodipodi:role="line" + id="tspan1846" + x="411.57416" + y="252.49287">en</tspan></text> + <circle + style="fill:#0000ff;fill-rule:evenodd;stroke:none;stroke-width:2.2;stroke-miterlimit:4;stroke-dasharray:none" + id="circle1872" + cx="96.624763" + cy="143.01718" + r="6.9231076" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="114.13193" + y="146.51775" + id="text1876"><tspan + sodipodi:role="line" + id="tspan1874" + x="114.13193" + y="146.51775">px</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3;stroke-dashoffset:0;stroke-opacity:1" + d="M 507.39161,66.039298 V 436.43071" + id="path1918" /> + <path + style="fill:none;stroke:#000000;stroke-width:2.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1942)" + d="M 507.18304,67.025395 506.95647,326.24316" + id="path1920" + sodipodi:nodetypes="cc" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:2.2;stroke-miterlimit:4;stroke-dasharray:none" + id="circle1922" + cx="507.00214" + cy="67.344566" + r="6.9231076" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:2.2;stroke-miterlimit:4;stroke-dasharray:none" + id="circle1924" + cx="507.43475" + cy="330.21866" + r="6.9231076" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="468.39731" + y="98.079903" + id="text1928"><tspan + sodipodi:role="line" + id="tspan1926" + x="468.39731" + y="98.079903">st</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="519.50226" + y="335.15338" + id="text1932"><tspan + sodipodi:role="line" + id="tspan1930" + x="519.50226" + y="335.15338">en</tspan></text> + <circle + style="fill:#0000ff;fill-rule:evenodd;stroke:none;stroke-width:2.2;stroke-miterlimit:4;stroke-dasharray:none" + id="circle1934" + cx="506.42212" + cy="372.02814" + r="6.9231076" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="523.71906" + y="377.34628" + id="text1938"><tspan + sodipodi:role="line" + id="tspan1936" + x="523.71906" + y="377.34628">px</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3;stroke-dashoffset:0;stroke-opacity:1" + d="M 670.98876,71.905293 V 442.29671" + id="path2004" /> + <path + style="fill:none;stroke:#000000;stroke-width:2.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker2028)" + d="M 670.76219,331.12306 670.98876,71.905293" + id="path2006" + sodipodi:nodetypes="cc" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:2.2;stroke-miterlimit:4;stroke-dasharray:none" + id="circle2008" + cx="670.5993" + cy="73.210564" + r="6.9231076" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:2.2;stroke-miterlimit:4;stroke-dasharray:none" + id="circle2010" + cx="671.03192" + cy="336.08466" + r="6.9231076" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="625.99445" + y="103.9459" + id="text2014"><tspan + sodipodi:role="line" + id="tspan2012" + x="625.99445" + y="103.9459">en</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="683.09943" + y="341.01938" + id="text2018"><tspan + sodipodi:role="line" + id="tspan2016" + x="683.09943" + y="341.01938">st</tspan></text> + <circle + style="fill:#0000ff;fill-rule:evenodd;stroke:none;stroke-width:2.2;stroke-miterlimit:4;stroke-dasharray:none" + id="circle2020" + cx="670.01929" + cy="377.89413" + r="6.9231076" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="687.31622" + y="383.21228" + id="text2024"><tspan + sodipodi:role="line" + id="tspan2022" + x="687.31622" + y="383.21228">px</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3;stroke-dashoffset:0;stroke-opacity:1" + d="M 1073.1505,67.153656 V 437.54507" + id="path2066" /> + <path + style="fill:none;stroke:#000000;stroke-width:2.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker2090)" + d="m 1072.9419,242.13976 -262.71677,31.0229" + id="path2068" + sodipodi:nodetypes="cc" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:2.2;stroke-miterlimit:4;stroke-dasharray:none" + id="circle2070" + cx="1072.761" + cy="242.45892" + r="6.9231076" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:2.2;stroke-miterlimit:4;stroke-dasharray:none" + id="circle2072" + cx="803.75818" + cy="272.61371" + r="6.9231076" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="1034.1561" + y="273.19427" + id="text2076"><tspan + sodipodi:role="line" + id="tspan2074" + x="1034.1561" + y="273.19427">st</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="796.10779" + y="305.62875" + id="text2080"><tspan + sodipodi:role="line" + id="tspan2078" + x="796.10779" + y="305.62875">en</tspan></text> + <circle + style="fill:#0000ff;fill-rule:evenodd;stroke:none;stroke-width:2.2;stroke-miterlimit:4;stroke-dasharray:none" + id="circle2110" + cx="1074.0608" + cy="349.82278" + r="6.9231076" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="1091.568" + y="353.32333" + id="text2114"><tspan + sodipodi:role="line" + id="tspan2112" + x="1091.568" + y="353.32333">px</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:3, 3;stroke-dashoffset:0" + id="rect2146" + width="745.49908" + height="479.21591" + x="14.059022" + y="11.214308" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3;stroke-dashoffset:0;stroke-opacity:1" + d="M 1184.031,64.950242 V 435.34166" + id="path2160" /> + <path + style="fill:none;stroke:#000000;stroke-width:2.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker2184)" + d="m 1183.8224,239.93635 270.0845,45.91304" + id="path2162" + sodipodi:nodetypes="cc" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:2.2;stroke-miterlimit:4;stroke-dasharray:none" + id="circle2164" + cx="1183.6415" + cy="240.25551" + r="6.9231076" /> + <circle + style="fill:#ff0000;fill-rule:evenodd;stroke:none;stroke-width:2.2;stroke-miterlimit:4;stroke-dasharray:none" + id="circle2166" + cx="1459.5376" + cy="286.58224" + r="6.9231076" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="1145.0366" + y="270.99084" + id="text2170"><tspan + sodipodi:role="line" + id="tspan2168" + x="1145.0366" + y="270.99084">st</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="1450.072" + y="318.70618" + id="text2174"><tspan + sodipodi:role="line" + id="tspan2172" + x="1450.072" + y="318.70618">en</tspan></text> + <circle + style="fill:#0000ff;fill-rule:evenodd;stroke:none;stroke-width:2.2;stroke-miterlimit:4;stroke-dasharray:none" + id="circle2176" + cx="1184.9413" + cy="347.61935" + r="6.9231076" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="1202.4485" + y="351.1199" + id="text2180"><tspan + sodipodi:role="line" + id="tspan2178" + x="1202.4485" + y="351.1199">px</tspan></text> + <rect + style="fill:none;fill-rule:evenodd;stroke:#008000;stroke-width:0.987852;stroke-miterlimit:4;stroke-dasharray:2.96356, 2.96356;stroke-dashoffset:0" + id="rect2216" + width="711.75806" + height="478.97443" + x="777.17175" + y="11.214308" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="819.9256" + y="94.482887" + id="text2220"><tspan + sodipodi:role="line" + id="tspan2218" + x="819.9256" + y="94.482887">ll += weight</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="1240.9937" + y="86.204704" + id="text2224"><tspan + sodipodi:role="line" + id="tspan2222" + x="1240.9937" + y="86.204704">rr -= weight</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000" + x="125.74956" + y="48.354774" + id="text3150"><tspan + sodipodi:role="line" + id="tspan3148" + x="125.74956" + y="48.354774">st.y >= px.y</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000" + x="420.27167" + y="41.737579" + id="text3154"><tspan + sodipodi:role="line" + id="tspan3152" + x="420.27167" + y="41.737579">en.x == px.x</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000" + x="574.83295" + y="470.11664" + id="text3158"><tspan + sodipodi:role="line" + id="tspan3156" + x="574.83295" + y="470.11664">en.x == px.x</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#008000" + x="845.35382" + y="457.98773" + id="text3162"><tspan + sodipodi:role="line" + id="tspan3160" + x="845.35382" + y="457.98773">en.x < px.x</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#008000" + x="1265.2245" + y="452.51105" + id="text3166"><tspan + sodipodi:role="line" + id="tspan3164" + x="1265.2245" + y="452.51105">en.x > px.x</tspan></text> + </g> +</svg> diff --git a/doc/livarot-images/winding-brutal-endpoints.svg b/doc/livarot-images/winding-brutal-endpoints.svg new file mode 100644 index 0000000..9cab8c4 --- /dev/null +++ b/doc/livarot-images/winding-brutal-endpoints.svg @@ -0,0 +1,188 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="829.88721" + height="493.87897" + viewBox="0 0 829.88721 493.87897" + version="1.1" + id="svg6" + inkscape:version="1.1-dev (d255dbba1b, 2020-08-17, custom)" + sodipodi:docname="winding-brutal-endpoints.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"> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="marker1365" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1363" /> + </marker> + <marker + style="overflow:visible" + id="marker1355" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1353" /> + </marker> + <marker + style="overflow:visible" + id="marker1033" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1031" /> + </marker> + <marker + style="overflow:visible" + id="marker1121" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1119" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.45951208" + inkscape:cx="278.55633" + inkscape:cy="477.68058" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + units="px" + width="1000px" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + fit-margin-top="10" + fit-margin-left="10" + fit-margin-right="10" + fit-margin-bottom="10" /> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-115.52707,-7.680121)"> + <path + style="fill:none;stroke:#000000;stroke-width:2.3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1121)" + d="M 125.72018,133.13399 499.61226,69.44625" + id="path1015" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:2.3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1033)" + d="M 499.61226,69.44625 924.63869,130.4916" + id="path1029" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:2.3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1365)" + d="M 498.83224,293.19301 136.33836,356.14224" + id="path1349" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:2.3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1355)" + d="M 935.25687,353.49985 498.83224,293.19301" + id="path1351" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2, 4;stroke-dashoffset:0;stroke-opacity:1" + d="M 499.32489,17.680121 V 491.55908" + id="path1421" + sodipodi:nodetypes="cc" /> + <circle + style="opacity:1;fill:#ff0000;fill-rule:evenodd;stroke:#008000;stroke-width:0.0311553;stroke-miterlimit:4;stroke-dasharray:2, 4;stroke-dashoffset:0" + id="path1457" + cx="499.85498" + cy="70.172821" + r="8.2645006" /> + <circle + style="opacity:1;fill:#ff0000;fill-rule:evenodd;stroke:#008000;stroke-width:0.0311553;stroke-miterlimit:4;stroke-dasharray:2, 4;stroke-dashoffset:0" + id="circle1459" + cx="500.37192" + cy="294.22516" + r="8.2645006" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="636.28711" + y="55.133041" + id="text1786"><tspan + sodipodi:role="line" + id="tspan1784" + x="636.28711" + y="55.133041">rr -= weight</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="218.99373" + y="55.669769" + id="text1790"><tspan + sodipodi:role="line" + id="tspan1788" + x="218.99373" + y="55.669769">ll -= weight</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="647.1358" + y="284.53876" + id="text1794"><tspan + sodipodi:role="line" + id="tspan1792" + x="647.1358" + y="284.53876">rr += weight</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="229.84239" + y="285.0755" + id="text1798"><tspan + sodipodi:role="line" + id="tspan1796" + x="229.84239" + y="285.0755">ll += weight</tspan></text> + <circle + style="opacity:1;fill:#000080;fill-rule:evenodd;stroke:#008000;stroke-width:0.0311553;stroke-miterlimit:4;stroke-dasharray:2, 4;stroke-dashoffset:0" + id="path1836" + cx="499.31451" + cy="433.13156" + r="8.9434338" /> + </g> +</svg> diff --git a/doc/livarot-images/winding-computation-seed.svg b/doc/livarot-images/winding-computation-seed.svg new file mode 100644 index 0000000..8b9b947 --- /dev/null +++ b/doc/livarot-images/winding-computation-seed.svg @@ -0,0 +1,154 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="1000" + height="1000" + viewBox="0 0 1000 1000" + version="1.1" + id="svg6" + inkscape:version="1.1-dev (d63ee585f6, 2020-08-11, custom)" + sodipodi:docname="winding-computation-seed.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"> + <defs + id="defs2"> + <marker + style="overflow:visible;" + id="marker1269" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="scale(0.8) rotate(180) translate(12.5,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path1267" /> + </marker> + <marker + style="overflow:visible;" + id="marker1227" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="scale(0.8) rotate(180) translate(12.5,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path1225" /> + </marker> + <marker + style="overflow:visible;" + id="marker1165" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.8) rotate(180) translate(12.5,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path1163" /> + </marker> + <marker + style="overflow:visible;" + id="Arrow1Lend" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.8) rotate(180) translate(12.5,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path834" /> + </marker> + <marker + style="overflow:visible;" + id="marker1121" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.8) rotate(180) translate(12.5,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path1119" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.56765702" + inkscape:cx="177.92434" + inkscape:cy="229.89234" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + units="px" + width="1000px" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" /> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)" + d="m 121.86956,280.70098 207.15235,-92.80807 247.52662,6.76662 197.81409,40.11693 105.28065,151.2316 L 859.60009,639.83349 781.39598,762.50486 581.42394,813.80327 327.54639,713.16209 175.00692,516.32686 Z" + id="path829" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1121)" + d="M 291.03612,295.36209 317.57139,559.41742 504.16027,691.69731 772.31549,514.56028 605.20006,283.82539 Z" + id="path1105" /> + <text + xml:space="preserve" + style="font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="355.65457" + y="98.934639" + id="text1159"><tspan + sodipodi:role="line" + id="tspan1157" + x="355.65457" + y="98.934639" + style="font-size:40px">0</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1165)" + d="m 348.01331,88.401867 c 0,0 -36.29881,17.850513 -20.67928,81.507783" + id="path1205" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="325.54794" + y="229.36482" + id="text1215"><tspan + sodipodi:role="line" + id="tspan1213" + x="325.54794" + y="229.36482" + style="font-size:26.6667px">-1</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1269)" + d="m 321.25906,222.28064 c 0,0 -46.68494,-11.6065 -30.57198,62.59189" + id="path1259" + sodipodi:nodetypes="cc" /> + </g> +</svg> diff --git a/doc/livarot-images/winding-computation.svg b/doc/livarot-images/winding-computation.svg new file mode 100644 index 0000000..205db22 --- /dev/null +++ b/doc/livarot-images/winding-computation.svg @@ -0,0 +1,391 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="1200" + height="400" + viewBox="0 0 1200 400" + version="1.1" + id="svg6" + inkscape:version="1.1-dev (d63ee585f6, 2020-08-11, custom)" + sodipodi:docname="winding-computation.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"> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="marker1782" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="TriangleOutL" + inkscape:isstock="true"> + <path + transform="scale(0.8)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z " + id="path1780" /> + </marker> + <marker + style="overflow:visible" + id="marker1772" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="TriangleOutL" + inkscape:isstock="true"> + <path + transform="scale(0.8)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z " + id="path1770" /> + </marker> + <marker + style="overflow:visible" + id="marker1664" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="TriangleOutL" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.8)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z " + id="path1662" /> + </marker> + <marker + style="overflow:visible" + id="marker1654" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="TriangleOutL" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.8)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z " + id="path1652" /> + </marker> + <marker + style="overflow:visible" + id="marker1526" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="TriangleOutL" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.8)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z " + id="path1524" /> + </marker> + <marker + style="overflow:visible" + id="marker1516" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="TriangleOutL" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.8)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z " + id="path1514" /> + </marker> + <marker + style="overflow:visible" + id="marker1410" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="TriangleOutL" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.8)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z " + id="path1408" /> + </marker> + <marker + style="overflow:visible" + id="TriangleOutL" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="TriangleOutL" + inkscape:isstock="true" + inkscape:collect="always"> + <path + transform="scale(0.8)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z " + id="path973" /> + </marker> + <marker + style="overflow:visible;" + id="Arrow1Send" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Send" + inkscape:isstock="true"> + <path + transform="scale(0.2) rotate(180) translate(6,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path846" /> + </marker> + <marker + style="overflow:visible" + id="marker1121" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1119" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.76481579" + inkscape:cx="456.31903" + inkscape:cy="224.237" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + units="px" + width="1000px" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + height="400px" /> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#TriangleOutL)" + d="M 53.102856,121.31063 H 236.91895" + id="path1358" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1410)" + d="m 236.91895,121.31063 v 183.8161" + id="path1406" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="140.01514" + y="112.12971" + id="text1432"><tspan + sodipodi:role="line" + id="tspan1430" + x="140.01514" + y="112.12971">x</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="140.19936" + y="146.32263" + id="text1436"><tspan + sodipodi:role="line" + id="tspan1434" + x="140.19936" + y="146.32263">y</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="203.02963" + y="224.92418" + id="text1440"><tspan + sodipodi:role="line" + id="tspan1438" + x="203.02963" + y="224.92418">y</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="252.29536" + y="225.19261" + id="text1444"><tspan + sodipodi:role="line" + id="tspan1442" + x="252.29536" + y="225.19261">y+w</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="15.981778" + y="31.220333" + id="text1464"><tspan + sodipodi:role="line" + id="tspan1462" + x="15.981778" + y="31.220333">* w = weight of edge</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1526)" + d="M 533.64887,119.57667 H 349.83278" + id="path1494" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1516)" + d="M 533.64887,305.39277 V 121.57667" + id="path1496" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="436.74506" + y="110.39574" + id="text1500"><tspan + sodipodi:role="line" + id="tspan1498" + x="436.74506" + y="110.39574">x</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="436.92929" + y="144.58867" + id="text1504"><tspan + sodipodi:role="line" + id="tspan1502" + x="436.92929" + y="144.58867">y</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="499.75955" + y="223.19022" + id="text1508"><tspan + sodipodi:role="line" + id="tspan1506" + x="499.75955" + y="223.19022">y</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="549.02527" + y="223.45865" + id="text1512"><tspan + sodipodi:role="line" + id="tspan1510" + x="549.02527" + y="223.45865">y-w</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1664)" + d="M 614.64569,119.84539 H 798.46178" + id="path1632" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1654)" + d="M 804.46178,305.66149 V 121.84539" + id="path1634" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="707.55792" + y="110.66445" + id="text1638"><tspan + sodipodi:role="line" + id="tspan1636" + x="707.55792" + y="110.66445">x</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="707.74219" + y="144.85739" + id="text1642"><tspan + sodipodi:role="line" + id="tspan1640" + x="707.74219" + y="144.85739">y</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="770.57245" + y="223.45894" + id="text1646"><tspan + sodipodi:role="line" + id="tspan1644" + x="770.57245" + y="223.45894">y</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="819.83813" + y="223.72737" + id="text1650"><tspan + sodipodi:role="line" + id="tspan1648" + x="819.83813" + y="223.72737">y-w</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1782)" + d="M 1092.9279,123.93169 H 909.11177" + id="path1750" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1772)" + d="m 1092.9279,123.93169 v 183.8161" + id="path1752" /> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="996.02399" + y="114.75076" + id="text1756"><tspan + sodipodi:role="line" + id="tspan1754" + x="996.02399" + y="114.75076">x</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="996.20825" + y="148.9437" + id="text1760"><tspan + sodipodi:role="line" + id="tspan1758" + x="996.20825" + y="148.9437">y</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="1059.0386" + y="227.54524" + id="text1764"><tspan + sodipodi:role="line" + id="tspan1762" + x="1059.0386" + y="227.54524">y</tspan></text> + <text + xml:space="preserve" + style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px" + x="1108.3042" + y="227.81367" + id="text1768"><tspan + sodipodi:role="line" + id="tspan1766" + x="1108.3042" + y="227.81367">y+w</tspan></text> + </g> +</svg> diff --git a/doc/livarot-images/winding-fundamental-principle.svg b/doc/livarot-images/winding-fundamental-principle.svg new file mode 100644 index 0000000..902e780 --- /dev/null +++ b/doc/livarot-images/winding-fundamental-principle.svg @@ -0,0 +1,116 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="500" + height="500" + viewBox="0 0 500 500" + version="1.1" + id="svg6" + inkscape:version="1.1-dev (1a7913d4e8, 2020-08-20, custom)" + sodipodi:docname="winding-fundamental-principle.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"> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="marker1121" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:isstock="true"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 Z" + id="path1119" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.99317345" + inkscape:cx="231.5809" + inkscape:cy="261.28367" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + units="px" + width="500px" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" /> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;stroke:#000000;stroke-width:1.42384px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 29.636171,408.04605 322.53398,114.92512" + id="path829" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke:none;stroke-width:1.42384;stroke-linecap:square;stroke-dasharray:1.42384, 4.27153" + id="path831" + cx="322.59906" + cy="114.70495" + r="8.5719481" /> + <circle + style="fill:#000000;fill-rule:evenodd;stroke:none;stroke-width:1.42384;stroke-linecap:square;stroke-dasharray:1.42384, 4.27153" + id="circle833" + cx="30.021046" + cy="409.39725" + r="8.5719481" /> + <path + style="fill:none;stroke:#000000;stroke-width:1.42384px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 450.0606,368.89604 322.53398,114.92512" + id="path835" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:12.4757px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.779732" + x="-172.9818" + y="302.38113" + id="text839" + transform="rotate(-43.803513)"><tspan + sodipodi:role="line" + id="tspan837" + x="-172.9818" + y="302.38113" + style="font-size:12.4757px;stroke-width:0.779732">edge whose winding numbers we know</tspan></text> + <text + xml:space="preserve" + style="font-size:12.4757px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.779732" + x="277.55835" + y="-238.94035" + id="text843" + transform="rotate(62.524585)"><tspan + sodipodi:role="line" + id="tspan841" + x="277.55835" + y="-238.94035" + style="font-size:12.4757px;stroke-width:0.779732">edge whose winding numbers we want to find</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1.42384;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:1.42384, 4.27153;stroke-dashoffset:0;stroke-opacity:1" + d="M 322.53398,114.92512 265.45954,397.65915" + id="path861" /> + <text + xml:space="preserve" + style="font-size:37.9692px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000;stroke:none;stroke-width:1.42384" + x="268.44699" + y="328.28156" + id="text865"><tspan + sodipodi:role="line" + id="tspan863" + x="268.44699" + y="328.28156" + style="stroke-width:1.42384">x</tspan></text> + </g> +</svg> |