kaxe 1.6.0.dev0__tar.gz → 1.6.1.dev0__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 (147) hide show
  1. {kaxe-1.6.0.dev0/src/kaxe.egg-info → kaxe-1.6.1.dev0}/PKG-INFO +1 -1
  2. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/pyproject.toml +1 -1
  3. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/objects/d2/inequality.py +37 -56
  4. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0/src/kaxe.egg-info}/PKG-INFO +1 -1
  5. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/LICENSE +0 -0
  6. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/MANIFEST.in +0 -0
  7. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/README.md +0 -0
  8. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/setup.cfg +0 -0
  9. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/__init__.py +0 -0
  10. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/_require_3d.py +0 -0
  11. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/chart/__init__.py +0 -0
  12. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/chart/bar.py +0 -0
  13. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/chart/box.py +0 -0
  14. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/chart/pie.py +0 -0
  15. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/chart/qqplot.py +0 -0
  16. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/core/__init__.py +0 -0
  17. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/core/axis.py +0 -0
  18. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/core/bounds.py +0 -0
  19. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/core/color.py +0 -0
  20. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/core/d3/backend.py +0 -0
  21. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/core/d3/camera.py +0 -0
  22. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/core/d3/helper.py +0 -0
  23. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/core/d3/hud.py +0 -0
  24. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/core/d3/objects/__init__.py +0 -0
  25. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/core/d3/objects/color.py +0 -0
  26. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/core/d3/objects/line.py +0 -0
  27. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/core/d3/objects/point.py +0 -0
  28. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/core/d3/objects/pointer.py +0 -0
  29. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/core/d3/objects/triangle.py +0 -0
  30. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/core/d3/openglrender.py +0 -0
  31. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/core/d3/translator.py +0 -0
  32. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/core/draw.py +0 -0
  33. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/core/fileloader.py +0 -0
  34. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/core/helper.py +0 -0
  35. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/core/ipython_display.py +0 -0
  36. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/core/legend.py +0 -0
  37. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/core/line.py +0 -0
  38. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/core/marker.py +0 -0
  39. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/core/profiler.py +0 -0
  40. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/core/progress.py +0 -0
  41. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/core/round.py +0 -0
  42. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/core/shapes.py +0 -0
  43. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/core/styles.py +0 -0
  44. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/core/svg.py +0 -0
  45. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/core/svg_pdf.py +0 -0
  46. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/core/symbol.py +0 -0
  47. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/core/text.py +0 -0
  48. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/core/window.py +0 -0
  49. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/data/__init__.py +0 -0
  50. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/data/excel.py +0 -0
  51. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/objects/__init__.py +0 -0
  52. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/objects/_lazy.py +0 -0
  53. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/objects/d2/__init__.py +0 -0
  54. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/objects/d2/arrow.py +0 -0
  55. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/objects/d2/bubble.py +0 -0
  56. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/objects/d2/contour.py +0 -0
  57. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/objects/d2/equation.py +0 -0
  58. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/objects/d2/fill.py +0 -0
  59. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/objects/d2/function.py +0 -0
  60. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/objects/d2/map.py +0 -0
  61. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/objects/d2/parameter.py +0 -0
  62. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/objects/d2/pillar.py +0 -0
  63. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/objects/d2/point.py +0 -0
  64. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/objects/d3/__init__.py +0 -0
  65. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/objects/d3/base.py +0 -0
  66. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/objects/d3/function.py +0 -0
  67. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/objects/d3/mesh.py +0 -0
  68. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/objects/d3/point.py +0 -0
  69. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/objects/d3/potato.py +0 -0
  70. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/objects/function.py +0 -0
  71. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/objects/legend.py +0 -0
  72. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/objects/mapdata.py +0 -0
  73. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/objects/point.py +0 -0
  74. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/objects/text.py +0 -0
  75. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/plot/__init__.py +0 -0
  76. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/plot/_lazy.py +0 -0
  77. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/plot/box.py +0 -0
  78. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/plot/constants.py +0 -0
  79. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/plot/d3/__init__.py +0 -0
  80. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/plot/d3/axes.py +0 -0
  81. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/plot/d3/geometry.py +0 -0
  82. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/plot/d3/plot3d.py +0 -0
  83. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/plot/d3/variants.py +0 -0
  84. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/plot/double.py +0 -0
  85. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/plot/empty.py +0 -0
  86. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/plot/grid.py +0 -0
  87. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/plot/log.py +0 -0
  88. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/plot/polar.py +0 -0
  89. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/plot/standard.py +0 -0
  90. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/plot/themes.py +0 -0
  91. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/plot/zoom.py +0 -0
  92. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/plot/zoom_connector.py +0 -0
  93. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/project/__init__.py +0 -0
  94. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/project/codec.py +0 -0
  95. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/project/context.py +0 -0
  96. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/project/document.py +0 -0
  97. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/project/registry.py +0 -0
  98. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/project/sample.py +0 -0
  99. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/project/sampled_curve.py +0 -0
  100. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/project/serializers.py +0 -0
  101. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/project/window.py +0 -0
  102. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/resources/__init__.py +0 -0
  103. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/resources/computer-modern-family/__init__.py +0 -0
  104. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.bright-oblique.ttf +0 -0
  105. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.bright-roman.ttf +0 -0
  106. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.bright-semibold.ttf +0 -0
  107. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.bright-semiboldoblique.ttf +0 -0
  108. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.classical-serif-italic.ttf +0 -0
  109. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.concrete-bold.ttf +0 -0
  110. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.concrete-bolditalic.ttf +0 -0
  111. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.concrete-italic.ttf +0 -0
  112. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.concrete-roman.ttf +0 -0
  113. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.sans-serif-bold.ttf +0 -0
  114. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.sans-serif-boldoblique.ttf +0 -0
  115. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.sans-serif-demi-condensed-demicondensed.ttf +0 -0
  116. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.sans-serif-medium.ttf +0 -0
  117. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.sans-serif-oblique.ttf +0 -0
  118. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.serif-bold.ttf +0 -0
  119. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.serif-bolditalic.ttf +0 -0
  120. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.serif-extra-boldslanted.ttf +0 -0
  121. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.serif-extra-romanslanted.ttf +0 -0
  122. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.serif-italic.ttf +0 -0
  123. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.serif-roman.ttf +0 -0
  124. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.serif-upright-italic-uprightitalic.ttf +0 -0
  125. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.typewriter-text-bold.ttf +0 -0
  126. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.typewriter-text-bolditalic.ttf +0 -0
  127. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.typewriter-text-italic.ttf +0 -0
  128. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.typewriter-text-light.ttf +0 -0
  129. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.typewriter-text-lightoblique.ttf +0 -0
  130. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.typewriter-text-regular.ttf +0 -0
  131. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.typewriter-text-variable-width-italic.ttf +0 -0
  132. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/resources/computer-modern-family/cmu.typewriter-text-variable-width-medium.ttf +0 -0
  133. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/resources/computer-modern-family/readme.txt +0 -0
  134. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/resources/logo-small.png +0 -0
  135. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/resources/symbolcross.png +0 -0
  136. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/resources/symboldonut.png +0 -0
  137. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/resources/symbollollipop.png +0 -0
  138. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe/resources/symboltriangle.png +0 -0
  139. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe.egg-info/SOURCES.txt +0 -0
  140. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe.egg-info/dependency_links.txt +0 -0
  141. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe.egg-info/requires.txt +0 -0
  142. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/src/kaxe.egg-info/top_level.txt +0 -0
  143. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/tests/test.py +0 -0
  144. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/tests/test2.py +0 -0
  145. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/tests/test3.py +0 -0
  146. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/tests/test_4.py +0 -0
  147. {kaxe-1.6.0.dev0 → kaxe-1.6.1.dev0}/tests/test_5.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kaxe
