jsxgraph 1.6.0 → 1.6.1

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 (211) hide show
  1. package/CHANGELOG.md +25 -2
  2. package/distrib/docs/files.html +2 -2
  3. package/distrib/docs/index.html +2 -2
  4. package/distrib/docs/static/jsxgraph.css +24 -22
  5. package/distrib/docs/static/jsxgraphcore.js +2 -2
  6. package/distrib/docs/symbols/Angle.html +2 -2
  7. package/distrib/docs/symbols/Arc.html +2 -2
  8. package/distrib/docs/symbols/Arrow.html +2 -2
  9. package/distrib/docs/symbols/Arrowparallel.html +2 -2
  10. package/distrib/docs/symbols/Axis.html +2 -2
  11. package/distrib/docs/symbols/Bisector.html +2 -2
  12. package/distrib/docs/symbols/Bisectorlines.html +2 -2
  13. package/distrib/docs/symbols/Boxplot.html +2 -2
  14. package/distrib/docs/symbols/Button.html +4 -4
  15. package/distrib/docs/symbols/Cardinalspline.html +2 -2
  16. package/distrib/docs/symbols/Chart.html +2 -2
  17. package/distrib/docs/symbols/Checkbox.html +17 -17
  18. package/distrib/docs/symbols/Circle.html +2 -2
  19. package/distrib/docs/symbols/Circumcenter.html +4 -4
  20. package/distrib/docs/symbols/Circumcircle.html +2 -2
  21. package/distrib/docs/symbols/CircumcircleArc.html +2 -2
  22. package/distrib/docs/symbols/CircumcircleSector.html +2 -2
  23. package/distrib/docs/symbols/Comb.html +5 -5
  24. package/distrib/docs/symbols/Conic.html +2 -2
  25. package/distrib/docs/symbols/Constants.html +2 -2
  26. package/distrib/docs/symbols/Curve.html +2 -2
  27. package/distrib/docs/symbols/Curve3D.html +2 -2
  28. package/distrib/docs/symbols/CurveDifference.html +2 -2
  29. package/distrib/docs/symbols/CurveIntersection.html +2 -2
  30. package/distrib/docs/symbols/CurveUnion.html +2 -2
  31. package/distrib/docs/symbols/Derivative.html +2 -2
  32. package/distrib/docs/symbols/Ellipse.html +2 -2
  33. package/distrib/docs/symbols/ForeignObject.html +4 -4
  34. package/distrib/docs/symbols/Functiongraph.html +2 -2
  35. package/distrib/docs/symbols/Functiongraph3D.html +2 -2
  36. package/distrib/docs/symbols/Glider.html +4 -4
  37. package/distrib/docs/symbols/Grid.html +2 -2
  38. package/distrib/docs/symbols/Group.html +2 -2
  39. package/distrib/docs/symbols/Hatch.html +2 -2
  40. package/distrib/docs/symbols/Hyperbola.html +2 -2
  41. package/distrib/docs/symbols/Image.html +4 -4
  42. package/distrib/docs/symbols/Incenter.html +4 -4
  43. package/distrib/docs/symbols/Incircle.html +2 -2
  44. package/distrib/docs/symbols/Inequality.html +2 -2
  45. package/distrib/docs/symbols/Input.html +4 -4
  46. package/distrib/docs/symbols/Integral.html +2 -2
  47. package/distrib/docs/symbols/Intersection.html +4 -4
  48. package/distrib/docs/symbols/JXG.AbstractRenderer.html +2 -2
  49. package/distrib/docs/symbols/JXG.Board.html +144 -11
  50. package/distrib/docs/symbols/JXG.Board.infobox.html +2 -2
  51. package/distrib/docs/symbols/JXG.C.html +2 -2
  52. package/distrib/docs/symbols/JXG.CA.html +2 -2
  53. package/distrib/docs/symbols/JXG.CanvasRenderer.html +2 -2
  54. package/distrib/docs/symbols/JXG.Chart.html +2 -2
  55. package/distrib/docs/symbols/JXG.Circle.html +2 -2
  56. package/distrib/docs/symbols/JXG.Complex.html +2 -2
  57. package/distrib/docs/symbols/JXG.Composition.html +2 -2
  58. package/distrib/docs/symbols/JXG.Coords.html +2 -2
  59. package/distrib/docs/symbols/JXG.CoordsElement.html +54 -2
  60. package/distrib/docs/symbols/JXG.Curve.html +2 -2
  61. package/distrib/docs/symbols/JXG.Curve3D.html +2 -2
  62. package/distrib/docs/symbols/JXG.Dump.html +2 -2
  63. package/distrib/docs/symbols/JXG.EventEmitter.html +2 -2
  64. package/distrib/docs/symbols/JXG.ForeignObject.html +3 -3
  65. package/distrib/docs/symbols/JXG.GeometryElement.html +2 -2
  66. package/distrib/docs/symbols/JXG.GeometryElement3D.html +2 -2
  67. package/distrib/docs/symbols/JXG.GeonextParser.html +2 -2
  68. package/distrib/docs/symbols/JXG.Group.html +2 -2
  69. package/distrib/docs/symbols/JXG.Image.html +3 -3
  70. package/distrib/docs/symbols/JXG.JSXGraph.html +2 -2
  71. package/distrib/docs/symbols/JXG.JessieCode.html +2 -2
  72. package/distrib/docs/symbols/JXG.Legend.html +2 -2
  73. package/distrib/docs/symbols/JXG.Line.html +2 -2
  74. package/distrib/docs/symbols/JXG.Line3D.html +2 -2
  75. package/distrib/docs/symbols/JXG.Math.Clip.html +2 -2
  76. package/distrib/docs/symbols/JXG.Math.Extrapolate.html +2 -2
  77. package/distrib/docs/symbols/JXG.Math.Geometry.html +2 -2
  78. package/distrib/docs/symbols/JXG.Math.IntervalArithmetic.html +2 -2
  79. package/distrib/docs/symbols/JXG.Math.Metapost.html +2 -2
  80. package/distrib/docs/symbols/JXG.Math.Nlp.html +2 -2
  81. package/distrib/docs/symbols/JXG.Math.Numerics.html +23 -15
  82. package/distrib/docs/symbols/JXG.Math.Plot.html +2 -2
  83. package/distrib/docs/symbols/JXG.Math.Poly.Monomial.html +2 -2
  84. package/distrib/docs/symbols/JXG.Math.Poly.Polynomial.html +2 -2
  85. package/distrib/docs/symbols/JXG.Math.Poly.Ring.html +2 -2
  86. package/distrib/docs/symbols/JXG.Math.Poly.html +2 -2
  87. package/distrib/docs/symbols/JXG.Math.ProbFuncs.html +2 -2
  88. package/distrib/docs/symbols/JXG.Math.Quadtree.html +122 -7
  89. package/distrib/docs/symbols/JXG.Math.Statistics.html +2 -2
  90. package/distrib/docs/symbols/JXG.Math.Symbolic.html +2 -2
  91. package/distrib/docs/symbols/JXG.Math.html +45 -2
  92. package/distrib/docs/symbols/JXG.NoRenderer.html +2 -2
  93. package/distrib/docs/symbols/JXG.Options.html +2 -2
  94. package/distrib/docs/symbols/JXG.Plane3D.html +2 -2
  95. package/distrib/docs/symbols/JXG.Point.html +3 -3
  96. package/distrib/docs/symbols/JXG.Point3D.html +2 -2
  97. package/distrib/docs/symbols/JXG.Polygon.html +2 -2
  98. package/distrib/docs/symbols/JXG.SVGRenderer.html +2 -2
  99. package/distrib/docs/symbols/JXG.Server.html +2 -2
  100. package/distrib/docs/symbols/JXG.Server.modules.html +2 -2
  101. package/distrib/docs/symbols/JXG.Surface3D.html +2 -2
  102. package/distrib/docs/symbols/JXG.Text.html +8 -8
  103. package/distrib/docs/symbols/JXG.Ticks.html +2 -2
  104. package/distrib/docs/symbols/JXG.Transformation.html +2 -2
  105. package/distrib/docs/symbols/JXG.Turtle.html +2 -2
  106. package/distrib/docs/symbols/JXG.Util.Base64.html +2 -2
  107. package/distrib/docs/symbols/JXG.Util.UTF8.html +2 -2
  108. package/distrib/docs/symbols/JXG.Util.Unzip.html +2 -2
  109. package/distrib/docs/symbols/JXG.Util.html +2 -2
  110. package/distrib/docs/symbols/JXG.VMLRenderer.html +2 -2
  111. package/distrib/docs/symbols/JXG.View3D.html +2 -2
  112. package/distrib/docs/symbols/JXG.XML.html +2 -2
  113. package/distrib/docs/symbols/Label.html +114 -4
  114. package/distrib/docs/symbols/Legend.html +2 -2
  115. package/distrib/docs/symbols/Line.html +2 -2
  116. package/distrib/docs/symbols/Line3D.html +2 -2
  117. package/distrib/docs/symbols/Locus.html +2 -2
  118. package/distrib/docs/symbols/MajorArc.html +2 -2
  119. package/distrib/docs/symbols/MajorSector.html +2 -2
  120. package/distrib/docs/symbols/Metapostspline.html +2 -2
  121. package/distrib/docs/symbols/Midpoint.html +4 -4
  122. package/distrib/docs/symbols/MinorArc.html +2 -2
  123. package/distrib/docs/symbols/MinorSector.html +2 -2
  124. package/distrib/docs/symbols/Mirrorelement.html +2 -2
  125. package/distrib/docs/symbols/Mirrorpoint.html +4 -4
  126. package/distrib/docs/symbols/NonReflexAngle.html +2 -2
  127. package/distrib/docs/symbols/Normal.html +2 -2
  128. package/distrib/docs/symbols/Orthogonalprojection.html +4 -4
  129. package/distrib/docs/symbols/OtherIntersection.html +4 -4
  130. package/distrib/docs/symbols/Parabola.html +2 -2
  131. package/distrib/docs/symbols/Parallel.html +2 -2
  132. package/distrib/docs/symbols/Parallelpoint.html +4 -4
  133. package/distrib/docs/symbols/ParametricSurface3D.html +2 -2
  134. package/distrib/docs/symbols/Perpendicular.html +2 -2
  135. package/distrib/docs/symbols/PerpendicularPoint.html +4 -4
  136. package/distrib/docs/symbols/PerpendicularSegment.html +2 -2
  137. package/distrib/docs/symbols/Point.html +4 -4
  138. package/distrib/docs/symbols/Point3D.html +2 -2
  139. package/distrib/docs/symbols/PolarLine.html +2 -2
  140. package/distrib/docs/symbols/PolePoint.html +4 -4
  141. package/distrib/docs/symbols/Polygon.html +2 -2
  142. package/distrib/docs/symbols/PolygonalChain.html +2 -2
  143. package/distrib/docs/symbols/RadicalAxis.html +2 -2
  144. package/distrib/docs/symbols/Reflection.html +2 -2
  145. package/distrib/docs/symbols/ReflexAngle.html +2 -2
  146. package/distrib/docs/symbols/RegularPolygon.html +2 -2
  147. package/distrib/docs/symbols/Riemannsum.html +7 -3
  148. package/distrib/docs/symbols/Sector.html +2 -2
  149. package/distrib/docs/symbols/Segment.html +2 -2
  150. package/distrib/docs/symbols/Semicircle.html +2 -2
  151. package/distrib/docs/symbols/Slider.html +145 -4
  152. package/distrib/docs/symbols/Slopefield.html +2 -2
  153. package/distrib/docs/symbols/Slopetriangle.html +2 -2
  154. package/distrib/docs/symbols/Smartlabel.html +4 -4
  155. package/distrib/docs/symbols/Spline.html +2 -2
  156. package/distrib/docs/symbols/Stepfunction.html +2 -2
  157. package/distrib/docs/symbols/Tangent.html +2 -2
  158. package/distrib/docs/symbols/Tapemeasure.html +2 -2
  159. package/distrib/docs/symbols/Text.html +4 -4
  160. package/distrib/docs/symbols/Ticks.html +2 -2
  161. package/distrib/docs/symbols/Tracecurve.html +2 -2
  162. package/distrib/docs/symbols/Transformation.html +2 -2
  163. package/distrib/docs/symbols/Turtle.html +2 -2
  164. package/distrib/docs/symbols/Vectorfield.html +2 -2
  165. package/distrib/docs/symbols/View3D.html +2 -2
  166. package/distrib/docs/symbols/_global_.html +2 -2
  167. package/distrib/docs/symbols/src/src_3d_view3d.js.html +29 -30
  168. package/distrib/docs/symbols/src/src_base_board.js.html +5020 -4930
  169. package/distrib/docs/symbols/src/src_base_constants.js.html +1 -1
  170. package/distrib/docs/symbols/src/src_base_coordselement.js.html +1829 -1789
  171. package/distrib/docs/symbols/src/src_base_curve.js.html +783 -778
  172. package/distrib/docs/symbols/src/src_base_text.js.html +345 -358
  173. package/distrib/docs/symbols/src/src_element_checkbox.js.html +30 -30
  174. package/distrib/docs/symbols/src/src_element_slider.js.html +391 -377
  175. package/distrib/docs/symbols/src/src_math_numerics.js.html +1226 -1190
  176. package/distrib/docs/symbols/src/src_math_qdt.js.html +318 -194
  177. package/distrib/docs/symbols/src/src_options.js.html +7137 -7034
  178. package/distrib/docs/symbols/src/src_renderer_abstract.js.html +1168 -1167
  179. package/distrib/docs/symbols/src/src_renderer_canvas.js.html +1 -1
  180. package/distrib/docs/symbols/src/src_renderer_svg.js.html +489 -494
  181. package/distrib/docs/symbols/src/src_utils_env.js.html +127 -90
  182. package/distrib/docs.zip +0 -0
  183. package/distrib/geogebra.min.js +1 -1
  184. package/distrib/geonext.min.js +1 -1
  185. package/distrib/intergeo.min.js +1 -1
  186. package/distrib/jsxgraph.css +24 -22
  187. package/distrib/jsxgraph.zip +0 -0
  188. package/distrib/jsxgraphcore.js +2 -2
  189. package/distrib/jsxgraphcore.mjs +2 -2
  190. package/distrib/jsxgraphcore.mjs.map +1 -1
  191. package/distrib/jsxgraphsrc.js +707 -276
  192. package/distrib/jsxgraphsrc.mjs +707 -276
  193. package/distrib/jsxgraphsrc.mjs.map +1 -1
  194. package/distrib/sketch.min.js +1 -1
  195. package/package.json +1 -1
  196. package/src/3d/view3d.js +0 -1
  197. package/src/base/board.js +140 -50
  198. package/src/base/constants.js +1 -1
  199. package/src/base/coordselement.js +54 -14
  200. package/src/base/curve.js +6 -1
  201. package/src/base/text.js +13 -26
  202. package/src/element/checkbox.js +17 -17
  203. package/src/element/slider.js +16 -2
  204. package/src/math/heap.js +34 -4
  205. package/src/math/numerics.js +112 -76
  206. package/src/math/qdt.js +141 -17
  207. package/src/options.js +115 -12
  208. package/src/renderer/abstract.js +15 -14
  209. package/src/renderer/canvas.js +1 -1
  210. package/src/renderer/svg.js +0 -5
  211. package/src/utils/env.js +75 -38
