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.
- package/CHANGELOG.md +25 -2
- package/distrib/docs/files.html +2 -2
- package/distrib/docs/index.html +2 -2
- package/distrib/docs/static/jsxgraph.css +24 -22
- package/distrib/docs/static/jsxgraphcore.js +2 -2
- package/distrib/docs/symbols/Angle.html +2 -2
- package/distrib/docs/symbols/Arc.html +2 -2
- package/distrib/docs/symbols/Arrow.html +2 -2
- package/distrib/docs/symbols/Arrowparallel.html +2 -2
- package/distrib/docs/symbols/Axis.html +2 -2
- package/distrib/docs/symbols/Bisector.html +2 -2
- package/distrib/docs/symbols/Bisectorlines.html +2 -2
- package/distrib/docs/symbols/Boxplot.html +2 -2
- package/distrib/docs/symbols/Button.html +4 -4
- package/distrib/docs/symbols/Cardinalspline.html +2 -2
- package/distrib/docs/symbols/Chart.html +2 -2
- package/distrib/docs/symbols/Checkbox.html +17 -17
- package/distrib/docs/symbols/Circle.html +2 -2
- package/distrib/docs/symbols/Circumcenter.html +4 -4
- package/distrib/docs/symbols/Circumcircle.html +2 -2
- package/distrib/docs/symbols/CircumcircleArc.html +2 -2
- package/distrib/docs/symbols/CircumcircleSector.html +2 -2
- package/distrib/docs/symbols/Comb.html +5 -5
- package/distrib/docs/symbols/Conic.html +2 -2
- package/distrib/docs/symbols/Constants.html +2 -2
- package/distrib/docs/symbols/Curve.html +2 -2
- package/distrib/docs/symbols/Curve3D.html +2 -2
- package/distrib/docs/symbols/CurveDifference.html +2 -2
- package/distrib/docs/symbols/CurveIntersection.html +2 -2
- package/distrib/docs/symbols/CurveUnion.html +2 -2
- package/distrib/docs/symbols/Derivative.html +2 -2
- package/distrib/docs/symbols/Ellipse.html +2 -2
- package/distrib/docs/symbols/ForeignObject.html +4 -4
- package/distrib/docs/symbols/Functiongraph.html +2 -2
- package/distrib/docs/symbols/Functiongraph3D.html +2 -2
- package/distrib/docs/symbols/Glider.html +4 -4
- package/distrib/docs/symbols/Grid.html +2 -2
- package/distrib/docs/symbols/Group.html +2 -2
- package/distrib/docs/symbols/Hatch.html +2 -2
- package/distrib/docs/symbols/Hyperbola.html +2 -2
- package/distrib/docs/symbols/Image.html +4 -4
- package/distrib/docs/symbols/Incenter.html +4 -4
- package/distrib/docs/symbols/Incircle.html +2 -2
- package/distrib/docs/symbols/Inequality.html +2 -2
- package/distrib/docs/symbols/Input.html +4 -4
- package/distrib/docs/symbols/Integral.html +2 -2
- package/distrib/docs/symbols/Intersection.html +4 -4
- package/distrib/docs/symbols/JXG.AbstractRenderer.html +2 -2
- package/distrib/docs/symbols/JXG.Board.html +144 -11
- package/distrib/docs/symbols/JXG.Board.infobox.html +2 -2
- package/distrib/docs/symbols/JXG.C.html +2 -2
- package/distrib/docs/symbols/JXG.CA.html +2 -2
- package/distrib/docs/symbols/JXG.CanvasRenderer.html +2 -2
- package/distrib/docs/symbols/JXG.Chart.html +2 -2
- package/distrib/docs/symbols/JXG.Circle.html +2 -2
- package/distrib/docs/symbols/JXG.Complex.html +2 -2
- package/distrib/docs/symbols/JXG.Composition.html +2 -2
- package/distrib/docs/symbols/JXG.Coords.html +2 -2
- package/distrib/docs/symbols/JXG.CoordsElement.html +54 -2
- package/distrib/docs/symbols/JXG.Curve.html +2 -2
- package/distrib/docs/symbols/JXG.Curve3D.html +2 -2
- package/distrib/docs/symbols/JXG.Dump.html +2 -2
- package/distrib/docs/symbols/JXG.EventEmitter.html +2 -2
- package/distrib/docs/symbols/JXG.ForeignObject.html +3 -3
- package/distrib/docs/symbols/JXG.GeometryElement.html +2 -2
- package/distrib/docs/symbols/JXG.GeometryElement3D.html +2 -2
- package/distrib/docs/symbols/JXG.GeonextParser.html +2 -2
- package/distrib/docs/symbols/JXG.Group.html +2 -2
- package/distrib/docs/symbols/JXG.Image.html +3 -3
- package/distrib/docs/symbols/JXG.JSXGraph.html +2 -2
- package/distrib/docs/symbols/JXG.JessieCode.html +2 -2
- package/distrib/docs/symbols/JXG.Legend.html +2 -2
- package/distrib/docs/symbols/JXG.Line.html +2 -2
- package/distrib/docs/symbols/JXG.Line3D.html +2 -2
- package/distrib/docs/symbols/JXG.Math.Clip.html +2 -2
- package/distrib/docs/symbols/JXG.Math.Extrapolate.html +2 -2
- package/distrib/docs/symbols/JXG.Math.Geometry.html +2 -2
- package/distrib/docs/symbols/JXG.Math.IntervalArithmetic.html +2 -2
- package/distrib/docs/symbols/JXG.Math.Metapost.html +2 -2
- package/distrib/docs/symbols/JXG.Math.Nlp.html +2 -2
- package/distrib/docs/symbols/JXG.Math.Numerics.html +23 -15
- package/distrib/docs/symbols/JXG.Math.Plot.html +2 -2
- package/distrib/docs/symbols/JXG.Math.Poly.Monomial.html +2 -2
- package/distrib/docs/symbols/JXG.Math.Poly.Polynomial.html +2 -2
- package/distrib/docs/symbols/JXG.Math.Poly.Ring.html +2 -2
- package/distrib/docs/symbols/JXG.Math.Poly.html +2 -2
- package/distrib/docs/symbols/JXG.Math.ProbFuncs.html +2 -2
- package/distrib/docs/symbols/JXG.Math.Quadtree.html +122 -7
- package/distrib/docs/symbols/JXG.Math.Statistics.html +2 -2
- package/distrib/docs/symbols/JXG.Math.Symbolic.html +2 -2
- package/distrib/docs/symbols/JXG.Math.html +45 -2
- package/distrib/docs/symbols/JXG.NoRenderer.html +2 -2
- package/distrib/docs/symbols/JXG.Options.html +2 -2
- package/distrib/docs/symbols/JXG.Plane3D.html +2 -2
- package/distrib/docs/symbols/JXG.Point.html +3 -3
- package/distrib/docs/symbols/JXG.Point3D.html +2 -2
- package/distrib/docs/symbols/JXG.Polygon.html +2 -2
- package/distrib/docs/symbols/JXG.SVGRenderer.html +2 -2
- package/distrib/docs/symbols/JXG.Server.html +2 -2
- package/distrib/docs/symbols/JXG.Server.modules.html +2 -2
- package/distrib/docs/symbols/JXG.Surface3D.html +2 -2
- package/distrib/docs/symbols/JXG.Text.html +8 -8
- package/distrib/docs/symbols/JXG.Ticks.html +2 -2
- package/distrib/docs/symbols/JXG.Transformation.html +2 -2
- package/distrib/docs/symbols/JXG.Turtle.html +2 -2
- package/distrib/docs/symbols/JXG.Util.Base64.html +2 -2
- package/distrib/docs/symbols/JXG.Util.UTF8.html +2 -2
- package/distrib/docs/symbols/JXG.Util.Unzip.html +2 -2
- package/distrib/docs/symbols/JXG.Util.html +2 -2
- package/distrib/docs/symbols/JXG.VMLRenderer.html +2 -2
- package/distrib/docs/symbols/JXG.View3D.html +2 -2
- package/distrib/docs/symbols/JXG.XML.html +2 -2
- package/distrib/docs/symbols/Label.html +114 -4
- package/distrib/docs/symbols/Legend.html +2 -2
- package/distrib/docs/symbols/Line.html +2 -2
- package/distrib/docs/symbols/Line3D.html +2 -2
- package/distrib/docs/symbols/Locus.html +2 -2
- package/distrib/docs/symbols/MajorArc.html +2 -2
- package/distrib/docs/symbols/MajorSector.html +2 -2
- package/distrib/docs/symbols/Metapostspline.html +2 -2
- package/distrib/docs/symbols/Midpoint.html +4 -4
- package/distrib/docs/symbols/MinorArc.html +2 -2
- package/distrib/docs/symbols/MinorSector.html +2 -2
- package/distrib/docs/symbols/Mirrorelement.html +2 -2
- package/distrib/docs/symbols/Mirrorpoint.html +4 -4
- package/distrib/docs/symbols/NonReflexAngle.html +2 -2
- package/distrib/docs/symbols/Normal.html +2 -2
- package/distrib/docs/symbols/Orthogonalprojection.html +4 -4
- package/distrib/docs/symbols/OtherIntersection.html +4 -4
- package/distrib/docs/symbols/Parabola.html +2 -2
- package/distrib/docs/symbols/Parallel.html +2 -2
- package/distrib/docs/symbols/Parallelpoint.html +4 -4
- package/distrib/docs/symbols/ParametricSurface3D.html +2 -2
- package/distrib/docs/symbols/Perpendicular.html +2 -2
- package/distrib/docs/symbols/PerpendicularPoint.html +4 -4
- package/distrib/docs/symbols/PerpendicularSegment.html +2 -2
- package/distrib/docs/symbols/Point.html +4 -4
- package/distrib/docs/symbols/Point3D.html +2 -2
- package/distrib/docs/symbols/PolarLine.html +2 -2
- package/distrib/docs/symbols/PolePoint.html +4 -4
- package/distrib/docs/symbols/Polygon.html +2 -2
- package/distrib/docs/symbols/PolygonalChain.html +2 -2
- package/distrib/docs/symbols/RadicalAxis.html +2 -2
- package/distrib/docs/symbols/Reflection.html +2 -2
- package/distrib/docs/symbols/ReflexAngle.html +2 -2
- package/distrib/docs/symbols/RegularPolygon.html +2 -2
- package/distrib/docs/symbols/Riemannsum.html +7 -3
- package/distrib/docs/symbols/Sector.html +2 -2
- package/distrib/docs/symbols/Segment.html +2 -2
- package/distrib/docs/symbols/Semicircle.html +2 -2
- package/distrib/docs/symbols/Slider.html +145 -4
- package/distrib/docs/symbols/Slopefield.html +2 -2
- package/distrib/docs/symbols/Slopetriangle.html +2 -2
- package/distrib/docs/symbols/Smartlabel.html +4 -4
- package/distrib/docs/symbols/Spline.html +2 -2
- package/distrib/docs/symbols/Stepfunction.html +2 -2
- package/distrib/docs/symbols/Tangent.html +2 -2
- package/distrib/docs/symbols/Tapemeasure.html +2 -2
- package/distrib/docs/symbols/Text.html +4 -4
- package/distrib/docs/symbols/Ticks.html +2 -2
- package/distrib/docs/symbols/Tracecurve.html +2 -2
- package/distrib/docs/symbols/Transformation.html +2 -2
- package/distrib/docs/symbols/Turtle.html +2 -2
- package/distrib/docs/symbols/Vectorfield.html +2 -2
- package/distrib/docs/symbols/View3D.html +2 -2
- package/distrib/docs/symbols/_global_.html +2 -2
- package/distrib/docs/symbols/src/src_3d_view3d.js.html +29 -30
- package/distrib/docs/symbols/src/src_base_board.js.html +5020 -4930
- package/distrib/docs/symbols/src/src_base_constants.js.html +1 -1
- package/distrib/docs/symbols/src/src_base_coordselement.js.html +1829 -1789
- package/distrib/docs/symbols/src/src_base_curve.js.html +783 -778
- package/distrib/docs/symbols/src/src_base_text.js.html +345 -358
- package/distrib/docs/symbols/src/src_element_checkbox.js.html +30 -30
- package/distrib/docs/symbols/src/src_element_slider.js.html +391 -377
- package/distrib/docs/symbols/src/src_math_numerics.js.html +1226 -1190
- package/distrib/docs/symbols/src/src_math_qdt.js.html +318 -194
- package/distrib/docs/symbols/src/src_options.js.html +7137 -7034
- package/distrib/docs/symbols/src/src_renderer_abstract.js.html +1168 -1167
- package/distrib/docs/symbols/src/src_renderer_canvas.js.html +1 -1
- package/distrib/docs/symbols/src/src_renderer_svg.js.html +489 -494
- package/distrib/docs/symbols/src/src_utils_env.js.html +127 -90
- package/distrib/docs.zip +0 -0
- package/distrib/geogebra.min.js +1 -1
- package/distrib/geonext.min.js +1 -1
- package/distrib/intergeo.min.js +1 -1
- package/distrib/jsxgraph.css +24 -22
- package/distrib/jsxgraph.zip +0 -0
- package/distrib/jsxgraphcore.js +2 -2
- package/distrib/jsxgraphcore.mjs +2 -2
- package/distrib/jsxgraphcore.mjs.map +1 -1
- package/distrib/jsxgraphsrc.js +707 -276
- package/distrib/jsxgraphsrc.mjs +707 -276
- package/distrib/jsxgraphsrc.mjs.map +1 -1
- package/distrib/sketch.min.js +1 -1
- package/package.json +1 -1
- package/src/3d/view3d.js +0 -1
- package/src/base/board.js +140 -50
- package/src/base/constants.js +1 -1
- package/src/base/coordselement.js +54 -14
- package/src/base/curve.js +6 -1
- package/src/base/text.js +13 -26
- package/src/element/checkbox.js +17 -17
- package/src/element/slider.js +16 -2
- package/src/math/heap.js +34 -4
- package/src/math/numerics.js +112 -76
- package/src/math/qdt.js +141 -17
- package/src/options.js +115 -12
- package/src/renderer/abstract.js +15 -14
- package/src/renderer/canvas.js +1 -1
- package/src/renderer/svg.js +0 -5
- 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">
|
|
44
|
-
<span class='line'> 37</span>
|
|
45
|
-
<span class='line'> 38</span>
|
|
46
|
-
<span class='line'> 39</span>
|
|
47
|
-
<span class='line'> 40</span> *
|
|
48
|
-
<span class='line'> 41</span> *
|
|
49
|
-
<span class='line'> 42</span> * @
|
|
50
|
-
<span class='line'> 43</span> * @
|
|
51
|
-
<span class='line'> 44</span> * @
|
|
52
|
-
<span class='line'> 45</span>
|
|
53
|
-
<span class='line'> 46</span>
|
|
54
|
-
<span class='line'> 47</span>
|
|
55
|
-
<span class='line'> 48</span>
|
|
56
|
-
<span class='line'> 49</span>
|
|
57
|
-
<span class='line'> 50</span>
|
|
58
|
-
<span class='line'> 51</span>
|
|
59
|
-
<span class='line'> 52</span>
|
|
60
|
-
<span class='line'> 53</span> </span><span class="WHIT"> </span><span class="
|
|
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> *
|
|
64
|
-
<span class='line'> 57</span> *
|
|
65
|
-
<span class='line'> 58</span> * @type
|
|
66
|
-
<span class='line'> 59</span>
|
|
67
|
-
<span class='line'> 60</span>
|
|
68
|
-
<span class='line'> 61</span> </span><span class="WHIT"> </span><span class="NAME">this.
|
|
69
|
-
<span class='line'> 62</span>
|
|
70
|
-
<span class='line'> 63</span> </span><span class="WHIT"> </span><span class="
|
|
71
|
-
<span class='line'> 64</span>
|
|
72
|
-
<span class='line'> 65</span>
|
|
73
|
-
<span class='line'> 66</span>
|
|
74
|
-
<span class='line'> 67</span> *
|
|
75
|
-
<span class='line'> 68</span>
|
|
76
|
-
<span class='line'> 69</span>
|
|
77
|
-
<span class='line'> 70</span>
|
|
78
|
-
<span class='line'> 71</span> </span><span class="WHIT"> </span><span class="
|
|
79
|
-
<span class='line'> 72</span>
|
|
80
|
-
<span class='line'> 73</span>
|
|
81
|
-
<span class='line'> 74</span> *
|
|
82
|
-
<span class='line'> 75</span>
|
|
83
|
-
<span class='line'> 76</span>
|
|
84
|
-
<span class='line'> 77</span>
|
|
85
|
-
<span class='line'> 78</span> </span><span class="WHIT"> </span><span class="NAME">this.
|
|
86
|
-
<span class='line'> 79</span>
|
|
87
|
-
<span class='line'> 80</span> </span><span class="WHIT"> </span><span class="
|
|
88
|
-
<span class='line'> 81</span>
|
|
89
|
-
<span class='line'> 82</span>
|
|
90
|
-
<span class='line'> 83</span> *
|
|
91
|
-
<span class='line'> 84</span>
|
|
92
|
-
<span class='line'> 85</span>
|
|
93
|
-
<span class='line'> 86</span>
|
|
94
|
-
<span class='line'> 87</span>
|
|
95
|
-
<span class='line'> 88</span>
|
|
96
|
-
<span class='line'> 89</span>
|
|
97
|
-
<span class='line'> 90</span>
|
|
98
|
-
<span class='line'> 91</span>
|
|
99
|
-
<span class='line'> 92</span>
|
|
100
|
-
<span class='line'> 93</span>
|
|
101
|
-
<span class='line'> 94</span>
|
|
102
|
-
<span class='line'> 95</span>
|
|
103
|
-
<span class='line'> 96</span> </span><span class="WHIT"> </span><span class="NAME">
|
|
104
|
-
<span class='line'> 97</span>
|
|
105
|
-
<span class='line'> 98</span> </span><span class="WHIT">
|
|
106
|
-
<span class='line'> 99</span>
|
|
107
|
-
<span class='line'>100</span>
|
|
108
|
-
<span class='line'>101</span>
|
|
109
|
-
<span class='line'>102</span>
|
|
110
|
-
<span class='line'>103</span>
|
|
111
|
-
<span class='line'>104</span>
|
|
112
|
-
<span class='line'>105</span> </span><span class="WHIT">
|
|
113
|
-
<span class='line'>106</span>
|
|
114
|
-
<span class='line'>107</span>
|
|
115
|
-
<span class='line'>108</span>
|
|
116
|
-
<span class='line'>109</span>
|
|
117
|
-
<span class='line'>110</span>
|
|
118
|
-
<span class='line'>111</span>
|
|
119
|
-
<span class='line'>112</span>
|
|
120
|
-
<span class='line'>113</span>
|
|
121
|
-
<span class='line'>114</span>
|
|
122
|
-
<span class='line'>115</span>
|
|
123
|
-
<span class='line'>116</span>
|
|
124
|
-
<span class='line'>117</span>
|
|
125
|
-
<span class='line'>118</span>
|
|
126
|
-
<span class='line'>119</span> </span><span class="
|
|
127
|
-
<span class='line'>120</span>
|
|
128
|
-
<span class='line'>121</span> </span><span class="
|
|
129
|
-
<span class='line'>122</span>
|
|
130
|
-
<span class='line'>123</span> </span><span class="WHIT">
|
|
131
|
-
<span class='line'>124</span> </span><span class="WHIT">
|
|
132
|
-
<span class='line'>125</span>
|
|
133
|
-
<span class='line'>126</span>
|
|
134
|
-
<span class='line'>127</span>
|
|
135
|
-
<span class='line'>128</span>
|
|
136
|
-
<span class='line'>129</span>
|
|
137
|
-
<span class='line'>130</span>
|
|
138
|
-
<span class='line'>131</span> </span><span class="WHIT"> </span><span class="KEYW">
|
|
139
|
-
<span class='line'>132</span> </span><span class="WHIT">
|
|
140
|
-
<span class='line'>133</span>
|
|
141
|
-
<span class='line'>134</span>
|
|
142
|
-
<span class='line'>135</span>
|
|
143
|
-
<span class='line'>136</span>
|
|
144
|
-
<span class='line'>137</span>
|
|
145
|
-
<span class='line'>138</span>
|
|
146
|
-
<span class='line'>139</span>
|
|
147
|
-
<span class='line'>140</span>
|
|
148
|
-
<span class='line'>141</span>
|
|
149
|
-
<span class='line'>142</span> </span><span class="WHIT">
|
|
150
|
-
<span class='line'>143</span>
|
|
151
|
-
<span class='line'>144</span>
|
|
152
|
-
<span class='line'>145</span> </span><span class="WHIT">
|
|
153
|
-
<span class='line'>146</span> </span><span class="WHIT">
|
|
154
|
-
<span class='line'>147</span> </span><span class="WHIT">
|
|
155
|
-
<span class='line'>148</span> </span><span class="WHIT"> </span><span class="
|
|
156
|
-
<span class='line'>149</span> </span><span class="WHIT">
|
|
157
|
-
<span class='line'>150</span>
|
|
158
|
-
<span class='line'>151</span> </span><span class="WHIT">
|
|
159
|
-
<span class='line'>152</span> </span><span class="WHIT">
|
|
160
|
-
<span class='line'>153</span> </span><span class="WHIT"> </span><span class="
|
|
161
|
-
<span class='line'>154</span>
|
|
162
|
-
<span class='line'>155</span>
|
|
163
|
-
<span class='line'>156</span> </span><span class="WHIT">
|
|
164
|
-
<span class='line'>157</span> </span><span class="WHIT"> </span><span class="
|
|
165
|
-
<span class='line'>158</span> </span><span class="WHIT">
|
|
166
|
-
<span class='line'>159</span>
|
|
167
|
-
<span class='line'>160</span> </span><span class="WHIT">
|
|
168
|
-
<span class='line'>161</span> </span><span class="WHIT">
|
|
169
|
-
<span class='line'>162</span> </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"><</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"><=</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"><</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"><=</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"><</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">
|
|
172
|
-
<span class='line'>165</span>
|
|
173
|
-
<span class='line'>166</span>
|
|
174
|
-
<span class='line'>167</span>
|
|
175
|
-
<span class='line'>168</span>
|
|
176
|
-
<span class='line'>169</span>
|
|
177
|
-
<span class='line'>170</span>
|
|
178
|
-
<span class='line'>171</span>
|
|
179
|
-
<span class='line'>172</span>
|
|
180
|
-
<span class='line'>173</span>
|
|
181
|
-
<span class='line'>174</span> </span><span class="WHIT">
|
|
182
|
-
<span class='line'>175</span>
|
|
183
|
-
<span class='line'>176</span>
|
|
184
|
-
<span class='line'>177</span> </span><span class="WHIT">
|
|
185
|
-
<span class='line'>178</span>
|
|
186
|
-
<span class='line'>179</span> </span><span class="WHIT">
|
|
187
|
-
<span class='line'>180</span>
|
|
188
|
-
<span class='line'>181</span>
|
|
189
|
-
<span class='line'>182</span> </span><span class="WHIT">
|
|
190
|
-
<span class='line'>183</span> </span><span class="WHIT">
|
|
191
|
-
<span class='line'>184</span> </span><span class="WHIT">
|
|
192
|
-
<span class='line'>185</span> </span><span class="WHIT"> </span><span class="PUNC">
|
|
193
|
-
<span class='line'>186</span>
|
|
194
|
-
<span class='line'>187</span>
|
|
195
|
-
<span class='line'>188</span> </span><span class="WHIT">
|
|
196
|
-
<span class='line'>189</span> </span><span class="WHIT">
|
|
197
|
-
<span class='line'>190</span> </span><span class="WHIT">
|
|
198
|
-
<span class='line'>191</span>
|
|
199
|
-
<span class='line'>192</span>
|
|
200
|
-
<span class='line'>193</span> </span><span class="WHIT">
|
|
201
|
-
<span class='line'>194</span> </span><span class="WHIT">
|
|
202
|
-
<span class='line'>195</span> </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"><</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">
|
|
205
|
-
<span class='line'>198</span> </span><span class="WHIT">
|
|
206
|
-
<span class='line'>199</span> </span><span class="WHIT">
|
|
207
|
-
<span class='line'>200</span> </span><span class="WHIT">
|
|
208
|
-
<span class='line'>201</span>
|
|
209
|
-
<span class='line'>202</span>
|
|
210
|
-
<span class='line'>203</span>
|
|
211
|
-
<span class='line'>204</span>
|
|
212
|
-
<span class='line'>205</span>
|
|
213
|
-
<span class='line'>206</span>
|
|
214
|
-
<span class='line'>207</span> *
|
|
215
|
-
<span class='line'>208</span> *
|
|
216
|
-
<span class='line'>209</span> *
|
|
217
|
-
<span class='line'>210</span> * @
|
|
218
|
-
<span class='line'>211</span>
|
|
219
|
-
<span class='line'>212</span>
|
|
220
|
-
<span class='line'>213</span>
|
|
221
|
-
<span class='line'>214</span>
|
|
222
|
-
<span class='line'>215</span>
|
|
223
|
-
<span class='line'>216</span> </span><span class="WHIT">
|
|
224
|
-
<span class='line'>217</span> </span><span class="WHIT">
|
|
225
|
-
<span class='line'>218</span>
|
|
226
|
-
<span class='line'>219</span>
|
|
227
|
-
<span class='line'>220</span> </span><span class="WHIT"> </span><span class="NAME">
|
|
228
|
-
<span class='line'>221</span> </span><span class="WHIT"> </span><span class="
|
|
229
|
-
<span class='line'>222</span> </span><span class="WHIT">
|
|
230
|
-
<span class='line'>223</span> </span><span class="WHIT"> </span><span class="
|
|
231
|
-
<span class='line'>224</span>
|
|
232
|
-
<span class='line'>225</span> </span><span class="WHIT">
|
|
233
|
-
<span class='line'>226</span>
|
|
234
|
-
<span class='line'>227</span> </span><span class="WHIT">
|
|
235
|
-
<span class='line'>228</span> </span><span class="WHIT">
|
|
236
|
-
<span class='line'>229</span>
|
|
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="
|
|
240
|
-
<span class='line'>233</span> </span
|
|
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"><</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"><</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"><</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"><</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>
|