3
- Version: 1.6.0.dev0
3
+ Version: 1.6.1.dev0
4
4
  Summary: A small graphing tool for functions, points, equations and more
5
5
  Author-email: Valter Yde Daugberg <valteryde@hotmail.com>
6
6
  Project-URL: Homepage, https://github.com/valteryde/kaxe
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "kaxe"
3
- version = "1.6.0.dev0"
3
+ version = "1.6.1.dev0"
4
4
  authors = [
5
5
  { name="Valter Yde Daugberg", email="valteryde@hotmail.com" },
6
6
  ]
@@ -47,44 +47,14 @@ def _eval_diff(parent, left, right, px, py):
47
47
  return None
48
48
 
49
49
 
50
- def _point_segment_distance_sq(px, py, x1, y1, x2, y2):
51
- dx = x2 - x1
52
- dy = y2 - y1
53
- if dx == 0 and dy == 0:
54
- dpx = px - x1
55
- dpy = py - y1
56
- return dpx * dpx + dpy * dpy
57
- t = max(0.0, min(1.0, ((px - x1) * dx + (py - y1) * dy) / (dx * dx + dy * dy)))
58
- cx = x1 + t * dx
59
- cy = y1 + t * dy
60
- dpx = px - cx
61
- dpy = py - cy
62
- return dpx * dpx + dpy * dpy
63
-
64
-
65
- def _min_distance_sq_to_segments(px, py, segments):
66
- if not segments:
67
- return float('inf')
68
- return min(
69
- _point_segment_distance_sq(px, py, x1, y1, x2, y2)
70
- for x1, y1, x2, y2 in segments
71
- )
72
-
73
-
74
- def _boundary_segments(boundary, parent):
75
- segments = []
50
+ def _boundary_band_points(boundary, parent):
51
+ points = []
76
52
  for polyline in trace_contour_polylines(boundary.dotsPosAbstract, parent):
