physdes-py 0.7__tar.gz → 0.8__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (253) hide show
  1. physdes_py-0.8/CHANGELOG.md +39 -0
  2. {physdes_py-0.7/src/physdes_py.egg-info → physdes_py-0.8}/PKG-INFO +1 -1
  3. {physdes_py-0.7 → physdes_py-0.8}/alpha10.svg +16 -16
  4. {physdes_py-0.7 → physdes_py-0.8}/alpha12.svg +13 -13
  5. {physdes_py-0.7 → physdes_py-0.8}/alpha14.svg +10 -10
  6. {physdes_py-0.7 → physdes_py-0.8}/alpha8.svg +13 -13
  7. {physdes_py-0.7 → physdes_py-0.8}/alpha9998.svg +16 -16
  8. {physdes_py-0.7 → physdes_py-0.8}/demo_overlap.py +0 -49
  9. {physdes_py-0.7 → physdes_py-0.8}/docs/requirements.txt +2 -0
  10. {physdes_py-0.7 → physdes_py-0.8}/example_route3d_with_constraint_and_keepouts.svg +10 -16
  11. {physdes_py-0.7 → physdes_py-0.8}/example_route3d_with_steiner_and_keepouts.svg +10 -16
  12. {physdes_py-0.7/outputs → physdes_py-0.8}/example_route_with_delay_constraint.svg +16 -16
  13. {physdes_py-0.7 → physdes_py-0.8}/example_route_with_keepouts.svg +10 -10
  14. {physdes_py-0.7/outputs → physdes_py-0.8}/example_route_with_steiner.svg +10 -10
  15. {physdes_py-0.7 → physdes_py-0.8}/example_route_with_steiner_and_keepouts.svg +10 -10
  16. {physdes_py-0.7/outputs → physdes_py-0.8}/example_route_with_steiner_special.svg +13 -13
  17. {physdes_py-0.7/outputs → physdes_py-0.8}/neg_specical10.svg +28 -28
  18. {physdes_py-0.7 → physdes_py-0.8}/setup.cfg +0 -2
  19. {physdes_py-0.7 → physdes_py-0.8}/src/physdes/cts/clk_tree_vis.py +103 -18
  20. {physdes_py-0.7 → physdes_py-0.8}/src/physdes/cts/dme_algorithm.py +24 -14
  21. {physdes_py-0.7 → physdes_py-0.8}/src/physdes/generic.py +0 -44
  22. {physdes_py-0.7 → physdes_py-0.8}/src/physdes/interval.py +0 -39
  23. {physdes_py-0.7 → physdes_py-0.8}/src/physdes/manhattan_arc.py +0 -21
  24. {physdes_py-0.7 → physdes_py-0.8}/src/physdes/point.py +0 -19
  25. {physdes_py-0.7 → physdes_py-0.8}/src/physdes/polygon.py +5 -5
  26. {physdes_py-0.7 → physdes_py-0.8}/src/physdes/recti.py +0 -19
  27. {physdes_py-0.7 → physdes_py-0.8}/src/physdes/router/routing_tree.py +49 -56
  28. {physdes_py-0.7 → physdes_py-0.8}/src/physdes/router/routing_visualizer.py +0 -15
  29. {physdes_py-0.7 → physdes_py-0.8}/src/physdes/rpolygon.py +3 -43
  30. {physdes_py-0.7 → physdes_py-0.8}/src/physdes/rpolygon_cut.py +125 -130
  31. {physdes_py-0.7 → physdes_py-0.8}/src/physdes/steiner_forest/steiner_forest_grid.py +0 -10
  32. {physdes_py-0.7 → physdes_py-0.8}/src/physdes/vector2.py +0 -20
  33. {physdes_py-0.7 → physdes_py-0.8/src/physdes_py.egg-info}/PKG-INFO +1 -1
  34. {physdes_py-0.7 → physdes_py-0.8}/src/physdes_py.egg-info/SOURCES.txt +0 -2
  35. {physdes_py-0.7 → physdes_py-0.8}/src/physdes_py.egg-info/scm_file_list.json +201 -203
  36. physdes_py-0.8/src/physdes_py.egg-info/scm_version.json +8 -0
  37. {physdes_py-0.7 → physdes_py-0.8}/tests/test_clk_tree_vis.py +46 -0
  38. physdes_py-0.7/.benchmarks/test_area.py +0 -29
  39. physdes_py-0.7/CHANGELOG.md +0 -16
  40. physdes_py-0.7/src/physdes/skeleton.py +0 -3
  41. physdes_py-0.7/src/physdes_py.egg-info/scm_version.json +0 -8
  42. {physdes_py-0.7 → physdes_py-0.8}/.coveragerc +0 -0
  43. {physdes_py-0.7 → physdes_py-0.8}/.flake8 +0 -0
  44. {physdes_py-0.7 → physdes_py-0.8}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  45. {physdes_py-0.7 → physdes_py-0.8}/.github/ISSUE_TEMPLATE/documentation.md +0 -0
  46. {physdes_py-0.7 → physdes_py-0.8}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  47. {physdes_py-0.7 → physdes_py-0.8}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  48. {physdes_py-0.7 → physdes_py-0.8}/.github/workflows/jekyll-gh-pages.yml +0 -0
  49. {physdes_py-0.7 → physdes_py-0.8}/.github/workflows/multi-platforms.yml +0 -0
  50. {physdes_py-0.7 → physdes_py-0.8}/.github/workflows/python-app.yml +0 -0
  51. {physdes_py-0.7 → physdes_py-0.8}/.github/workflows/python-publish.yml +0 -0
  52. {physdes_py-0.7 → physdes_py-0.8}/.gitignore +0 -0
  53. {physdes_py-0.7 → physdes_py-0.8}/.gitpod.Dockerfile +0 -0
  54. {physdes_py-0.7 → physdes_py-0.8}/.gitpod.yml +0 -0
  55. {physdes_py-0.7 → physdes_py-0.8}/.hadolint.yaml +0 -0
  56. {physdes_py-0.7 → physdes_py-0.8}/.isort.cfg +0 -0
  57. {physdes_py-0.7 → physdes_py-0.8}/.markdownlint.yaml +0 -0
  58. {physdes_py-0.7 → physdes_py-0.8}/.pre-commit-config.yaml +0 -0
  59. {physdes_py-0.7 → physdes_py-0.8}/.readthedocs.yml +0 -0
  60. {physdes_py-0.7 → physdes_py-0.8}/.shellcheckrc +0 -0
  61. {physdes_py-0.7 → physdes_py-0.8}/AGENTS.md +0 -0
  62. {physdes_py-0.7 → physdes_py-0.8}/AUTHORS.rst +0 -0
  63. {physdes_py-0.7 → physdes_py-0.8}/CHANGELOG.rst +0 -0
  64. {physdes_py-0.7 → physdes_py-0.8}/CONTRIBUTING.rst +0 -0
  65. {physdes_py-0.7 → physdes_py-0.8}/GEMINI.md +0 -0
  66. {physdes_py-0.7 → physdes_py-0.8}/LICENSE +0 -0
  67. {physdes_py-0.7 → physdes_py-0.8}/README.md +0 -0
  68. {physdes_py-0.7 → physdes_py-0.8}/_config.yml +0 -0
  69. {physdes_py-0.7 → physdes_py-0.8}/changelog/1.misc.rst +0 -0
  70. {physdes_py-0.7 → physdes_py-0.8}/changelog/README.md +0 -0
  71. {physdes_py-0.7 → physdes_py-0.8}/coverage.json +0 -0
  72. {physdes_py-0.7 → physdes_py-0.8}/demo_overlap.svg +0 -0
  73. {physdes_py-0.7 → physdes_py-0.8}/diagram.bob +0 -0
  74. {physdes_py-0.7 → physdes_py-0.8}/dme_algorithm-slides.html +0 -0
  75. {physdes_py-0.7 → physdes_py-0.8}/dme_algorithm-slides.md +0 -0
  76. {physdes_py-0.7 → physdes_py-0.8}/docs/Makefile +0 -0
  77. {physdes_py-0.7 → physdes_py-0.8}/docs/_static/.gitignore +0 -0
  78. {physdes_py-0.7 → physdes_py-0.8}/docs/authors.rst +0 -0
  79. {physdes_py-0.7 → physdes_py-0.8}/docs/build_from_md.py +0 -0
  80. {physdes_py-0.7 → physdes_py-0.8}/docs/build_remark.py +0 -0
  81. {physdes_py-0.7 → physdes_py-0.8}/docs/build_slides.py +0 -0
  82. {physdes_py-0.7 → physdes_py-0.8}/docs/changelog.rst +0 -0
  83. {physdes_py-0.7 → physdes_py-0.8}/docs/conf.py +0 -0
  84. {physdes_py-0.7 → physdes_py-0.8}/docs/contributing.md +0 -0
  85. {physdes_py-0.7 → physdes_py-0.8}/docs/contributing.rst +0 -0
  86. {physdes_py-0.7 → physdes_py-0.8}/docs/essays/essay.md +0 -0
  87. {physdes_py-0.7 → physdes_py-0.8}/docs/essays/polygon_vs_rpolygon_comparison.html +0 -0
  88. {physdes_py-0.7 → physdes_py-0.8}/docs/essays/polygon_vs_rpolygon_comparison.md +0 -0
  89. {physdes_py-0.7 → physdes_py-0.8}/docs/examples/plot_cts.py +0 -0
  90. {physdes_py-0.7 → physdes_py-0.8}/docs/examples/plot_global_router.py +0 -0
  91. {physdes_py-0.7 → physdes_py-0.8}/docs/examples/plot_rectangles.py +0 -0
  92. {physdes_py-0.7 → physdes_py-0.8}/docs/examples/plot_rpolygon.py +0 -0
  93. {physdes_py-0.7 → physdes_py-0.8}/docs/figures_demo.rst +0 -0
  94. {physdes_py-0.7 → physdes_py-0.8}/docs/index.rst +0 -0
  95. {physdes_py-0.7 → physdes_py-0.8}/docs/license.rst +0 -0
  96. {physdes_py-0.7 → physdes_py-0.8}/docs/misc/note.md +0 -0
  97. {physdes_py-0.7 → physdes_py-0.8}/docs/misc/report.md +0 -0
  98. {physdes_py-0.7 → physdes_py-0.8}/docs/my_congestion.svg +0 -0
  99. {physdes_py-0.7 → physdes_py-0.8}/docs/proposals/fyproj2026.md +0 -0
  100. {physdes_py-0.7 → physdes_py-0.8}/docs/proposals/fyproj2026.md.bad +0 -0
  101. {physdes_py-0.7 → physdes_py-0.8}/docs/proposals/fyproj2026_cts.md +0 -0
  102. {physdes_py-0.7 → physdes_py-0.8}/docs/proposals/fyproj2026_cts_2d.md +0 -0
  103. {physdes_py-0.7 → physdes_py-0.8}/docs/proposals/mulit-fpga-routing.md +0 -0
  104. {physdes_py-0.7 → physdes_py-0.8}/docs/readme.rst +0 -0
  105. {physdes_py-0.7 → physdes_py-0.8}/docs/slides_content.md +0 -0
  106. {physdes_py-0.7 → physdes_py-0.8}/docs/steiner_forest_diagonal.svg +0 -0
  107. {physdes_py-0.7 → physdes_py-0.8}/environment.yml +0 -0
  108. {physdes_py-0.7 → physdes_py-0.8}/examples/steiner_forest_grid_example.py +0 -0
  109. {physdes_py-0.7 → physdes_py-0.8}/examples/steiner_forest_grid_large_example.py +0 -0
  110. {physdes_py-0.7 → physdes_py-0.8}/examples/steiner_forest_simple_example.py +0 -0
  111. {physdes_py-0.7 → physdes_py-0.8}/experimental/distance_comparison.png +0 -0
  112. {physdes_py-0.7 → physdes_py-0.8}/experimental/rectilinear_distance_field.png +0 -0
  113. {physdes_py-0.7 → physdes_py-0.8}/experimental/rectilinear_voronoi.ipynb +0 -0
  114. {physdes_py-0.7 → physdes_py-0.8}/experimental/rectilinear_voronoi.py +0 -0
  115. {physdes_py-0.7 → physdes_py-0.8}/experimental/rectilinear_voronoi_diamond.png +0 -0
  116. {physdes_py-0.7 → physdes_py-0.8}/experimental/rectilinear_voronoi_grid.png +0 -0
  117. {physdes_py-0.7 → physdes_py-0.8}/experimental/rectilinear_voronoi_random.png +0 -0
  118. {physdes_py-0.7 → physdes_py-0.8}/experimental/steiner_trees_demo.py +0 -0
  119. {physdes_py-0.7 → physdes_py-0.8}/global_router-slides.html +0 -0
  120. {physdes_py-0.7 → physdes_py-0.8}/global_router-slides.md +0 -0
  121. {physdes_py-0.7 → physdes_py-0.8}/my_congestion.svg +0 -0
  122. {physdes_py-0.7 → physdes_py-0.8}/mypy.ini +0 -0
  123. {physdes_py-0.7 → physdes_py-0.8}/oryx-build-commands.txt +0 -0
  124. {physdes_py-0.7 → physdes_py-0.8}/outputs/comparison.svg +0 -0
  125. {physdes_py-0.7 → physdes_py-0.8}/outputs/convex_hull.svg +0 -0
  126. {physdes_py-0.7 → physdes_py-0.8}/outputs/delay_model_comparison.svg +0 -0
  127. {physdes_py-0.7 → physdes_py-0.8}/outputs/delay_model_comparison3d.svg +0 -0
  128. {physdes_py-0.7 → physdes_py-0.8}/outputs/elmore_model_clock_tree.svg +0 -0
  129. {physdes_py-0.7 → physdes_py-0.8}/outputs/elmore_model_clock_tree3d.svg +0 -0
  130. {physdes_py-0.7 → physdes_py-0.8}/outputs/example_route3d_with_constraint.svg +0 -0
  131. {physdes_py-0.7 → physdes_py-0.8}/outputs/example_route3d_with_constraint_and_keepouts.svg +0 -0
  132. {physdes_py-0.7 → physdes_py-0.8}/outputs/example_route3d_with_steiner.svg +0 -0
  133. {physdes_py-0.7 → physdes_py-0.8}/outputs/example_route3d_with_steiner_and_keepouts.svg +0 -0
  134. {physdes_py-0.7 → physdes_py-0.8}/outputs/example_route_with_constraint.svg +0 -0
  135. {physdes_py-0.7 → physdes_py-0.8}/outputs/example_route_with_constraint_specical.svg +0 -0
  136. {physdes_py-0.7 → physdes_py-0.8/outputs}/example_route_with_delay_constraint.svg +0 -0
  137. {physdes_py-0.7 → physdes_py-0.8}/outputs/example_route_with_keepouts.svg +0 -0
  138. {physdes_py-0.7 → physdes_py-0.8/outputs}/example_route_with_steiner.svg +0 -0
  139. {physdes_py-0.7 → physdes_py-0.8}/outputs/example_route_with_steiner_and_keepouts.svg +0 -0
  140. {physdes_py-0.7 → physdes_py-0.8/outputs}/example_route_with_steiner_special.svg +0 -0
  141. {physdes_py-0.7 → physdes_py-0.8}/outputs/linear_model_clock_tree.svg +0 -0
  142. {physdes_py-0.7 → physdes_py-0.8}/outputs/linear_model_clock_tree3d.svg +0 -0
  143. {physdes_py-0.7 → physdes_py-0.8}/outputs/my_congestion.svg +0 -0
  144. {physdes_py-0.7 → physdes_py-0.8/outputs}/neg_specical10.svg +0 -0
  145. {physdes_py-0.7 → physdes_py-0.8}/outputs/polygon_convex_hull.svg +0 -0
  146. {physdes_py-0.7 → physdes_py-0.8}/outputs/polygon_convex_hull13.svg +0 -0
  147. {physdes_py-0.7 → physdes_py-0.8}/outputs/rectilinear-shapes-for-vlsi-physical-desgin.svg +0 -0
  148. {physdes_py-0.7 → physdes_py-0.8}/outputs/rpolygon_convex_cut.svg +0 -0
  149. {physdes_py-0.7 → physdes_py-0.8}/outputs/rpolygon_cut_explicit.svg +0 -0
  150. {physdes_py-0.7 → physdes_py-0.8}/outputs/rpolyon_convex_hull.svg +0 -0
  151. {physdes_py-0.7 → physdes_py-0.8}/outputs/rpolyon_convex_hull13.svg +0 -0
  152. {physdes_py-0.7 → physdes_py-0.8}/outputs/rpolyon_cut_convex.svg +0 -0
  153. {physdes_py-0.7 → physdes_py-0.8}/outputs/rpolyon_cut_convex2.svg +0 -0
  154. {physdes_py-0.7 → physdes_py-0.8}/outputs/rpolyon_xmono.svg +0 -0
  155. {physdes_py-0.7 → physdes_py-0.8}/outputs/rpolyon_xmono_hull.svg +0 -0
  156. {physdes_py-0.7 → physdes_py-0.8}/outputs/rpolyon_ymono_hull.svg +0 -0
  157. {physdes_py-0.7 → physdes_py-0.8}/outputs/steiner_forest.svg +0 -0
  158. {physdes_py-0.7 → physdes_py-0.8}/outputs/steiner_forest_diagonal.svg +0 -0
  159. {physdes_py-0.7 → physdes_py-0.8}/outputs/test.svg +0 -0
  160. {physdes_py-0.7 → physdes_py-0.8}/outputs/xmono_hull.svg +0 -0
  161. {physdes_py-0.7 → physdes_py-0.8}/plot_alpha.py +0 -0
  162. {physdes_py-0.7 → physdes_py-0.8}/presentation_overlap_detection.html +0 -0
  163. {physdes_py-0.7 → physdes_py-0.8}/presentation_overlap_detection.md +0 -0
  164. {physdes_py-0.7 → physdes_py-0.8}/pyproject.toml +0 -0
  165. {physdes_py-0.7 → physdes_py-0.8}/requirements/README.md +0 -0
  166. {physdes_py-0.7 → physdes_py-0.8}/requirements/default.txt +0 -0
  167. {physdes_py-0.7 → physdes_py-0.8}/requirements/dev.txt +0 -0
  168. {physdes_py-0.7 → physdes_py-0.8}/requirements/doc.txt +0 -0
  169. {physdes_py-0.7 → physdes_py-0.8}/requirements/extras.txt +0 -0
  170. {physdes_py-0.7 → physdes_py-0.8}/requirements/test.txt +0 -0
  171. {physdes_py-0.7 → physdes_py-0.8}/requirements.txt +0 -0
  172. {physdes_py-0.7 → physdes_py-0.8}/rpolygon-slides.html +0 -0
  173. {physdes_py-0.7 → physdes_py-0.8}/rpolygon-slides.md +0 -0
  174. {physdes_py-0.7 → physdes_py-0.8}/setup.py +0 -0
  175. {physdes_py-0.7 → physdes_py-0.8}/src/physdes/__init__.py +0 -0
  176. {physdes_py-0.7 → physdes_py-0.8}/src/physdes/cts/clk_tree3d_vis.py +0 -0
  177. {physdes_py-0.7 → physdes_py-0.8}/src/physdes/generic.tpy +0 -0
  178. {physdes_py-0.7 → physdes_py-0.8}/src/physdes/manhattan_arc_3d.py +0 -0
  179. {physdes_py-0.7 → physdes_py-0.8}/src/physdes/manhattan_arc_3d.tpy +0 -0
  180. {physdes_py-0.7 → physdes_py-0.8}/src/physdes/point.tpy +0 -0
  181. {physdes_py-0.7 → physdes_py-0.8}/src/physdes/py.typed +0 -0
  182. {physdes_py-0.7 → physdes_py-0.8}/src/physdes/rdllist.py +0 -0
  183. {physdes_py-0.7 → physdes_py-0.8}/src/physdes/router/global_router.py +0 -0
  184. {physdes_py-0.7 → physdes_py-0.8}/src/physdes/router/global_router3d.tpy +0 -0
  185. {physdes_py-0.7 → physdes_py-0.8}/src/physdes/router/routing_tree3d.tpy +0 -0
  186. {physdes_py-0.7 → physdes_py-0.8}/src/physdes/router/steiner_forest.md +0 -0
  187. {physdes_py-0.7 → physdes_py-0.8}/src/physdes/steiner_forest/congestion_map.py +0 -0
  188. {physdes_py-0.7 → physdes_py-0.8}/src/physdes/steiner_forest/my_congestion.svg +0 -0
  189. {physdes_py-0.7 → physdes_py-0.8}/src/physdes/steiner_forest/steiner_forest.md +0 -0
  190. {physdes_py-0.7 → physdes_py-0.8}/src/physdes/steiner_forest/steiner_forest.svg +0 -0
  191. {physdes_py-0.7 → physdes_py-0.8}/src/physdes/steiner_forest/steiner_forest_diagonal.svg +0 -0
  192. {physdes_py-0.7 → physdes_py-0.8}/src/physdes/to_polygon.py +0 -0
  193. {physdes_py-0.7 → physdes_py-0.8}/src/physdes/vector2.tpy +0 -0
  194. {physdes_py-0.7 → physdes_py-0.8}/src/physdes_py.egg-info/dependency_links.txt +0 -0
  195. {physdes_py-0.7 → physdes_py-0.8}/src/physdes_py.egg-info/not-zip-safe +0 -0
  196. {physdes_py-0.7 → physdes_py-0.8}/src/physdes_py.egg-info/requires.txt +0 -0
  197. {physdes_py-0.7 → physdes_py-0.8}/src/physdes_py.egg-info/top_level.txt +0 -0
  198. {physdes_py-0.7 → physdes_py-0.8}/svgo.config.js +0 -0
  199. {physdes_py-0.7 → physdes_py-0.8}/test.svg +0 -0
  200. {physdes_py-0.7 → physdes_py-0.8}/tests/__init__.py +0 -0
  201. {physdes_py-0.7 → physdes_py-0.8}/tests/conftest.py +0 -0
  202. {physdes_py-0.7 → physdes_py-0.8}/tests/golden.txt +0 -0
  203. {physdes_py-0.7 → physdes_py-0.8}/tests/mysvg.css +0 -0
  204. {physdes_py-0.7 → physdes_py-0.8}/tests/pnrpoly.svg +0 -0
  205. {physdes_py-0.7 → physdes_py-0.8}/tests/run_failing_tests.py +0 -0
  206. {physdes_py-0.7 → physdes_py-0.8}/tests/test_alpha.py +0 -0
  207. {physdes_py-0.7 → physdes_py-0.8}/tests/test_dme_algorithm.py +0 -0
  208. {physdes_py-0.7 → physdes_py-0.8}/tests/test_generic_functions.py +0 -0
  209. {physdes_py-0.7 → physdes_py-0.8}/tests/test_global_router.py +0 -0
  210. {physdes_py-0.7 → physdes_py-0.8}/tests/test_global_router3d.py +0 -0
  211. {physdes_py-0.7 → physdes_py-0.8}/tests/test_global_router3d.tpy +0 -0
  212. {physdes_py-0.7 → physdes_py-0.8}/tests/test_global_router3d_with_keepouts.py +0 -0
  213. {physdes_py-0.7 → physdes_py-0.8}/tests/test_global_router3d_with_keepouts2.py +0 -0
  214. {physdes_py-0.7 → physdes_py-0.8}/tests/test_global_router_logic.py +0 -0
  215. {physdes_py-0.7 → physdes_py-0.8}/tests/test_global_router_logic3d.tpy +0 -0
  216. {physdes_py-0.7 → physdes_py-0.8}/tests/test_global_router_with_keepouts.py +0 -0
  217. {physdes_py-0.7 → physdes_py-0.8}/tests/test_global_router_with_keepouts2.py +0 -0
  218. {physdes_py-0.7 → physdes_py-0.8}/tests/test_interval.py +0 -0
  219. {physdes_py-0.7 → physdes_py-0.8}/tests/test_manhattan_arc_3d.py +0 -0
  220. {physdes_py-0.7 → physdes_py-0.8}/tests/test_manhattan_arc_3d.tpy +0 -0
  221. {physdes_py-0.7 → physdes_py-0.8}/tests/test_merge.py +0 -0
  222. {physdes_py-0.7 → physdes_py-0.8}/tests/test_merge3d.tpy +0 -0
  223. {physdes_py-0.7 → physdes_py-0.8}/tests/test_nearest_point_to.tpy +0 -0
  224. {physdes_py-0.7 → physdes_py-0.8}/tests/test_overlap.py +0 -0
  225. {physdes_py-0.7 → physdes_py-0.8}/tests/test_point.py +0 -0
  226. {physdes_py-0.7 → physdes_py-0.8}/tests/test_point_extended.py +0 -0
  227. {physdes_py-0.7 → physdes_py-0.8}/tests/test_point_hypothesis.py +0 -0
  228. {physdes_py-0.7 → physdes_py-0.8}/tests/test_polygon.py +0 -0
  229. {physdes_py-0.7 → physdes_py-0.8}/tests/test_polygon.svg +0 -0
  230. {physdes_py-0.7 → physdes_py-0.8}/tests/test_polygon_convex_decomposition.py +0 -0
  231. {physdes_py-0.7 → physdes_py-0.8}/tests/test_polygon_hypothesis.py +0 -0
  232. {physdes_py-0.7 → physdes_py-0.8}/tests/test_rdllist.py +0 -0
  233. {physdes_py-0.7 → physdes_py-0.8}/tests/test_rect3d.py +0 -0
  234. {physdes_py-0.7 → physdes_py-0.8}/tests/test_recti.py +0 -0
  235. {physdes_py-0.7 → physdes_py-0.8}/tests/test_recti_hypothesis.py +0 -0
  236. {physdes_py-0.7 → physdes_py-0.8}/tests/test_routing_tree.py +0 -0
  237. {physdes_py-0.7 → physdes_py-0.8}/tests/test_routing_tree3d.tpy +0 -0
  238. {physdes_py-0.7 → physdes_py-0.8}/tests/test_routing_visualizer.py +0 -0
  239. {physdes_py-0.7 → physdes_py-0.8}/tests/test_rpolygon.py +0 -0
  240. {physdes_py-0.7 → physdes_py-0.8}/tests/test_rpolygon_convex_cut.py +0 -0
  241. {physdes_py-0.7 → physdes_py-0.8}/tests/test_rpolygon_convex_hull.py +0 -0
  242. {physdes_py-0.7 → physdes_py-0.8}/tests/test_rpolygon_cut.py +0 -0
  243. {physdes_py-0.7 → physdes_py-0.8}/tests/test_steiner_forest_grid.py +0 -0
  244. {physdes_py-0.7 → physdes_py-0.8}/tests/test_to_polygon.py +0 -0
  245. {physdes_py-0.7 → physdes_py-0.8}/tests/test_vector2.py +0 -0
  246. {physdes_py-0.7 → physdes_py-0.8}/tests/test_vector2_hypothesis.py +0 -0
  247. {physdes_py-0.7 → physdes_py-0.8}/tests/xmono_polygon.svg +0 -0
  248. {physdes_py-0.7 → physdes_py-0.8}/tests/xmono_polygon2.svg +0 -0
  249. {physdes_py-0.7 → physdes_py-0.8}/tests/ymono_polygon.svg +0 -0
  250. {physdes_py-0.7 → physdes_py-0.8}/tests/ymono_rpolygon.svg +0 -0
  251. {physdes_py-0.7 → physdes_py-0.8}/tox.ini +0 -0
  252. {physdes_py-0.7 → physdes_py-0.8}/wirelength_vs_alpha.png +0 -0
  253. {physdes_py-0.7 → physdes_py-0.8}/wirelength_vs_alpha_small.png +0 -0
@@ -0,0 +1,39 @@
1
+ # Changelog
2
+
3
+ ## Version 0.8 (2026-09-04)
4
+
5
+ ### Features
6
+ - **Builder pattern for ClockTreeVisualizer**: Added fluent `ClockTreeVisualizerBuilder` (`builder().margin(..).node_radius(..)...build()`) mirroring the C++/Rust siblings; `create_interactive_svg` and `create_comparison_visualization` now use it. (#311848a)
7
+
8
+ ### Refactoring
9
+ - **Template Method in rpolygon cut decomposition**: Collapsed the duplicated convex/explicit recursive decomposers into one `rpolygon_cut_recur` Template Method plus shared `rpolygon_cut_impl`; public entry points unchanged. (#3666c82)
10
+ - **Factory Method in global routing tree**: Concentrated 5 duplicated ID-generation/registration sites behind a single `_create_node` factory, preserving the `insert_node_on_branch` ValueError contract and ordering constraints. (#2e03732)
11
+ - **Module-level logging**: Replaced `skeleton._logger` with standard module-level `logging`. (#6c863fd)
12
+
13
+ ### Testing & Code Quality
14
+ - **Builder tests**: Added tests for builder output, default-equivalence and fluent reuse, plus a doctest on the builder class. (#311848a)
15
+ - **mypy fixes**: Resolved None checks and type annotations. (#2a5f7b2)
16
+
17
+ ### Code Cleanup
18
+ - **Removed AI slop**: Stripped boilerplate from docstrings and comments. (#587ad95)
19
+ - **Deduped route3d legends**: Removed duplicated legend entries in example SVGs. (#678aa21)
20
+ - **Stripped empty `entry_points`**: Removed dead section from setup.cfg. (#fd06baf)
21
+ - **EOF newlines in example SVGs**: Added trailing newlines to 15 figures and formatted sources. (#23aaf16)
22
+
23
+ ### Build & CI
24
+ - **RTD doc build**: Added matplotlib and numpy to `docs/requirements.txt`. (#41cad71)
25
+
26
+ ## Version 0.7 (2026-07-16)
27
+
28
+ ### Performance
29
+ - **`__slots__` on core geometry classes**: Added `__slots__` to `Point`, `ManhattanArc`, `Polygon`, `RPolygon`, `TreeNode`, `Sink` — saving ~176 bytes per instance. Most impactful on `Point` which is used everywhere in the codebase. (#64242a6)
30
+
31
+ ### Bug Fixes
32
+ - **DME alignment with Rust**: Fixed elongation calculation with `raw_extend_left` to match Rust/C++. Replaced `sorted()` with median-partition in `build_merging_tree` (matches Rust `nth_element`). (#0267be3)
33
+ - **NodeType rename**: Changed `ALL_CAPS` enum values to `PascalCase` to align with Rust naming conventions. (#0267be3)
34
+
35
+ ### Documentation
36
+ - **Doc build scripts**: Updated remark and slide build scripts. Updated example plot scripts for RPolygon, CTS, and global router. (#0a613b3)
37
+
38
+ ### Code Cleanup
39
+ - **Removed PyScaffold boilerplate**: Deleted `skeleton.py`/`test_skeleton.py`, removed Python < 3.9 compat, unused mypy ignores, stale files. (#e594991)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: physdes-py
3
- Version: 0.7
3
+ Version: 0.8
4
4
  Summary: Physical Design Python Code
5
5
  Home-page: https://github.com/luk036/physdes-py/
6
6
  Author: Wai-Shing Luk
@@ -26,36 +26,36 @@
26
26
  <circle cx="455.64903846153845" cy="357.6923076923077" r="6" fill="green" stroke="black" stroke-width="1"/>
27
27
  <text x="463.64903846153845" y="361.6923076923077" font-family="Arial" font-size="10" fill="black">T2</text>
28
28
  <text x="455.64903846153845" y="346.6923076923077" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(1377,1216)</text>
29
- <circle cx="455.64903846153845" cy="396.15384615384613" r="6" fill="blue" stroke="black" stroke-width="1"/>
30
- <text x="463.64903846153845" y="400.15384615384613" font-family="Arial" font-size="10" fill="black">S1</text>
31
- <text x="455.64903846153845" y="385.15384615384613" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(1377,1344)</text>
32
29
  <circle cx="601.6826923076923" cy="550.0" r="6" fill="green" stroke="black" stroke-width="1"/>
33
30
  <text x="609.6826923076923" y="554.0" font-family="Arial" font-size="10" fill="black">T3</text>
34
31
  <text x="601.6826923076923" y="539.0" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(1863,1856)</text>
35
- <circle cx="382.63221153846155" cy="396.15384615384613" r="6" fill="blue" stroke="black" stroke-width="1"/>
36
- <text x="390.63221153846155" y="400.15384615384613" font-family="Arial" font-size="10" fill="black">S2</text>
37
- <text x="382.63221153846155" y="385.15384615384613" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(1134,1344)</text>
32
+ <circle cx="455.64903846153845" cy="396.15384615384613" r="6" fill="blue" stroke="black" stroke-width="1"/>
33
+ <text x="463.64903846153845" y="400.15384615384613" font-family="Arial" font-size="10" fill="black">S1</text>
34
+ <text x="455.64903846153845" y="385.15384615384613" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(1377,1344)</text>
38
35
  <circle cx="382.63221153846155" cy="242.3076923076923" r="6" fill="green" stroke="black" stroke-width="1"/>
39
36
  <text x="390.63221153846155" y="246.3076923076923" font-family="Arial" font-size="10" fill="black">T4</text>
40
37
  <text x="382.63221153846155" y="231.3076923076923" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(1134,832)</text>
41
- <circle cx="236.59855769230768" cy="396.15384615384613" r="6" fill="blue" stroke="black" stroke-width="1"/>
42
- <text x="244.59855769230768" y="400.15384615384613" font-family="Arial" font-size="10" fill="black">S3</text>
43
- <text x="236.59855769230768" y="385.15384615384613" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(648,1344)</text>
38
+ <circle cx="382.63221153846155" cy="396.15384615384613" r="6" fill="blue" stroke="black" stroke-width="1"/>
39
+ <text x="390.63221153846155" y="400.15384615384613" font-family="Arial" font-size="10" fill="black">S2</text>
40
+ <text x="382.63221153846155" y="385.15384615384613" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(1134,1344)</text>
44
41
  <circle cx="236.59855769230768" cy="50.0" r="6" fill="green" stroke="black" stroke-width="1"/>
45
42
  <text x="244.59855769230768" y="54.0" font-family="Arial" font-size="10" fill="black">T5</text>
46
43
  <text x="236.59855769230768" y="39.0" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(648,192)</text>
47
- <circle cx="236.59855769230768" cy="88.46153846153845" r="6" fill="blue" stroke="black" stroke-width="1"/>
48
- <text x="244.59855769230768" y="92.46153846153845" font-family="Arial" font-size="10" fill="black">S4</text>
49
- <text x="236.59855769230768" y="77.46153846153845" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(648,320)</text>
44
+ <circle cx="236.59855769230768" cy="396.15384615384613" r="6" fill="blue" stroke="black" stroke-width="1"/>
45
+ <text x="244.59855769230768" y="400.15384615384613" font-family="Arial" font-size="10" fill="black">S3</text>
46
+ <text x="236.59855769230768" y="385.15384615384613" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(648,1344)</text>
50
47
  <circle cx="528.6658653846154" cy="88.46153846153845" r="6" fill="green" stroke="black" stroke-width="1"/>
51
48
  <text x="536.6658653846154" y="92.46153846153845" font-family="Arial" font-size="10" fill="black">T6</text>
52
49
  <text x="528.6658653846154" y="77.46153846153845" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(1620,320)</text>
53
- <circle cx="601.6826923076923" cy="396.15384615384613" r="6" fill="blue" stroke="black" stroke-width="1"/>
54
- <text x="609.6826923076923" y="400.15384615384613" font-family="Arial" font-size="10" fill="black">S5</text>
55
- <text x="601.6826923076923" y="385.15384615384613" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(1863,1344)</text>
50
+ <circle cx="236.59855769230768" cy="88.46153846153845" r="6" fill="blue" stroke="black" stroke-width="1"/>
51
+ <text x="244.59855769230768" y="92.46153846153845" font-family="Arial" font-size="10" fill="black">S4</text>
52
+ <text x="236.59855769230768" y="77.46153846153845" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(648,320)</text>
56
53
  <circle cx="674.6995192307692" cy="203.84615384615384" r="6" fill="green" stroke="black" stroke-width="1"/>
57
54
  <text x="682.6995192307692" y="207.84615384615384" font-family="Arial" font-size="10" fill="black">T7</text>
58
55
  <text x="674.6995192307692" y="192.84615384615384" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(2106,704)</text>
56
+ <circle cx="601.6826923076923" cy="396.15384615384613" r="6" fill="blue" stroke="black" stroke-width="1"/>
57
+ <text x="609.6826923076923" y="400.15384615384613" font-family="Arial" font-size="10" fill="black">S5</text>
58
+ <text x="601.6826923076923" y="385.15384615384613" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(1863,1344)</text>
59
59
  <text x="20" y="20" font-family="Arial" font-size="12" font-weight="bold">Legend:</text>
60
60
  <circle cx="20" cy="36" r="4" fill="red" stroke="black"/>
61
61
  <text x="30" y="40" font-family="Arial" font-size="10">Source</text>
@@ -68,4 +68,4 @@
68
68
  <text x="20" y="140" font-family="Arial" font-size="9">Terminals: 7</text>
69
69
  <text x="20" y="155" font-family="Arial" font-size="9">Steiner: 5</text>
70
70
  <text x="20" y="170" font-family="Arial" font-size="9">Wirelength: 6379.00</text>
71
- </svg>
71
+ </svg>
@@ -25,33 +25,33 @@
25
25
  <circle cx="455.64903846153845" cy="357.6923076923077" r="6" fill="green" stroke="black" stroke-width="1"/>
26
26
  <text x="463.64903846153845" y="361.6923076923077" font-family="Arial" font-size="10" fill="black">T2</text>
27
27
  <text x="455.64903846153845" y="346.6923076923077" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(1377,1216)</text>
28
- <circle cx="455.64903846153845" cy="396.15384615384613" r="6" fill="blue" stroke="black" stroke-width="1"/>
29
- <text x="463.64903846153845" y="400.15384615384613" font-family="Arial" font-size="10" fill="black">S1</text>
30
- <text x="455.64903846153845" y="385.15384615384613" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(1377,1344)</text>
31
28
  <circle cx="601.6826923076923" cy="550.0" r="6" fill="green" stroke="black" stroke-width="1"/>
32
29
  <text x="609.6826923076923" y="554.0" font-family="Arial" font-size="10" fill="black">T3</text>
33
30
  <text x="601.6826923076923" y="539.0" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(1863,1856)</text>
34
- <circle cx="382.63221153846155" cy="396.15384615384613" r="6" fill="blue" stroke="black" stroke-width="1"/>
35
- <text x="390.63221153846155" y="400.15384615384613" font-family="Arial" font-size="10" fill="black">S2</text>
36
- <text x="382.63221153846155" y="385.15384615384613" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(1134,1344)</text>
31
+ <circle cx="455.64903846153845" cy="396.15384615384613" r="6" fill="blue" stroke="black" stroke-width="1"/>
32
+ <text x="463.64903846153845" y="400.15384615384613" font-family="Arial" font-size="10" fill="black">S1</text>
33
+ <text x="455.64903846153845" y="385.15384615384613" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(1377,1344)</text>
37
34
  <circle cx="382.63221153846155" cy="242.3076923076923" r="6" fill="green" stroke="black" stroke-width="1"/>
38
35
  <text x="390.63221153846155" y="246.3076923076923" font-family="Arial" font-size="10" fill="black">T4</text>
39
36
  <text x="382.63221153846155" y="231.3076923076923" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(1134,832)</text>
37
+ <circle cx="382.63221153846155" cy="396.15384615384613" r="6" fill="blue" stroke="black" stroke-width="1"/>
38
+ <text x="390.63221153846155" y="400.15384615384613" font-family="Arial" font-size="10" fill="black">S2</text>
39
+ <text x="382.63221153846155" y="385.15384615384613" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(1134,1344)</text>
40
40
  <circle cx="236.59855769230768" cy="50.0" r="6" fill="green" stroke="black" stroke-width="1"/>
41
41
  <text x="244.59855769230768" y="54.0" font-family="Arial" font-size="10" fill="black">T5</text>
42
42
  <text x="236.59855769230768" y="39.0" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(648,192)</text>
43
- <circle cx="382.63221153846155" cy="88.46153846153845" r="6" fill="blue" stroke="black" stroke-width="1"/>
44
- <text x="390.63221153846155" y="92.46153846153845" font-family="Arial" font-size="10" fill="black">S3</text>
45
- <text x="382.63221153846155" y="77.46153846153845" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(1134,320)</text>
46
43
  <circle cx="528.6658653846154" cy="88.46153846153845" r="6" fill="green" stroke="black" stroke-width="1"/>
47
44
  <text x="536.6658653846154" y="92.46153846153845" font-family="Arial" font-size="10" fill="black">T6</text>
48
45
  <text x="528.6658653846154" y="77.46153846153845" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(1620,320)</text>
49
- <circle cx="601.6826923076923" cy="396.15384615384613" r="6" fill="blue" stroke="black" stroke-width="1"/>
50
- <text x="609.6826923076923" y="400.15384615384613" font-family="Arial" font-size="10" fill="black">S4</text>
51
- <text x="601.6826923076923" y="385.15384615384613" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(1863,1344)</text>
46
+ <circle cx="382.63221153846155" cy="88.46153846153845" r="6" fill="blue" stroke="black" stroke-width="1"/>
47
+ <text x="390.63221153846155" y="92.46153846153845" font-family="Arial" font-size="10" fill="black">S3</text>
48
+ <text x="382.63221153846155" y="77.46153846153845" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(1134,320)</text>
52
49
  <circle cx="674.6995192307692" cy="203.84615384615384" r="6" fill="green" stroke="black" stroke-width="1"/>
53
50
  <text x="682.6995192307692" y="207.84615384615384" font-family="Arial" font-size="10" fill="black">T7</text>
54
51
  <text x="674.6995192307692" y="192.84615384615384" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(2106,704)</text>
52
+ <circle cx="601.6826923076923" cy="396.15384615384613" r="6" fill="blue" stroke="black" stroke-width="1"/>
53
+ <text x="609.6826923076923" y="400.15384615384613" font-family="Arial" font-size="10" fill="black">S4</text>
54
+ <text x="601.6826923076923" y="385.15384615384613" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(1863,1344)</text>
55
55
  <text x="20" y="20" font-family="Arial" font-size="12" font-weight="bold">Legend:</text>
56
56
  <circle cx="20" cy="36" r="4" fill="red" stroke="black"/>
57
57
  <text x="30" y="40" font-family="Arial" font-size="10">Source</text>
@@ -64,4 +64,4 @@
64
64
  <text x="20" y="140" font-family="Arial" font-size="9">Terminals: 7</text>
65
65
  <text x="20" y="155" font-family="Arial" font-size="9">Steiner: 4</text>
66
66
  <text x="20" y="170" font-family="Arial" font-size="9">Wirelength: 5867.00</text>
67
- </svg>
67
+ </svg>
@@ -24,27 +24,27 @@
24
24
  <circle cx="455.64903846153845" cy="357.6923076923077" r="6" fill="green" stroke="black" stroke-width="1"/>
25
25
  <text x="463.64903846153845" y="361.6923076923077" font-family="Arial" font-size="10" fill="black">T2</text>
26
26
  <text x="455.64903846153845" y="346.6923076923077" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(1377,1216)</text>
27
- <circle cx="455.64903846153845" cy="396.15384615384613" r="6" fill="blue" stroke="black" stroke-width="1"/>
28
- <text x="463.64903846153845" y="400.15384615384613" font-family="Arial" font-size="10" fill="black">S1</text>
29
- <text x="455.64903846153845" y="385.15384615384613" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(1377,1344)</text>
30
27
  <circle cx="601.6826923076923" cy="550.0" r="6" fill="green" stroke="black" stroke-width="1"/>
31
28
  <text x="609.6826923076923" y="554.0" font-family="Arial" font-size="10" fill="black">T3</text>
32
29
  <text x="601.6826923076923" y="539.0" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(1863,1856)</text>
33
- <circle cx="382.63221153846155" cy="396.15384615384613" r="6" fill="blue" stroke="black" stroke-width="1"/>
34
- <text x="390.63221153846155" y="400.15384615384613" font-family="Arial" font-size="10" fill="black">S2</text>
35
- <text x="382.63221153846155" y="385.15384615384613" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(1134,1344)</text>
30
+ <circle cx="455.64903846153845" cy="396.15384615384613" r="6" fill="blue" stroke="black" stroke-width="1"/>
31
+ <text x="463.64903846153845" y="400.15384615384613" font-family="Arial" font-size="10" fill="black">S1</text>
32
+ <text x="455.64903846153845" y="385.15384615384613" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(1377,1344)</text>
36
33
  <circle cx="382.63221153846155" cy="242.3076923076923" r="6" fill="green" stroke="black" stroke-width="1"/>
37
34
  <text x="390.63221153846155" y="246.3076923076923" font-family="Arial" font-size="10" fill="black">T4</text>
38
35
  <text x="382.63221153846155" y="231.3076923076923" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(1134,832)</text>
36
+ <circle cx="382.63221153846155" cy="396.15384615384613" r="6" fill="blue" stroke="black" stroke-width="1"/>
37
+ <text x="390.63221153846155" y="400.15384615384613" font-family="Arial" font-size="10" fill="black">S2</text>
38
+ <text x="382.63221153846155" y="385.15384615384613" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(1134,1344)</text>
39
39
  <circle cx="236.59855769230768" cy="50.0" r="6" fill="green" stroke="black" stroke-width="1"/>
40
40
  <text x="244.59855769230768" y="54.0" font-family="Arial" font-size="10" fill="black">T5</text>
41
41
  <text x="236.59855769230768" y="39.0" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(648,192)</text>
42
- <circle cx="382.63221153846155" cy="88.46153846153845" r="6" fill="blue" stroke="black" stroke-width="1"/>
43
- <text x="390.63221153846155" y="92.46153846153845" font-family="Arial" font-size="10" fill="black">S3</text>
44
- <text x="382.63221153846155" y="77.46153846153845" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(1134,320)</text>
45
42
  <circle cx="528.6658653846154" cy="88.46153846153845" r="6" fill="green" stroke="black" stroke-width="1"/>
46
43
  <text x="536.6658653846154" y="92.46153846153845" font-family="Arial" font-size="10" fill="black">T6</text>
47
44
  <text x="528.6658653846154" y="77.46153846153845" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(1620,320)</text>
45
+ <circle cx="382.63221153846155" cy="88.46153846153845" r="6" fill="blue" stroke="black" stroke-width="1"/>
46
+ <text x="390.63221153846155" y="92.46153846153845" font-family="Arial" font-size="10" fill="black">S3</text>
47
+ <text x="382.63221153846155" y="77.46153846153845" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(1134,320)</text>
48
48
  <circle cx="674.6995192307692" cy="203.84615384615384" r="6" fill="green" stroke="black" stroke-width="1"/>
49
49
  <text x="682.6995192307692" y="207.84615384615384" font-family="Arial" font-size="10" fill="black">T7</text>
50
50
  <text x="674.6995192307692" y="192.84615384615384" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(2106,704)</text>
@@ -60,4 +60,4 @@
60
60
  <text x="20" y="140" font-family="Arial" font-size="9">Terminals: 7</text>
61
61
  <text x="20" y="155" font-family="Arial" font-size="9">Steiner: 3</text>
62
62
  <text x="20" y="170" font-family="Arial" font-size="9">Wirelength: 5854.00</text>
63
- </svg>
63
+ </svg>
@@ -25,30 +25,30 @@
25
25
  <circle cx="455.64903846153845" cy="357.6923076923077" r="6" fill="green" stroke="black" stroke-width="1"/>
26
26
  <text x="463.64903846153845" y="361.6923076923077" font-family="Arial" font-size="10" fill="black">T2</text>
27
27
  <text x="455.64903846153845" y="346.6923076923077" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(1377,1216)</text>
28
- <circle cx="163.58173076923077" cy="511.53846153846155" r="6" fill="blue" stroke="black" stroke-width="1"/>
29
- <text x="171.58173076923077" y="515.5384615384615" font-family="Arial" font-size="10" fill="black">S1</text>
30
- <text x="163.58173076923077" y="500.53846153846155" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(405,1728)</text>
31
28
  <circle cx="601.6826923076923" cy="550.0" r="6" fill="green" stroke="black" stroke-width="1"/>
32
29
  <text x="609.6826923076923" y="554.0" font-family="Arial" font-size="10" fill="black">T3</text>
33
30
  <text x="601.6826923076923" y="539.0" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(1863,1856)</text>
34
- <circle cx="382.63221153846155" cy="357.6923076923077" r="6" fill="blue" stroke="black" stroke-width="1"/>
35
- <text x="390.63221153846155" y="361.6923076923077" font-family="Arial" font-size="10" fill="black">S2</text>
36
- <text x="382.63221153846155" y="346.6923076923077" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(1134,1216)</text>
31
+ <circle cx="163.58173076923077" cy="511.53846153846155" r="6" fill="blue" stroke="black" stroke-width="1"/>
32
+ <text x="171.58173076923077" y="515.5384615384615" font-family="Arial" font-size="10" fill="black">S1</text>
33
+ <text x="163.58173076923077" y="500.53846153846155" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(405,1728)</text>
37
34
  <circle cx="382.63221153846155" cy="242.3076923076923" r="6" fill="green" stroke="black" stroke-width="1"/>
38
35
  <text x="390.63221153846155" y="246.3076923076923" font-family="Arial" font-size="10" fill="black">T4</text>
39
36
  <text x="382.63221153846155" y="231.3076923076923" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(1134,832)</text>
40
- <circle cx="236.59855769230768" cy="357.6923076923077" r="6" fill="blue" stroke="black" stroke-width="1"/>
41
- <text x="244.59855769230768" y="361.6923076923077" font-family="Arial" font-size="10" fill="black">S3</text>
42
- <text x="236.59855769230768" y="346.6923076923077" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(648,1216)</text>
37
+ <circle cx="382.63221153846155" cy="357.6923076923077" r="6" fill="blue" stroke="black" stroke-width="1"/>
38
+ <text x="390.63221153846155" y="361.6923076923077" font-family="Arial" font-size="10" fill="black">S2</text>
39
+ <text x="382.63221153846155" y="346.6923076923077" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(1134,1216)</text>
43
40
  <circle cx="236.59855769230768" cy="50.0" r="6" fill="green" stroke="black" stroke-width="1"/>
44
41
  <text x="244.59855769230768" y="54.0" font-family="Arial" font-size="10" fill="black">T5</text>
45
42
  <text x="236.59855769230768" y="39.0" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(648,192)</text>
46
- <circle cx="236.59855769230768" cy="88.46153846153845" r="6" fill="blue" stroke="black" stroke-width="1"/>
47
- <text x="244.59855769230768" y="92.46153846153845" font-family="Arial" font-size="10" fill="black">S4</text>
48
- <text x="236.59855769230768" y="77.46153846153845" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(648,320)</text>
43
+ <circle cx="236.59855769230768" cy="357.6923076923077" r="6" fill="blue" stroke="black" stroke-width="1"/>
44
+ <text x="244.59855769230768" y="361.6923076923077" font-family="Arial" font-size="10" fill="black">S3</text>
45
+ <text x="236.59855769230768" y="346.6923076923077" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(648,1216)</text>
49
46
  <circle cx="528.6658653846154" cy="88.46153846153845" r="6" fill="green" stroke="black" stroke-width="1"/>
50
47
  <text x="536.6658653846154" y="92.46153846153845" font-family="Arial" font-size="10" fill="black">T6</text>
51
48
  <text x="528.6658653846154" y="77.46153846153845" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(1620,320)</text>
49
+ <circle cx="236.59855769230768" cy="88.46153846153845" r="6" fill="blue" stroke="black" stroke-width="1"/>
50
+ <text x="244.59855769230768" y="92.46153846153845" font-family="Arial" font-size="10" fill="black">S4</text>
51
+ <text x="236.59855769230768" y="77.46153846153845" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(648,320)</text>
52
52
  <circle cx="674.6995192307692" cy="203.84615384615384" r="6" fill="green" stroke="black" stroke-width="1"/>
53
53
  <text x="682.6995192307692" y="207.84615384615384" font-family="Arial" font-size="10" fill="black">T7</text>
54
54
  <text x="674.6995192307692" y="192.84615384615384" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(2106,704)</text>
@@ -64,4 +64,4 @@
64
64
  <text x="20" y="140" font-family="Arial" font-size="9">Terminals: 7</text>
65
65
  <text x="20" y="155" font-family="Arial" font-size="9">Steiner: 4</text>
66
66
  <text x="20" y="170" font-family="Arial" font-size="9">Wirelength: 6928.00</text>
67
- </svg>
67
+ </svg>
@@ -26,36 +26,36 @@
26
26
  <circle cx="455.64903846153845" cy="357.6923076923077" r="6" fill="green" stroke="black" stroke-width="1"/>
27
27
  <text x="463.64903846153845" y="361.6923076923077" font-family="Arial" font-size="10" fill="black">T2</text>
28
28
  <text x="455.64903846153845" y="346.6923076923077" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(1377,1216)</text>
29
- <circle cx="455.64903846153845" cy="396.15384615384613" r="6" fill="blue" stroke="black" stroke-width="1"/>
30
- <text x="463.64903846153845" y="400.15384615384613" font-family="Arial" font-size="10" fill="black">S1</text>
31
- <text x="455.64903846153845" y="385.15384615384613" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(1377,1344)</text>
32
29
  <circle cx="601.6826923076923" cy="550.0" r="6" fill="green" stroke="black" stroke-width="1"/>
33
30
  <text x="609.6826923076923" y="554.0" font-family="Arial" font-size="10" fill="black">T3</text>
34
31
  <text x="601.6826923076923" y="539.0" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(1863,1856)</text>
35
- <circle cx="382.63221153846155" cy="396.15384615384613" r="6" fill="blue" stroke="black" stroke-width="1"/>
36
- <text x="390.63221153846155" y="400.15384615384613" font-family="Arial" font-size="10" fill="black">S2</text>
37
- <text x="382.63221153846155" y="385.15384615384613" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(1134,1344)</text>
32
+ <circle cx="455.64903846153845" cy="396.15384615384613" r="6" fill="blue" stroke="black" stroke-width="1"/>
33
+ <text x="463.64903846153845" y="400.15384615384613" font-family="Arial" font-size="10" fill="black">S1</text>
34
+ <text x="455.64903846153845" y="385.15384615384613" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(1377,1344)</text>
38
35
  <circle cx="382.63221153846155" cy="242.3076923076923" r="6" fill="green" stroke="black" stroke-width="1"/>
39
36
  <text x="390.63221153846155" y="246.3076923076923" font-family="Arial" font-size="10" fill="black">T4</text>
40
37
  <text x="382.63221153846155" y="231.3076923076923" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(1134,832)</text>
41
- <circle cx="236.59855769230768" cy="396.15384615384613" r="6" fill="blue" stroke="black" stroke-width="1"/>
42
- <text x="244.59855769230768" y="400.15384615384613" font-family="Arial" font-size="10" fill="black">S3</text>
43
- <text x="236.59855769230768" y="385.15384615384613" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(648,1344)</text>
38
+ <circle cx="382.63221153846155" cy="396.15384615384613" r="6" fill="blue" stroke="black" stroke-width="1"/>
39
+ <text x="390.63221153846155" y="400.15384615384613" font-family="Arial" font-size="10" fill="black">S2</text>
40
+ <text x="382.63221153846155" y="385.15384615384613" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(1134,1344)</text>
44
41
  <circle cx="236.59855769230768" cy="50.0" r="6" fill="green" stroke="black" stroke-width="1"/>
45
42
  <text x="244.59855769230768" y="54.0" font-family="Arial" font-size="10" fill="black">T5</text>
46
43
  <text x="236.59855769230768" y="39.0" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(648,192)</text>
47
- <circle cx="236.59855769230768" cy="88.46153846153845" r="6" fill="blue" stroke="black" stroke-width="1"/>
48
- <text x="244.59855769230768" y="92.46153846153845" font-family="Arial" font-size="10" fill="black">S4</text>
49
- <text x="236.59855769230768" y="77.46153846153845" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(648,320)</text>
44
+ <circle cx="236.59855769230768" cy="396.15384615384613" r="6" fill="blue" stroke="black" stroke-width="1"/>
45
+ <text x="244.59855769230768" y="400.15384615384613" font-family="Arial" font-size="10" fill="black">S3</text>
46
+ <text x="236.59855769230768" y="385.15384615384613" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(648,1344)</text>
50
47
  <circle cx="528.6658653846154" cy="88.46153846153845" r="6" fill="green" stroke="black" stroke-width="1"/>
51
48
  <text x="536.6658653846154" y="92.46153846153845" font-family="Arial" font-size="10" fill="black">T6</text>
52
49
  <text x="528.6658653846154" y="77.46153846153845" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(1620,320)</text>
53
- <circle cx="601.6826923076923" cy="396.15384615384613" r="6" fill="blue" stroke="black" stroke-width="1"/>
54
- <text x="609.6826923076923" y="400.15384615384613" font-family="Arial" font-size="10" fill="black">S5</text>
55
- <text x="601.6826923076923" y="385.15384615384613" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(1863,1344)</text>
50
+ <circle cx="236.59855769230768" cy="88.46153846153845" r="6" fill="blue" stroke="black" stroke-width="1"/>
51
+ <text x="244.59855769230768" y="92.46153846153845" font-family="Arial" font-size="10" fill="black">S4</text>
52
+ <text x="236.59855769230768" y="77.46153846153845" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(648,320)</text>
56
53
  <circle cx="674.6995192307692" cy="203.84615384615384" r="6" fill="green" stroke="black" stroke-width="1"/>
57
54
  <text x="682.6995192307692" y="207.84615384615384" font-family="Arial" font-size="10" fill="black">T7</text>
58
55
  <text x="674.6995192307692" y="192.84615384615384" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(2106,704)</text>
56
+ <circle cx="601.6826923076923" cy="396.15384615384613" r="6" fill="blue" stroke="black" stroke-width="1"/>
57
+ <text x="609.6826923076923" y="400.15384615384613" font-family="Arial" font-size="10" fill="black">S5</text>
58
+ <text x="601.6826923076923" y="385.15384615384613" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(1863,1344)</text>
59
59
  <text x="20" y="20" font-family="Arial" font-size="12" font-weight="bold">Legend:</text>
60
60
  <circle cx="20" cy="36" r="4" fill="red" stroke="black"/>
61
61
  <text x="30" y="40" font-family="Arial" font-size="10">Source</text>
@@ -68,4 +68,4 @@
68
68
  <text x="20" y="140" font-family="Arial" font-size="9">Terminals: 7</text>
69
69
  <text x="20" y="155" font-family="Arial" font-size="9">Steiner: 5</text>
70
70
  <text x="20" y="170" font-family="Arial" font-size="9">Wirelength: 6379.00</text>
71
- </svg>
71
+ </svg>
@@ -9,7 +9,6 @@ from typing import Generator
9
9
 
10
10
  from lds_gen.ilds import Halton
11
11
 
12
- # from physdes.interval import Interval
13
12
  from physdes.point import Point
14
13
  from physdes.recti import detect_overlap_gen
15
14
 
@@ -59,24 +58,6 @@ def visualize_overlap_svg(
59
58
  f'<svg xmlns="http://www.w3.org/2000/svg" width="{width}" height="{height}" style="background-color:#f8f9fa;">',
60
59
  ]
61
60
 
62
- # legend_y = 30
63
- # svg_parts.append(f'<text x="{margin}" y="{legend_y}" font-size="14" fill="#333">Rectangles</text>')
64
- # legend_y += 20
65
- # svg_parts.append(f'<rect x="{margin}" y="{legend_y - 12}" width="16" height="12" fill="#4a90d9" stroke="#333"/>')
66
- # svg_parts.append(f'<text x="{margin + 20}" y="{legend_y}" font-size="12" fill="#333">Non-overlapping</text>')
67
- # legend_y += 20
68
- # svg_parts.append(f'<rect x="{margin}" y="{legend_y - 12}" width="16" height="12" fill="#e74c3c" stroke="#c0392b"/>')
69
- # svg_parts.append(f'<text x="{margin + 20}" y="{legend_y}" font-size="12" fill="#333">Overlapping</text>')
70
- # if overlapping_pair:
71
- # legend_y += 20
72
- # svg_parts.append(f'<text x="{margin + 20}" y="{legend_y}" font-size="12" fill="#e74c3c">Overlap detected!</text>')
73
- # legend_y += 20
74
- # pair1_str = f"({overlapping_pair[0].xcoord}, {overlapping_pair[0].ycoord})"
75
- # svg_parts.append(f'<text x="{margin + 20}" y="{legend_y}" font-size="11" fill="#666">{pair1_str}</text>')
76
- # legend_y += 15
77
- # pair2_str = f"({overlapping_pair[1].xcoord}, {overlapping_pair[1].ycoord})"
78
- # svg_parts.append(f'<text x="{margin + 20}" y="{legend_y}" font-size="11" fill="#666">{pair2_str}</text>')
79
-
80
61
  for idx, r in enumerate(rectangles):
81
62
  x1 = to_svg_x(r.xcoord.lb)
82
63
  y1 = to_svg_y(r.ycoord.ub)
@@ -96,10 +77,6 @@ def visualize_overlap_svg(
96
77
  f'<rect x="{x1}" y="{y1}" width="{w}" height="{h}" fill="{fill}" stroke="{stroke}" stroke-width="2" opacity="{opacity}"/>'
97
78
  )
98
79
 
99
- # cx = x1 + w / 2
100
- # cy = y1 + h / 2
101
- # svg_parts.append(f'<text x="{cx}" y="{cy + 4}" text-anchor="middle" font-size="11" fill="white" font-weight="bold">{idx + 1}</text>')
102
-
103
80
  svg_parts.append("</svg>")
104
81
  return "\n".join(svg_parts)
105
82
 
@@ -111,38 +88,12 @@ def demo() -> None:
111
88
  coords = [hgen.pop() for _ in range(500)]
112
89
  svg_rects = [Point(coord[0], coord[1]).enlarge_with(10) for coord in coords]
113
90
 
114
- # svg_rects = [
115
- # Rectangle(Interval(0, 4), Interval(0, 4)),
116
- # Rectangle(Interval(2, 6), Interval(2, 6)),
117
- # Rectangle(Interval(5, 9), Interval(5, 9)),
118
- # Rectangle(Interval(8, 12), Interval(8, 12)),
119
- # Rectangle(Interval(11, 15), Interval(11, 15)),
120
- # Rectangle(Interval(3, 7), Interval(10, 14)),
121
- # Rectangle(Interval(14, 18), Interval(14, 18)),
122
- # Rectangle(Interval(16, 20), Interval(4, 8)),
123
- # Rectangle(Interval(6, 10), Interval(6, 10)),
124
- # Rectangle(Interval(9, 13), Interval(12, 16)),
125
- # Rectangle(Interval(0, 3), Interval(8, 11)),
126
- # ]
127
-
128
- # print(f"Testing with {len(svg_rects)} rectangles:")
129
- # for i, r in enumerate(svg_rects):
130
- # print(f" {i + 1}: ({r.xcoord}, {r.ycoord})")
131
-
132
91
  print()
133
92
  print("=" * 50)
134
93
  print("Overlap Detection Result")
135
94
  print("=" * 50)
136
95
  overlap_result_gen = detect_overlap_gen(svg_rects)
137
96
 
138
- # for overlap_result in overlap_result_gen:
139
- # r1, r2 = overlap_result
140
- # print("OVERLAP DETECTED between:")
141
- # print(f" Rect A: ({r1.xcoord}, {r1.ycoord})")
142
- # print(f" Rect B: ({r2.xcoord}, {r2.ycoord})")
143
- # else:
144
- # print("No overlap found")
145
-
146
97
  svg = visualize_overlap_svg(svg_rects, overlap_result_gen)
147
98
 
148
99
  with open("demo_overlap.svg", "w") as f:
@@ -1,4 +1,6 @@
1
1
  furo>=2022.09.29
2
+ matplotlib
3
+ numpy
2
4
  # Requirements file for ReadTheDocs, check .readthedocs.yml.
3
5
  # To build the module reference correctly, make sure every external package
4
6
  # under `install_requires` in `setup.cfg` is also listed here!
@@ -24,27 +24,27 @@
24
24
  <circle cx="455.64903846153845" cy="357.6923076923077" r="6" fill="green" stroke="black" stroke-width="1"/>
25
25
  <text x="463.64903846153845" y="361.6923076923077" font-family="Arial" font-size="10" fill="black">T2</text>
26
26
  <text x="455.64903846153845" y="346.6923076923077" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(377,216)</text>
27
- <circle cx="163.58173076923077" cy="396.15384615384613" r="6" fill="blue" stroke="black" stroke-width="1"/>
28
- <text x="171.58173076923077" y="400.15384615384613" font-family="Arial" font-size="10" fill="black">S1</text>
29
- <text x="163.58173076923077" y="385.15384615384613" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(-595,344)</text>
30
27
  <circle cx="236.59855769230768" cy="50.0" r="6" fill="green" stroke="black" stroke-width="1"/>
31
28
  <text x="244.59855769230768" y="54.0" font-family="Arial" font-size="10" fill="black">T3</text>
32
29
  <text x="236.59855769230768" y="39.0" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(-352,-808)</text>
33
- <circle cx="382.63221153846155" cy="357.6923076923077" r="6" fill="blue" stroke="black" stroke-width="1"/>
34
- <text x="390.63221153846155" y="361.6923076923077" font-family="Arial" font-size="10" fill="black">S2</text>
35
- <text x="382.63221153846155" y="346.6923076923077" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(134,216)</text>
30
+ <circle cx="163.58173076923077" cy="396.15384615384613" r="6" fill="blue" stroke="black" stroke-width="1"/>
31
+ <text x="171.58173076923077" y="400.15384615384613" font-family="Arial" font-size="10" fill="black">S1</text>
32
+ <text x="163.58173076923077" y="385.15384615384613" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(-595,344)</text>
36
33
  <circle cx="382.63221153846155" cy="242.3076923076923" r="6" fill="green" stroke="black" stroke-width="1"/>
37
34
  <text x="390.63221153846155" y="246.3076923076923" font-family="Arial" font-size="10" fill="black">T4</text>
38
35
  <text x="382.63221153846155" y="231.3076923076923" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(134,-168)</text>
36
+ <circle cx="382.63221153846155" cy="357.6923076923077" r="6" fill="blue" stroke="black" stroke-width="1"/>
37
+ <text x="390.63221153846155" y="361.6923076923077" font-family="Arial" font-size="10" fill="black">S2</text>
38
+ <text x="382.63221153846155" y="346.6923076923077" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(134,216)</text>
39
39
  <circle cx="601.6826923076923" cy="550.0" r="6" fill="green" stroke="black" stroke-width="1"/>
40
40
  <text x="609.6826923076923" y="554.0" font-family="Arial" font-size="10" fill="black">T5</text>
41
41
  <text x="601.6826923076923" y="539.0" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(863,856)</text>
42
- <circle cx="236.59855769230768" cy="88.46153846153845" r="6" fill="blue" stroke="black" stroke-width="1"/>
43
- <text x="244.59855769230768" y="92.46153846153845" font-family="Arial" font-size="10" fill="black">S3</text>
44
- <text x="236.59855769230768" y="77.46153846153845" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(-352,-680)</text>
45
42
  <circle cx="528.6658653846154" cy="88.46153846153845" r="6" fill="green" stroke="black" stroke-width="1"/>
46
43
  <text x="536.6658653846154" y="92.46153846153845" font-family="Arial" font-size="10" fill="black">T6</text>
47
44
  <text x="528.6658653846154" y="77.46153846153845" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(620,-680)</text>
45
+ <circle cx="236.59855769230768" cy="88.46153846153845" r="6" fill="blue" stroke="black" stroke-width="1"/>
46
+ <text x="244.59855769230768" y="92.46153846153845" font-family="Arial" font-size="10" fill="black">S3</text>
47
+ <text x="236.59855769230768" y="77.46153846153845" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(-352,-680)</text>
48
48
  <circle cx="674.6995192307692" cy="203.84615384615384" r="6" fill="green" stroke="black" stroke-width="1"/>
49
49
  <text x="682.6995192307692" y="207.84615384615384" font-family="Arial" font-size="10" fill="black">T7</text>
50
50
  <text x="674.6995192307692" y="192.84615384615384" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(1106,-296)</text>
@@ -57,15 +57,9 @@
57
57
  <text x="30" y="60" font-family="Arial" font-size="10">Steiner</text>
58
58
  <circle cx="20" cy="76" r="4" fill="green" stroke="black"/>
59
59
  <text x="30" y="80" font-family="Arial" font-size="10">Terminal</text>
60
- <circle cx="20" cy="36" r="4" fill="red" stroke="black"/>
61
- <text x="30" y="40" font-family="Arial" font-size="10">Source</text>
62
- <circle cx="20" cy="56" r="4" fill="blue" stroke="black"/>
63
- <text x="30" y="60" font-family="Arial" font-size="10">Steiner</text>
64
- <circle cx="20" cy="76" r="4" fill="green" stroke="black"/>
65
- <text x="30" y="80" font-family="Arial" font-size="10">Terminal</text>
66
60
  <text x="20" y="110" font-family="Arial" font-size="10" font-weight="bold">Statistics:</text>
67
61
  <text x="20" y="125" font-family="Arial" font-size="9">Total Nodes: 11</text>
68
62
  <text x="20" y="140" font-family="Arial" font-size="9">Terminals: 7</text>
69
63
  <text x="20" y="155" font-family="Arial" font-size="9">Steiner: 3</text>
70
64
  <text x="20" y="170" font-family="Arial" font-size="9">Wirelength: 7239.00</text>
71
- </svg>
65
+ </svg>
@@ -24,27 +24,27 @@
24
24
  <circle cx="455.64903846153845" cy="357.6923076923077" r="6" fill="green" stroke="black" stroke-width="1"/>
25
25
  <text x="463.64903846153845" y="361.6923076923077" font-family="Arial" font-size="10" fill="black">T2</text>
26
26
  <text x="455.64903846153845" y="346.6923076923077" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(377,216)</text>
27
- <circle cx="163.58173076923077" cy="396.15384615384613" r="6" fill="blue" stroke="black" stroke-width="1"/>
28
- <text x="171.58173076923077" y="400.15384615384613" font-family="Arial" font-size="10" fill="black">S1</text>
29
- <text x="163.58173076923077" y="385.15384615384613" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(-595,344)</text>
30
27
  <circle cx="236.59855769230768" cy="50.0" r="6" fill="green" stroke="black" stroke-width="1"/>
31
28
  <text x="244.59855769230768" y="54.0" font-family="Arial" font-size="10" fill="black">T3</text>
32
29
  <text x="236.59855769230768" y="39.0" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(-352,-808)</text>
33
- <circle cx="382.63221153846155" cy="357.6923076923077" r="6" fill="blue" stroke="black" stroke-width="1"/>
34
- <text x="390.63221153846155" y="361.6923076923077" font-family="Arial" font-size="10" fill="black">S2</text>
35
- <text x="382.63221153846155" y="346.6923076923077" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(134,216)</text>
30
+ <circle cx="163.58173076923077" cy="396.15384615384613" r="6" fill="blue" stroke="black" stroke-width="1"/>
31
+ <text x="171.58173076923077" y="400.15384615384613" font-family="Arial" font-size="10" fill="black">S1</text>
32
+ <text x="163.58173076923077" y="385.15384615384613" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(-595,344)</text>
36
33
  <circle cx="382.63221153846155" cy="242.3076923076923" r="6" fill="green" stroke="black" stroke-width="1"/>
37
34
  <text x="390.63221153846155" y="246.3076923076923" font-family="Arial" font-size="10" fill="black">T4</text>
38
35
  <text x="382.63221153846155" y="231.3076923076923" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(134,-168)</text>
36
+ <circle cx="382.63221153846155" cy="357.6923076923077" r="6" fill="blue" stroke="black" stroke-width="1"/>
37
+ <text x="390.63221153846155" y="361.6923076923077" font-family="Arial" font-size="10" fill="black">S2</text>
38
+ <text x="382.63221153846155" y="346.6923076923077" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(134,216)</text>
39
39
  <circle cx="601.6826923076923" cy="550.0" r="6" fill="green" stroke="black" stroke-width="1"/>
40
40
  <text x="609.6826923076923" y="554.0" font-family="Arial" font-size="10" fill="black">T5</text>
41
41
  <text x="601.6826923076923" y="539.0" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(863,856)</text>
42
- <circle cx="236.59855769230768" cy="88.46153846153845" r="6" fill="blue" stroke="black" stroke-width="1"/>
43
- <text x="244.59855769230768" y="92.46153846153845" font-family="Arial" font-size="10" fill="black">S3</text>
44
- <text x="236.59855769230768" y="77.46153846153845" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(-352,-680)</text>
45
42
  <circle cx="528.6658653846154" cy="88.46153846153845" r="6" fill="green" stroke="black" stroke-width="1"/>
46
43
  <text x="536.6658653846154" y="92.46153846153845" font-family="Arial" font-size="10" fill="black">T6</text>
47
44
  <text x="528.6658653846154" y="77.46153846153845" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(620,-680)</text>
45
+ <circle cx="236.59855769230768" cy="88.46153846153845" r="6" fill="blue" stroke="black" stroke-width="1"/>
46
+ <text x="244.59855769230768" y="92.46153846153845" font-family="Arial" font-size="10" fill="black">S3</text>
47
+ <text x="236.59855769230768" y="77.46153846153845" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(-352,-680)</text>
48
48
  <circle cx="674.6995192307692" cy="203.84615384615384" r="6" fill="green" stroke="black" stroke-width="1"/>
49
49
  <text x="682.6995192307692" y="207.84615384615384" font-family="Arial" font-size="10" fill="black">T7</text>
50
50
  <text x="674.6995192307692" y="192.84615384615384" font-family="Arial" font-size="8" fill="gray" text-anchor="middle">(1106,-296)</text>
@@ -57,15 +57,9 @@
57
57
  <text x="30" y="60" font-family="Arial" font-size="10">Steiner</text>
58
58
  <circle cx="20" cy="76" r="4" fill="green" stroke="black"/>
59
59
  <text x="30" y="80" font-family="Arial" font-size="10">Terminal</text>
60
- <circle cx="20" cy="36" r="4" fill="red" stroke="black"/>
61
- <text x="30" y="40" font-family="Arial" font-size="10">Source</text>
62
- <circle cx="20" cy="56" r="4" fill="blue" stroke="black"/>
63
- <text x="30" y="60" font-family="Arial" font-size="10">Steiner</text>
64
- <circle cx="20" cy="76" r="4" fill="green" stroke="black"/>
65
- <text x="30" y="80" font-family="Arial" font-size="10">Terminal</text>
66
60
  <text x="20" y="110" font-family="Arial" font-size="10" font-weight="bold">Statistics:</text>
67
61
  <text x="20" y="125" font-family="Arial" font-size="9">Total Nodes: 11</text>
68
62
  <text x="20" y="140" font-family="Arial" font-size="9">Terminals: 7</text>
69
63
  <text x="20" y="155" font-family="Arial" font-size="9">Steiner: 3</text>
70
64
  <text x="20" y="170" font-family="Arial" font-size="9">Wirelength: 7239.00</text>
71
- </svg>
65
+ </svg>