@@ -40,201 +40,325 @@
40
40
  <span class='line'> 33</span> </span><span class="COMM">/*jslint nomen: true, plusplus: true*/</span><span class="WHIT">
41
41
  <span class='line'> 34</span>
42
42
  <span class='line'> 35</span> </span><span class="NAME">import</span><span class="WHIT"> </span><span class="NAME">Mat</span><span class="WHIT"> </span><span class="NAME">from</span><span class="WHIT"> </span><span class="STRN">"./math"</span><span class="PUNC">;</span><span class="WHIT">
43
- <span class='line'> 36</span> </span><span class="NAME">import</span><span class="WHIT"> </span><span class="NAME">Type</span><span class="WHIT"> </span><span class="NAME">from</span><span class="WHIT"> </span><span class="STRN">"../utils/type"</span><span class="PUNC">;</span><span class="WHIT">
44
- <span class='line'> 37</span>
45
- <span class='line'> 38</span> </span><span class="COMM">/**
46
- <span class='line'> 39</span> * Instantiate a new quad tree.
47
- <span class='line'> 40</span> *
48
- <span class='line'> 41</span> * @name JXG.Math.Quadtree
49
- <span class='line'> 42</span> * @exports Mat.Quadtree as JXG.Math.Quadtree
50
- <span class='line'> 43</span> * @param {Array} bbox Bounding box of the new quad (sub)tree.
51
- <span class='line'> 44</span> * @constructor
52
- <span class='line'> 45</span> */</span><span class="WHIT">
53
- <span class='line'> 46</span> </span><span class="NAME">Mat.Quadtree</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">bbox</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
54
- <span class='line'> 47</span> </span><span class="WHIT"> </span><span class="COMM">/**
55
- <span class='line'> 48</span> * The maximum number of points stored in a quad tree node
56
- <span class='line'> 49</span> * before it is subdivided.
57
- <span class='line'> 50</span> * @type Number
58
- <span class='line'> 51</span> * @default 10
59
- <span class='line'> 52</span> */</span><span class="WHIT">
60
- <span class='line'> 53</span> </span><span class="WHIT"> </span><span class="NAME">this.capacity</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">10</span><span class="PUNC">;</span><span class="WHIT">
43
+ <span class='line'> 36</span> </span><span class="NAME">import</span><span class="WHIT"> </span><span class="NAME">Geometry</span><span class="WHIT"> </span><span class="NAME">from</span><span class="WHIT"> </span><span class="STRN">"./geometry"</span><span class="PUNC">;</span><span class="WHIT">
44
+ <span class='line'> 37</span> </span><span class="NAME">import</span><span class="WHIT"> </span><span class="NAME">Type</span><span class="WHIT"> </span><span class="NAME">from</span><span class="WHIT"> </span><span class="STRN">"../utils/type"</span><span class="PUNC">;</span><span class="WHIT">
45
+ <span class='line'> 38</span>
46
+ <span class='line'> 39</span> </span><span class="COMM">/**
47
+ <span class='line'> 40</span> * Instantiate a new quad tree.
48
+ <span class='line'> 41</span> *
49
+ <span class='line'> 42</span> * @name JXG.Math.Quadtree
50
+ <span class='line'> 43</span> * @exports Mat.Quadtree as JXG.Math.Quadtree
51
+ <span class='line'> 44</span> * @param {Array} bbox Bounding box of the new quad (sub)tree.
52
+ <span class='line'> 45</span> * @param {Object} config Configuration object. Default value: to {capacity: 10}
53
+ <span class='line'> 46</span> *
54
+ <span class='line'> 47</span> * @constructor
55
+ <span class='line'> 48</span> */</span><span class="WHIT">
56
+ <span class='line'> 49</span> </span><span class="NAME">Mat.Quadtree</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">bbox</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">config</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">parent</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
57
+ <span class='line'> 50</span> </span><span class="WHIT"> </span><span class="NAME">config</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">config</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
58
+ <span class='line'> 51</span> </span><span class="WHIT"> </span><span class="NAME">capacity</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">10</span><span class="PUNC">,</span><span class="WHIT">
59
+ <span class='line'> 52</span> </span><span class="WHIT"> </span><span class="NAME">pointType</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'coords'</span><span class="WHIT">
60
+ <span class='line'> 53</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
61
61
  <span class='line'> 54</span>
62
62
  <span class='line'> 55</span> </span><span class="WHIT"> </span><span class="COMM">/**
63
- <span class='line'> 56</span> * Point storage.
64
- <span class='line'> 57</span> * @name JXG.Math.Quadtree#points
65
- <span class='line'> 58</span> * @type Array
66
- <span class='line'> 59</span> */</span><span class="WHIT">
67
- <span class='line'> 60</span> </span><span class="WHIT"> </span><span class="NAME">this.points</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
68
- <span class='line'> 61</span> </span><span class="WHIT"> </span><span class="NAME">this.xlb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">bbox</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
69
- <span class='line'> 62</span> </span><span class="WHIT"> </span><span class="NAME">this.xub</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">bbox</span><span class="PUNC">[</span><span class="NUMB">2</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
70
- <span class='line'> 63</span> </span><span class="WHIT"> </span><span class="NAME">this.ylb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">bbox</span><span class="PUNC">[</span><span class="NUMB">3</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
71
- <span class='line'> 64</span> </span><span class="WHIT"> </span><span class="NAME">this.yub</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">bbox</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
72
- <span class='line'> 65</span>
73
- <span class='line'> 66</span> </span><span class="WHIT"> </span><span class="COMM">/**
74
- <span class='line'> 67</span> * In a subdivided quad tree this represents the top left subtree.
75
- <span class='line'> 68</span> * @name JXG.Math.Quadtree#northWest
76
- <span class='line'> 69</span> * @type JXG.Math.Quadtree
77
- <span class='line'> 70</span> */</span><span class="WHIT">
78
- <span class='line'> 71</span> </span><span class="WHIT"> </span><span class="NAME">this.northWest</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
79
- <span class='line'> 72</span>
80
- <span class='line'> 73</span> </span><span class="WHIT"> </span><span class="COMM">/**
81
- <span class='line'> 74</span> * In a subdivided quad tree this represents the top right subtree.
82
- <span class='line'> 75</span> * @name JXG.Math.Quadtree#northEast
83
- <span class='line'> 76</span> * @type JXG.Math.Quadtree
84
- <span class='line'> 77</span> */</span><span class="WHIT">
85
- <span class='line'> 78</span> </span><span class="WHIT"> </span><span class="NAME">this.northEast</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
86
- <span class='line'> 79</span>
87
- <span class='line'> 80</span> </span><span class="WHIT"> </span><span class="COMM">/**
88
- <span class='line'> 81</span> * In a subdivided quad tree this represents the bottom right subtree.
89
- <span class='line'> 82</span> * @name JXG.Math.Quadtree#southEast
90
- <span class='line'> 83</span> * @type JXG.Math.Quadtree
91
- <span class='line'> 84</span> */</span><span class="WHIT">
92
- <span class='line'> 85</span> </span><span class="WHIT"> </span><span class="NAME">this.southEast</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
93
- <span class='line'> 86</span>
94
- <span class='line'> 87</span> </span><span class="WHIT"> </span><span class="COMM">/**
95
- <span class='line'> 88</span> * In a subdivided quad tree this represents the bottom left subtree.
96
- <span class='line'> 89</span> * @name JXG.Math.Quadtree#southWest
97
- <span class='line'> 90</span> * @type JXG.Math.Quadtree
98
- <span class='line'> 91</span> */</span><span class="WHIT">
99
- <span class='line'> 92</span> </span><span class="WHIT"> </span><span class="NAME">this.southWest</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
100
- <span class='line'> 93</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
101
- <span class='line'> 94</span>
102
- <span class='line'> 95</span> </span><span class="NAME">Type.extend</span><span class="PUNC">(</span><span class="WHIT">
103
- <span class='line'> 96</span> </span><span class="WHIT"> </span><span class="NAME">Mat.Quadtree.prototype</span><span class="PUNC">,</span><span class="WHIT">
104
- <span class='line'> 97</span> </span><span class="WHIT"> </span><span class="COMM">/** @lends JXG.Math.Quadtree.prototype */</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
105
- <span class='line'> 98</span> </span><span class="WHIT"> </span><span class="COMM">/**
106
- <span class='line'> 99</span> * Checks if the given coordinates are inside the quad tree.
107
- <span class='line'>100</span> * @param {Number} x
108
- <span class='line'>101</span> * @param {Number} y
109
- <span class='line'>102</span> * @returns {Boolean}
110
- <span class='line'>103</span> */</span><span class="WHIT">
111
- <span class='line'>104</span> </span><span class="WHIT"> </span><span class="NAME">contains</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">y</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
112
- <span class='line'>105</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.xlb</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">x</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">x</span><span class="WHIT"> </span><span class="PUNC">&lt;=</span><span class="WHIT"> </span><span class="NAME">this.xub</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">this.ylb</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">y</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">y</span><span class="WHIT"> </span><span class="PUNC">&lt;=</span><span class="WHIT"> </span><span class="NAME">this.yub</span><span class="PUNC">;</span><span class="WHIT">
113
- <span class='line'>106</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
114
- <span class='line'>107</span>
115
- <span class='line'>108</span> </span><span class="WHIT"> </span><span class="COMM">/**
116
- <span class='line'>109</span> * Insert a new point into this quad tree.
117
- <span class='line'>110</span> * @param {JXG.Coords} p
118
- <span class='line'>111</span> * @returns {Boolean}
119
- <span class='line'>112</span> */</span><span class="WHIT">
120
- <span class='line'>113</span> </span><span class="WHIT"> </span><span class="NAME">insert</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">p</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
121
- <span class='line'>114</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.contains</span><span class="PUNC">(</span><span class="NAME">p.usrCoords</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">p.usrCoords</span><span class="PUNC">[</span><span class="NUMB">2</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
122
- <span class='line'>115</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
123
- <span class='line'>116</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
124
- <span class='line'>117</span>
125
- <span class='line'>118</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.points.length</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">this.capacity</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
126
- <span class='line'>119</span> </span><span class="WHIT"> </span><span class="NAME">this.points.push</span><span class="PUNC">(</span><span class="NAME">p</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
127
- <span class='line'>120</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
128
- <span class='line'>121</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
129
- <span class='line'>122</span>
130
- <span class='line'>123</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.northWest</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
131
- <span class='line'>124</span> </span><span class="WHIT"> </span><span class="NAME">this.subdivide</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
132
- <span class='line'>125</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
133
- <span class='line'>126</span>
134
- <span class='line'>127</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.northWest.insert</span><span class="PUNC">(</span><span class="NAME">p</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
135
- <span class='line'>128</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
136
- <span class='line'>129</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
137
- <span class='line'>130</span>
138
- <span class='line'>131</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.northEast.insert</span><span class="PUNC">(</span><span class="NAME">p</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
139
- <span class='line'>132</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
140
- <span class='line'>133</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
141
- <span class='line'>134</span>
142
- <span class='line'>135</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.southEast.insert</span><span class="PUNC">(</span><span class="NAME">p</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
143
- <span class='line'>136</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
144
- <span class='line'>137</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
145
- <span class='line'>138</span>
146
- <span class='line'>139</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="PUNC">!</span><span class="NAME">this.southWest.insert</span><span class="PUNC">(</span><span class="NAME">p</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
147
- <span class='line'>140</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
148
- <span class='line'>141</span>
149
- <span class='line'>142</span> </span><span class="WHIT"> </span><span class="COMM">/**
150
- <span class='line'>143</span> * Subdivide the quad tree.
151
- <span class='line'>144</span> */</span><span class="WHIT">
152
- <span class='line'>145</span> </span><span class="WHIT"> </span><span class="NAME">subdivide</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
153
- <span class='line'>146</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">,</span><span class="WHIT">
154
- <span class='line'>147</span> </span><span class="WHIT"> </span><span class="NAME">l</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.points.length</span><span class="PUNC">,</span><span class="WHIT">
155
- <span class='line'>148</span> </span><span class="WHIT"> </span><span class="NAME">mx</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.xlb</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.xub</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">this.xlb</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT">
156
- <span class='line'>149</span> </span><span class="WHIT"> </span><span class="NAME">my</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.ylb</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.yub</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">this.ylb</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">;</span><span class="WHIT">
157
- <span class='line'>150</span>
158
- <span class='line'>151</span> </span><span class="WHIT"> </span><span class="NAME">this.northWest</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Mat.Quadtree</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="NAME">this.xlb</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.yub</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">mx</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">my</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
159
- <span class='line'>152</span> </span><span class="WHIT"> </span><span class="NAME">this.northEast</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Mat.Quadtree</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="NAME">mx</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.yub</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.xub</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">my</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
160
- <span class='line'>153</span> </span><span class="WHIT"> </span><span class="NAME">this.southEast</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Mat.Quadtree</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="NAME">this.xlb</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">my</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">mx</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.ylb</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
161
- <span class='line'>154</span> </span><span class="WHIT"> </span><span class="NAME">this.southWest</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Mat.Quadtree</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="NAME">mx</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">my</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.xub</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.ylb</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
162
- <span class='line'>155</span>
163
- <span class='line'>156</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">l</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
164
- <span class='line'>157</span> </span><span class="WHIT"> </span><span class="NAME">this.northWest.insert</span><span class="PUNC">(</span><span class="NAME">this.points</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
165
- <span class='line'>158</span> </span><span class="WHIT"> </span><span class="NAME">this.northEast.insert</span><span class="PUNC">(</span><span class="NAME">this.points</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
166
- <span class='line'>159</span> </span><span class="WHIT"> </span><span class="NAME">this.southEast.insert</span><span class="PUNC">(</span><span class="NAME">this.points</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
167
- <span class='line'>160</span> </span><span class="WHIT"> </span><span class="NAME">this.southWest.insert</span><span class="PUNC">(</span><span class="NAME">this.points</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
168
- <span class='line'>161</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
169
- <span class='line'>162</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
63
+ <span class='line'> 56</span> * The maximum number of points stored in a quad tree node
64
+ <span class='line'> 57</span> * before it is subdivided.
65
+ <span class='line'> 58</span> * @type Number
66
+ <span class='line'> 59</span> * @default 10
67
+ <span class='line'> 60</span> */</span><span class="WHIT">
68
+ <span class='line'> 61</span> </span><span class="WHIT"> </span><span class="NAME">this.capacity</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">config.capacity</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NUMB">10</span><span class="PUNC">;</span><span class="WHIT">
69
+ <span class='line'> 62</span>
70
+ <span class='line'> 63</span> </span><span class="WHIT"> </span><span class="COMM">/**
71
+ <span class='line'> 64</span> * Type of a point object. Possible values are:
72
+ <span class='line'> 65</span> * 'coords', 'object'.
73
+ <span class='line'> 66</span> * @type String
74
+ <span class='line'> 67</span> * @default 'coords'
75
+ <span class='line'> 68</span> */</span><span class="WHIT">
76
+ <span class='line'> 69</span> </span><span class="WHIT"> </span><span class="NAME">this.pointType</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">config.pointType</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="STRN">'coords'</span><span class="PUNC">;</span><span class="WHIT">
77
+ <span class='line'> 70</span>
78
+ <span class='line'> 71</span> </span><span class="WHIT"> </span><span class="COMM">/**
79
+ <span class='line'> 72</span> * Point storage.
80
+ <span class='line'> 73</span> * @name JXG.Math.Quadtree#points
81
+ <span class='line'> 74</span> * @type Array
82
+ <span class='line'> 75</span> */</span><span class="WHIT">
83
+ <span class='line'> 76</span> </span><span class="WHIT"> </span><span class="NAME">this.points</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
84
+ <span class='line'> 77</span> </span><span class="WHIT"> </span><span class="NAME">this.xlb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">bbox</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
85
+ <span class='line'> 78</span> </span><span class="WHIT"> </span><span class="NAME">this.xub</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">bbox</span><span class="PUNC">[</span><span class="NUMB">2</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
86
+ <span class='line'> 79</span> </span><span class="WHIT"> </span><span class="NAME">this.ylb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">bbox</span><span class="PUNC">[</span><span class="NUMB">3</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
87
+ <span class='line'> 80</span> </span><span class="WHIT"> </span><span class="NAME">this.yub</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">bbox</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
88
+ <span class='line'> 81</span>
89
+ <span class='line'> 82</span> </span><span class="WHIT"> </span><span class="COMM">/**
90
+ <span class='line'> 83</span> * Parent quad tree or null if there is not parent.
91
+ <span class='line'> 84</span> *
92
+ <span class='line'> 85</span> * @name JXG.Math.Quadtree#northWest
93
+ <span class='line'> 86</span> * @type JXG.Math.Quadtree
94
+ <span class='line'> 87</span> *
95
+ <span class='line'> 88</span> */</span><span class="WHIT">
96
+ <span class='line'> 89</span> </span><span class="WHIT"> </span><span class="NAME">this.parent</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">parent</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
97
+ <span class='line'> 90</span>
98
+ <span class='line'> 91</span> </span><span class="WHIT"> </span><span class="COMM">/**
99
+ <span class='line'> 92</span> * In a subdivided quad tree this represents the top left subtree.
100
+ <span class='line'> 93</span> * @name JXG.Math.Quadtree#northWest
101
+ <span class='line'> 94</span> * @type JXG.Math.Quadtree
102
+ <span class='line'> 95</span> */</span><span class="WHIT">
103
+ <span class='line'> 96</span> </span><span class="WHIT"> </span><span class="NAME">this.northWest</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
104
+ <span class='line'> 97</span>
105
+ <span class='line'> 98</span> </span><span class="WHIT"> </span><span class="COMM">/**
106
+ <span class='line'> 99</span> * In a subdivided quad tree this represents the top right subtree.
107
+ <span class='line'>100</span> * @name JXG.Math.Quadtree#northEast
108
+ <span class='line'>101</span> * @type JXG.Math.Quadtree
109
+ <span class='line'>102</span> */</span><span class="WHIT">
110
+ <span class='line'>103</span> </span><span class="WHIT"> </span><span class="NAME">this.northEast</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
111
+ <span class='line'>104</span>
112
+ <span class='line'>105</span> </span><span class="WHIT"> </span><span class="COMM">/**
113
+ <span class='line'>106</span> * In a subdivided quad tree this represents the bottom right subtree.
114
+ <span class='line'>107</span> * @name JXG.Math.Quadtree#southEast
115
+ <span class='line'>108</span> * @type JXG.Math.Quadtree
116
+ <span class='line'>109</span> */</span><span class="WHIT">
117
+ <span class='line'>110</span> </span><span class="WHIT"> </span><span class="NAME">this.southEast</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
118
+ <span class='line'>111</span>
119
+ <span class='line'>112</span> </span><span class="WHIT"> </span><span class="COMM">/**
120
+ <span class='line'>113</span> * In a subdivided quad tree this represents the bottom left subtree.
121
+ <span class='line'>114</span> * @name JXG.Math.Quadtree#southWest
122
+ <span class='line'>115</span> * @type JXG.Math.Quadtree
123
+ <span class='line'>116</span> */</span><span class="WHIT">
124
+ <span class='line'>117</span> </span><span class="WHIT"> </span><span class="NAME">this.southWest</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
125
+ <span class='line'>118</span>
126
+ <span class='line'>119</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
127
+ <span class='line'>120</span>
128
+ <span class='line'>121</span> </span><span class="NAME">Type.extend</span><span class="PUNC">(</span><span class="WHIT">
129
+ <span class='line'>122</span> </span><span class="WHIT"> </span><span class="NAME">Mat.Quadtree.prototype</span><span class="PUNC">,</span><span class="WHIT">
130
+ <span class='line'>123</span> </span><span class="WHIT"> </span><span class="COMM">/** @lends JXG.Math.Quadtree.prototype */</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
131
+ <span class='line'>124</span> </span><span class="WHIT"> </span><span class="COMM">/**
132
+ <span class='line'>125</span> * Checks if the given coordinates are inside the quad tree.
133
+ <span class='line'>126</span> * @param {Number} x
134
+ <span class='line'>127</span> * @param {Number} y
135
+ <span class='line'>128</span> * @returns {Boolean}
136
+ <span class='line'>129</span> */</span><span class="WHIT">
137
+ <span class='line'>130</span> </span><span class="WHIT"> </span><span class="NAME">contains</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">y</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
138
+ <span class='line'>131</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.xlb</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">x</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">x</span><span class="WHIT"> </span><span class="PUNC">&lt;=</span><span class="WHIT"> </span><span class="NAME">this.xub</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">this.ylb</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">y</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">y</span><span class="WHIT"> </span><span class="PUNC">&lt;=</span><span class="WHIT"> </span><span class="NAME">this.yub</span><span class="PUNC">;</span><span class="WHIT">
139
+ <span class='line'>132</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
140
+ <span class='line'>133</span>
141
+ <span class='line'>134</span> </span><span class="WHIT"> </span><span class="COMM">/**
142
+ <span class='line'>135</span> * Insert a new point into this quad tree. Do this only,
143
+ <span class='line'>136</span> * if the point is not yet in the quadtree (test exactly).
144
+ <span class='line'>137</span> *
145
+ <span class='line'>138</span> * @param {JXG.Coords} p
146
+ <span class='line'>139</span> * @returns {Boolean}
147
+ <span class='line'>140</span> */</span><span class="WHIT">
148
+ <span class='line'>141</span> </span><span class="WHIT"> </span><span class="NAME">insert</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">p</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
149
+ <span class='line'>142</span> </span><span class="WHIT"> </span><span class="KEYW">switch</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.pointType</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
150
+ <span class='line'>143</span> </span><span class="WHIT"> </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'coords'</span><span class="PUNC">:</span><span class="WHIT">
151
+ <span class='line'>144</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.contains</span><span class="PUNC">(</span><span class="NAME">p.usrCoords</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">p.usrCoords</span><span class="PUNC">[</span><span class="NUMB">2</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
152
+ <span class='line'>145</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
153
+ <span class='line'>146</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
154
+ <span class='line'>147</span> </span><span class="WHIT"> </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
155
+ <span class='line'>148</span> </span><span class="WHIT"> </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'object'</span><span class="PUNC">:</span><span class="WHIT">
156
+ <span class='line'>149</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.contains</span><span class="PUNC">(</span><span class="NAME">p.x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">p.y</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
157
+ <span class='line'>150</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
158
+ <span class='line'>151</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
159
+ <span class='line'>152</span> </span><span class="WHIT"> </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
160
+ <span class='line'>153</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
161
+ <span class='line'>154</span>
162
+ <span class='line'>155</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.points.length</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">this.capacity</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
163
+ <span class='line'>156</span> </span><span class="WHIT"> </span><span class="NAME">this.points.push</span><span class="PUNC">(</span><span class="NAME">p</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
164
+ <span class='line'>157</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
165
+ <span class='line'>158</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
166
+ <span class='line'>159</span>
167
+ <span class='line'>160</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.northWest</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
168
+ <span class='line'>161</span> </span><span class="WHIT"> </span><span class="NAME">this.subdivide</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
169
+ <span class='line'>162</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
170
170
  <span class='line'>163</span>
171
- <span class='line'>164</span> </span><span class="WHIT"> </span><span class="COMM">/**
172
- <span class='line'>165</span> * Internal _query method that lacks adjustment of the parameter.
173
- <span class='line'>166</span> * @name JXG.Math.Quadtree#_query
174
- <span class='line'>167</span> * @param {Number} x
175
- <span class='line'>168</span> * @param {Number} y
176
- <span class='line'>169</span> * @returns {Boolean|JXG.Quadtree} The quad tree if the point is found, false
177
- <span class='line'>170</span> * if none of the quad trees contains the point (i.e. the point is not inside
178
- <span class='line'>171</span> * the root tree's AABB).
179
- <span class='line'>172</span> * @private
180
- <span class='line'>173</span> */</span><span class="WHIT">
181
- <span class='line'>174</span> </span><span class="WHIT"> </span><span class="NAME">_query</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">y</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
182
- <span class='line'>175</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">;</span><span class="WHIT">
183
- <span class='line'>176</span>
184
- <span class='line'>177</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.contains</span><span class="PUNC">(</span><span class="NAME">x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">y</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
185
- <span class='line'>178</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.northWest</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
186
- <span class='line'>179</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">;</span><span class="WHIT">
187
- <span class='line'>180</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
188
- <span class='line'>181</span>
189
- <span class='line'>182</span> </span><span class="WHIT"> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.northWest._query</span><span class="PUNC">(</span><span class="NAME">x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">y</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
190
- <span class='line'>183</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">r</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
191
- <span class='line'>184</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">;</span><span class="WHIT">
192
- <span class='line'>185</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
193
- <span class='line'>186</span>
194
- <span class='line'>187</span> </span><span class="WHIT"> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.northEast._query</span><span class="PUNC">(</span><span class="NAME">x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">y</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
195
- <span class='line'>188</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">r</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
196
- <span class='line'>189</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">;</span><span class="WHIT">
197
- <span class='line'>190</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
198
- <span class='line'>191</span>
199
- <span class='line'>192</span> </span><span class="WHIT"> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.southEast._query</span><span class="PUNC">(</span><span class="NAME">x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">y</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
200
- <span class='line'>193</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">r</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
201
- <span class='line'>194</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">;</span><span class="WHIT">
202
- <span class='line'>195</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
171
+ <span class='line'>164</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.northWest.insert</span><span class="PUNC">(</span><span class="NAME">p</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
172
+ <span class='line'>165</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
173
+ <span class='line'>166</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
174
+ <span class='line'>167</span>
175
+ <span class='line'>168</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.northEast.insert</span><span class="PUNC">(</span><span class="NAME">p</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
176
+ <span class='line'>169</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
177
+ <span class='line'>170</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
178
+ <span class='line'>171</span>
179
+ <span class='line'>172</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.southEast.insert</span><span class="PUNC">(</span><span class="NAME">p</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
180
+ <span class='line'>173</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
181
+ <span class='line'>174</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
182
+ <span class='line'>175</span>
183
+ <span class='line'>176</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="PUNC">!</span><span class="NAME">this.southWest.insert</span><span class="PUNC">(</span><span class="NAME">p</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
184
+ <span class='line'>177</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
185
+ <span class='line'>178</span>
186
+ <span class='line'>179</span> </span><span class="WHIT"> </span><span class="COMM">/**
187
+ <span class='line'>180</span> * Subdivide the quad tree.
188
+ <span class='line'>181</span> */</span><span class="WHIT">
189
+ <span class='line'>182</span> </span><span class="WHIT"> </span><span class="NAME">subdivide</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
190
+ <span class='line'>183</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">,</span><span class="WHIT">
191
+ <span class='line'>184</span> </span><span class="WHIT"> </span><span class="NAME">le</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.points.length</span><span class="PUNC">,</span><span class="WHIT">
192
+ <span class='line'>185</span> </span><span class="WHIT"> </span><span class="NAME">mx</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.xlb</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.xub</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">this.xlb</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT">
193
+ <span class='line'>186</span> </span><span class="WHIT"> </span><span class="NAME">my</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.ylb</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.yub</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">this.ylb</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">;</span><span class="WHIT">
194
+ <span class='line'>187</span>
195
+ <span class='line'>188</span> </span><span class="WHIT"> </span><span class="NAME">this.northWest</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Mat.Quadtree</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="NAME">this.xlb</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.yub</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">mx</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">my</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.config</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
196
+ <span class='line'>189</span> </span><span class="WHIT"> </span><span class="NAME">this.northEast</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Mat.Quadtree</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="NAME">mx</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.yub</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.xub</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">my</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.config</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
197
+ <span class='line'>190</span> </span><span class="WHIT"> </span><span class="NAME">this.southEast</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Mat.Quadtree</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="NAME">this.xlb</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">my</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">mx</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.ylb</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.config</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
198
+ <span class='line'>191</span> </span><span class="WHIT"> </span><span class="NAME">this.southWest</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Mat.Quadtree</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="NAME">mx</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">my</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.xub</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.ylb</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.config</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
199
+ <span class='line'>192</span>
200
+ <span class='line'>193</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">le</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
201
+ <span class='line'>194</span> </span><span class="WHIT"> </span><span class="NAME">this.insert</span><span class="PUNC">(</span><span class="NAME">this.points</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
202
+ <span class='line'>195</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
203
203
  <span class='line'>196</span>
204
- <span class='line'>197</span> </span><span class="WHIT"> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.southWest._query</span><span class="PUNC">(</span><span class="NAME">x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">y</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
205
- <span class='line'>198</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">r</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
206
- <span class='line'>199</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">;</span><span class="WHIT">
207
- <span class='line'>200</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
208
- <span class='line'>201</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
209
- <span class='line'>202</span>
210
- <span class='line'>203</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
211
- <span class='line'>204</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
212
- <span class='line'>205</span>
213
- <span class='line'>206</span> </span><span class="WHIT"> </span><span class="COMM">/**
214
- <span class='line'>207</span> * Retrieve the smallest quad tree that contains the given point.
215
- <span class='line'>208</span> * @name JXG.Math.Quadtree#_query
216
- <span class='line'>209</span> * @param {JXG.Coords|Number} xp
217
- <span class='line'>210</span> * @param {Number} y
218
- <span class='line'>211</span> * @returns {Boolean|JXG.Quadtree} The quad tree if the point is found, false
219
- <span class='line'>212</span> * if none of the quad trees contains the point (i.e. the point is not inside
220
- <span class='line'>213</span> * the root tree's AABB).
221
- <span class='line'>214</span> * @private
222
- <span class='line'>215</span> */</span><span class="WHIT">
223
- <span class='line'>216</span> </span><span class="WHIT"> </span><span class="NAME">query</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">xp</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">y</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
224
- <span class='line'>217</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">_x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">_y</span><span class="PUNC">;</span><span class="WHIT">
225
- <span class='line'>218</span>
226
- <span class='line'>219</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">Type.exists</span><span class="PUNC">(</span><span class="NAME">y</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
227
- <span class='line'>220</span> </span><span class="WHIT"> </span><span class="NAME">_x</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">xp</span><span class="PUNC">;</span><span class="WHIT">
228
- <span class='line'>221</span> </span><span class="WHIT"> </span><span class="NAME">_y</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">y</span><span class="PUNC">;</span><span class="WHIT">
229
- <span class='line'>222</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
230
- <span class='line'>223</span> </span><span class="WHIT"> </span><span class="NAME">_x</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">xp.usrCoords</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
231
- <span class='line'>224</span> </span><span class="WHIT"> </span><span class="NAME">_y</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">xp.usrCoords</span><span class="PUNC">[</span><span class="NUMB">2</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
232
- <span class='line'>225</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
233
- <span class='line'>226</span>
234
- <span class='line'>227</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this._query</span><span class="PUNC">(</span><span class="NAME">_x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">_y</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
235
- <span class='line'>228</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
236
- <span class='line'>229</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
237
- <span class='line'>230</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
238
- <span class='line'>231</span>
239
- <span class='line'>232</span> </span><span class="NAME">export</span><span class="WHIT"> </span><span class="KEYW">default</span><span class="WHIT"> </span><span class="NAME">Mat.Quadtree</span><span class="PUNC">;</span><span class="WHIT">
240
- <span class='line'>233</span> </span></pre></body></html>
204
+ <span class='line'>197</span> </span><span class="WHIT"> </span><span class="COMM">// We empty this node points</span><span class="WHIT">
205
+ <span class='line'>198</span> </span><span class="WHIT"> </span><span class="NAME">this.points.length</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
206
+ <span class='line'>199</span> </span><span class="WHIT"> </span><span class="NAME">this.points</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
207
+ <span class='line'>200</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
208
+ <span class='line'>201</span>
209
+ <span class='line'>202</span> </span><span class="WHIT"> </span><span class="COMM">/**
210
+ <span class='line'>203</span> * Internal _query method that lacks adjustment of the parameter.
211
+ <span class='line'>204</span> * @name JXG.Math.Quadtree#_query
212
+ <span class='line'>205</span> * @param {Number} x
213
+ <span class='line'>206</span> * @param {Number} y
214
+ <span class='line'>207</span> * @returns {Boolean|JXG.Quadtree} The quad tree if the point is found, false
215
+ <span class='line'>208</span> * if none of the quad trees contains the point (i.e. the point is not inside
216
+ <span class='line'>209</span> * the root tree's AABB).
217
+ <span class='line'>210</span> * @private
218
+ <span class='line'>211</span> */</span><span class="WHIT">
219
+ <span class='line'>212</span> </span><span class="WHIT"> </span><span class="NAME">_query</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">y</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
220
+ <span class='line'>213</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">;</span><span class="WHIT">
221
+ <span class='line'>214</span>
222
+ <span class='line'>215</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.contains</span><span class="PUNC">(</span><span class="NAME">x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">y</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
223
+ <span class='line'>216</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.northWest</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
224
+ <span class='line'>217</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">;</span><span class="WHIT">
225
+ <span class='line'>218</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
226
+ <span class='line'>219</span>
227
+ <span class='line'>220</span> </span><span class="WHIT"> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.northWest._query</span><span class="PUNC">(</span><span class="NAME">x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">y</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
228
+ <span class='line'>221</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">r</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
229
+ <span class='line'>222</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">;</span><span class="WHIT">
230
+ <span class='line'>223</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
231
+ <span class='line'>224</span>
232
+ <span class='line'>225</span> </span><span class="WHIT"> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.northEast._query</span><span class="PUNC">(</span><span class="NAME">x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">y</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
233
+ <span class='line'>226</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">r</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
234
+ <span class='line'>227</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">;</span><span class="WHIT">
235
+ <span class='line'>228</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
236
+ <span class='line'>229</span>
237
+ <span class='line'>230</span> </span><span class="WHIT"> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.southEast._query</span><span class="PUNC">(</span><span class="NAME">x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">y</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
238
+ <span class='line'>231</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">r</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
239
+ <span class='line'>232</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">;</span><span class="WHIT">
240
+ <span class='line'>233</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
241
+ <span class='line'>234</span>
242
+ <span class='line'>235</span> </span><span class="WHIT"> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.southWest._query</span><span class="PUNC">(</span><span class="NAME">x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">y</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
243
+ <span class='line'>236</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">r</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
244
+ <span class='line'>237</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">;</span><span class="WHIT">
245
+ <span class='line'>238</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
246
+ <span class='line'>239</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
247
+ <span class='line'>240</span>
248
+ <span class='line'>241</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
249
+ <span class='line'>242</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
250
+ <span class='line'>243</span>
251
+ <span class='line'>244</span> </span><span class="WHIT"> </span><span class="COMM">/**
252
+ <span class='line'>245</span> * Retrieve the smallest quad tree that contains the given coordinate pair.
253
+ <span class='line'>246</span> * @name JXG.Math.Quadtree#_query
254
+ <span class='line'>247</span> * @param {JXG.Coords|Number} xp
255
+ <span class='line'>248</span> * @param {Number} y
256
+ <span class='line'>249</span> * @returns {Boolean|JXG.Quadtree} The quad tree if the point is found, false
257
+ <span class='line'>250</span> * if none of the quad trees contains the point (i.e. the point is not inside
258
+ <span class='line'>251</span> * the root tree's AABB).
259
+ <span class='line'>252</span> */</span><span class="WHIT">
260
+ <span class='line'>253</span> </span><span class="WHIT"> </span><span class="NAME">query</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">xp</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">y</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
261
+ <span class='line'>254</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">_x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">_y</span><span class="PUNC">;</span><span class="WHIT">
262
+ <span class='line'>255</span>
263
+ <span class='line'>256</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">Type.exists</span><span class="PUNC">(</span><span class="NAME">y</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
264
+ <span class='line'>257</span> </span><span class="WHIT"> </span><span class="NAME">_x</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">xp</span><span class="PUNC">;</span><span class="WHIT">
265
+ <span class='line'>258</span> </span><span class="WHIT"> </span><span class="NAME">_y</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">y</span><span class="PUNC">;</span><span class="WHIT">
266
+ <span class='line'>259</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
267
+ <span class='line'>260</span> </span><span class="WHIT"> </span><span class="NAME">_x</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">xp.usrCoords</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
268
+ <span class='line'>261</span> </span><span class="WHIT"> </span><span class="NAME">_y</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">xp.usrCoords</span><span class="PUNC">[</span><span class="NUMB">2</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
269
+ <span class='line'>262</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
270
+ <span class='line'>263</span>
271
+ <span class='line'>264</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this._query</span><span class="PUNC">(</span><span class="NAME">_x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">_y</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
272
+ <span class='line'>265</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
273
+ <span class='line'>266</span>
274
+ <span class='line'>267</span> </span><span class="WHIT"> </span><span class="COMM">/**
275
+ <span class='line'>268</span> *
276
+ <span class='line'>269</span> * @param {*} x
277
+ <span class='line'>270</span> * @param {*} y
278
+ <span class='line'>271</span> * @param {*} tol
279
+ <span class='line'>272</span> * @returns {Boolean}
280
+ <span class='line'>273</span> */</span><span class="WHIT">
281
+ <span class='line'>274</span> </span><span class="WHIT"> </span><span class="NAME">isIn</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">y</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">tol</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
282
+ <span class='line'>275</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">le</span><span class="PUNC">;</span><span class="WHIT">
283
+ <span class='line'>276</span>
284
+ <span class='line'>277</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.contains</span><span class="PUNC">(</span><span class="NAME">x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">y</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
285
+ <span class='line'>278</span> </span><span class="WHIT"> </span><span class="NAME">le</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.points.length</span><span class="PUNC">;</span><span class="WHIT">
286
+ <span class='line'>279</span>
287
+ <span class='line'>280</span> </span><span class="WHIT"> </span><span class="KEYW">switch</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.pointType</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
288
+ <span class='line'>281</span> </span><span class="WHIT"> </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'coords'</span><span class="PUNC">:</span><span class="WHIT">
289
+ <span class='line'>282</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">le</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
290
+ <span class='line'>283</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">Geometry.distance</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="NAME">x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">y</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.points</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">usrCoords.slice</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">tol</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
291
+ <span class='line'>284</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
292
+ <span class='line'>285</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
293
+ <span class='line'>286</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
294
+ <span class='line'>287</span> </span><span class="WHIT"> </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
295
+ <span class='line'>288</span> </span><span class="WHIT"> </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">'object'</span><span class="PUNC">:</span><span class="WHIT">
296
+ <span class='line'>289</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">le</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
297
+ <span class='line'>290</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">Geometry.distance</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="NAME">x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">y</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NAME">this.points</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.points</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">y</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">tol</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
298
+ <span class='line'>291</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
299
+ <span class='line'>292</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
300
+ <span class='line'>293</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
301
+ <span class='line'>294</span> </span><span class="WHIT"> </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
302
+ <span class='line'>295</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
303
+ <span class='line'>296</span>
304
+ <span class='line'>297</span>
305
+ <span class='line'>298</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.northWest</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
306
+ <span class='line'>299</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
307
+ <span class='line'>300</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
308
+ <span class='line'>301</span>
309
+ <span class='line'>302</span> </span><span class="WHIT"> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.northWest.isIn</span><span class="PUNC">(</span><span class="NAME">x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">y</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">tol</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
310
+ <span class='line'>303</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">r</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
311
+ <span class='line'>304</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">;</span><span class="WHIT">
312
+ <span class='line'>305</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
313
+ <span class='line'>306</span>
314
+ <span class='line'>307</span> </span><span class="WHIT"> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.northEast.isIn</span><span class="PUNC">(</span><span class="NAME">x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">y</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">tol</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
315
+ <span class='line'>308</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">r</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
316
+ <span class='line'>309</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">;</span><span class="WHIT">
317
+ <span class='line'>310</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
318
+ <span class='line'>311</span>
319
+ <span class='line'>312</span> </span><span class="WHIT"> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.southEast.isIn</span><span class="PUNC">(</span><span class="NAME">x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">y</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">tol</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
320
+ <span class='line'>313</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">r</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
321
+ <span class='line'>314</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">;</span><span class="WHIT">
322
+ <span class='line'>315</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
323
+ <span class='line'>316</span>
324
+ <span class='line'>317</span> </span><span class="WHIT"> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.southWest.isIn</span><span class="PUNC">(</span><span class="NAME">x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">y</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">tol</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
325
+ <span class='line'>318</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">r</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
326
+ <span class='line'>319</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">;</span><span class="WHIT">
327
+ <span class='line'>320</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
328
+ <span class='line'>321</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
329
+ <span class='line'>322</span>
330
+ <span class='line'>323</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
331
+ <span class='line'>324</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
332
+ <span class='line'>325</span>
333
+ <span class='line'>326</span> </span><span class="WHIT"> </span><span class="COMM">/**
334
+ <span class='line'>327</span> *
335
+ <span class='line'>328</span> * @returns {Array}
336
+ <span class='line'>329</span> */</span><span class="WHIT">
337
+ <span class='line'>330</span> </span><span class="WHIT"> </span><span class="NAME">getAllPoints</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
338
+ <span class='line'>331</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pointsList</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
339
+ <span class='line'>332</span> </span><span class="WHIT"> </span><span class="NAME">this.getAllPointsRecursive</span><span class="PUNC">(</span><span class="NAME">pointsList</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
340
+ <span class='line'>333</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">pointsList</span><span class="PUNC">;</span><span class="WHIT">
341
+ <span class='line'>334</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
342
+ <span class='line'>335</span>
343
+ <span class='line'>336</span> </span><span class="WHIT"> </span><span class="COMM">/**
344
+ <span class='line'>337</span> *
345
+ <span class='line'>338</span> * @param {Array} pointsList
346
+ <span class='line'>339</span> * @private
347
+ <span class='line'>340</span> */</span><span class="WHIT">
348
+ <span class='line'>341</span> </span><span class="WHIT"> </span><span class="NAME">getAllPointsRecursive</span><span class="PUNC">(</span><span class="NAME">pointsList</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
349
+ <span class='line'>342</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.northWest</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
350
+ <span class='line'>343</span> </span><span class="WHIT"> </span><span class="NAME">Array.prototype.push.apply</span><span class="PUNC">(</span><span class="NAME">pointsList</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.points.slice</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
351
+ <span class='line'>344</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
352
+ <span class='line'>345</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
353
+ <span class='line'>346</span>
354
+ <span class='line'>347</span> </span><span class="WHIT"> </span><span class="NAME">this.northWest.getAllPointsRecursive</span><span class="PUNC">(</span><span class="NAME">pointsList</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
355
+ <span class='line'>348</span> </span><span class="WHIT"> </span><span class="NAME">this.northEast.getAllPointsRecursive</span><span class="PUNC">(</span><span class="NAME">pointsList</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
356
+ <span class='line'>349</span> </span><span class="WHIT"> </span><span class="NAME">this.southEast.getAllPointsRecursive</span><span class="PUNC">(</span><span class="NAME">pointsList</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
357
+ <span class='line'>350</span> </span><span class="WHIT"> </span><span class="NAME">this.southWest.getAllPointsRecursive</span><span class="PUNC">(</span><span class="NAME">pointsList</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
358
+ <span class='line'>351</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
359
+ <span class='line'>352</span>
360
+ <span class='line'>353</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
361
+ <span class='line'>354</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
362
+ <span class='line'>355</span>
363
+ <span class='line'>356</span> </span><span class="NAME">export</span><span class="WHIT"> </span><span class="KEYW">default</span><span class="WHIT"> </span><span class="NAME">Mat.Quadtree</span><span class="PUNC">;</span><span class="WHIT">
364
+ <span class='line'>357</span> </span></pre></body></html>