77
- if len(polyline) < 2:
78
- continue
79
- decimated = _decimate_polyline(polyline, min_step=12)
80
- for i in range(len(decimated) - 1):
81
- x1, y1 = decimated[i]
82
- x2, y2 = decimated[i + 1]
83
- segments.append((x1, y1, x2, y2))
84
- return segments
53
+ points.extend(_decimate_polyline(polyline, min_step=8))
54
+ return points
85
55
 
86
56
 
87
- def _decimate_polyline(polyline, min_step=12):
57
+ def _decimate_polyline(polyline, min_step=8):
88
58
  if len(polyline) < 2:
89
59
  return polyline
90
60
  result = [polyline[0]]
@@ -101,18 +71,27 @@ def _decimate_polyline(polyline, min_step=12):
101
71
  return result
102
72
 
103
73
 
104
- def _build_band_cells(segments, band, x0, y0, x1, y1):
74
+ def _build_band_cells(points, band, x0, y0, x1, y1):
105
75
  cell = max(1, int(band / 2))
106
- band_sq = band * band
107
- cols = int((x1 - x0) / cell) + 1
108
- rows = int((y1 - y0) / cell) + 1
76
+ reach = band + cell * 0.7071067811865476
77
+ reach_sq = reach * reach
109
78
  near = set()
110
- for ci in range(cols):
111
- for ri in range(rows):
79
+
80
+ for px, py in points:
81
+ ci0 = int((px - reach - x0) // cell)
82
+ ci1 = int((px + reach - x0) // cell)
83
+ ri0 = int((py - reach - y0) // cell)
84
+ ri1 = int((py + reach - y0) // cell)
85
+
86
+ for ci in range(ci0, ci1 + 1):
112
87
  cx = x0 + ci * cell + cell * 0.5
113
- cy = y0 + ri * cell + cell * 0.5
114
- if _min_distance_sq_to_segments(cx, cy, segments) <= band_sq:
115
- near.add((ci, ri))
88
+ for ri in range(ri0, ri1 + 1):
89
+ cy = y0 + ri * cell + cell * 0.5
90
+ dx = cx - px
91
+ dy = cy - py
92
+ if dx * dx + dy * dy <= reach_sq:
93
+ near.add((ci, ri))
94
+
116
95
  return cell, near, x0, y0
117
96
 
118
97
 
@@ -212,14 +191,13 @@ class Inequality:
212
191
  sample_step = 2
213
192
  eps = 1e-9
214
193
 
215
- boundary_segments = None
216
194
  band_cells = None
217
195
  if self.hatch_band is not None:
218
- boundary_segments = _boundary_segments(self.boundary, parent)
219
- if not boundary_segments:
196
+ boundary_points = _boundary_band_points(self.boundary, parent)
197
+ if not boundary_points:
220
198
  return
221
199
  band_cells = _build_band_cells(
222
- boundary_segments, self.hatch_band, x0, y0, x1, y1
200
+ boundary_points, self.hatch_band, x0, y0, x1, y1
223
201
  )
224
202
 
225
203
  scale = getattr(parent, 'getVisualScale', lambda: 1.0)()
@@ -271,6 +249,11 @@ class Inequality:
271
249
  last_point = None
272
250
  continue
273
251
 
252
+ in_band = True
253
+ if band_cells is not None:
254
+ cell, near, origin_x, origin_y = band_cells
255
+ in_band = _point_in_band_cells(px, py, cell, near, origin_x, origin_y)
256
+
274
257
  diff = _eval_diff(parent, self.left, self.right, px, py)
275
258
  if diff is None:
276
259
  if segment_start is not None and last_point is not None:
@@ -287,14 +270,12 @@ class Inequality:
287
270
  forbidden = self._is_forbidden(diff)
288
271
 
289
272
  if forbidden:
290
- if band_cells is not None:
291
- cell, near, origin_x, origin_y = band_cells
292
- if not _point_in_band_cells(px, py, cell, near, origin_x, origin_y):
293
- if segment_start is not None and last_point is not None:
294
- self.__add_hatch_segment__(segment_start, last_point, hatch_width)
295
- segment_start = None
296
- last_point = None
297
- continue
273
+ if not in_band:
274
+ if segment_start is not None and last_point is not None:
275
+ self.__add_hatch_segment__(segment_start, last_point, hatch_width)
276
+ segment_start = None
277
+ last_point = None
278
+ continue
298
279
  point = (px, py)
299
280
  if segment_start is None:
300
281
  segment_start = point
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kaxe
3
- Version: 1.6.0.dev0
3
+ Version: 1.6.1.dev0
4
4
  Summary: A small graphing tool for functions, points, equations and more
5
5
  Author-email: Valter Yde Daugberg <valteryde@hotmail.com>
6
6
  Project-URL: Homepage, https://github.com/valteryde/kaxe
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes