jsxgraph 1.10.0 → 1.10.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 (239) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/distrib/docs/files.html +2 -61
  3. package/distrib/docs/index.html +2 -58
  4. package/distrib/docs/static/jsxgraphcore.js +2 -2
  5. package/distrib/docs/symbols/Angle.html +2 -18
  6. package/distrib/docs/symbols/Arc.html +2 -18
  7. package/distrib/docs/symbols/Arrow.html +2 -18
  8. package/distrib/docs/symbols/Arrowparallel.html +2 -18
  9. package/distrib/docs/symbols/Axes3D.html +2 -18
  10. package/distrib/docs/symbols/Axis.html +2 -18
  11. package/distrib/docs/symbols/Axis3D.html +2 -18
  12. package/distrib/docs/symbols/Bisector.html +2 -18
  13. package/distrib/docs/symbols/Bisectorlines.html +2 -18
  14. package/distrib/docs/symbols/Boxplot.html +2 -18
  15. package/distrib/docs/symbols/Button.html +2 -18
  16. package/distrib/docs/symbols/Cardinalspline.html +2 -18
  17. package/distrib/docs/symbols/Chart.html +2 -18
  18. package/distrib/docs/symbols/Checkbox.html +2 -18
  19. package/distrib/docs/symbols/Circle.html +2 -18
  20. package/distrib/docs/symbols/Circle3D.html +2 -18
  21. package/distrib/docs/symbols/Circumcenter.html +2 -18
  22. package/distrib/docs/symbols/Circumcircle.html +2 -18
  23. package/distrib/docs/symbols/CircumcircleArc.html +2 -18
  24. package/distrib/docs/symbols/CircumcircleSector.html +2 -18
  25. package/distrib/docs/symbols/Comb.html +2 -18
  26. package/distrib/docs/symbols/Conic.html +2 -18
  27. package/distrib/docs/symbols/Curve.html +2 -18
  28. package/distrib/docs/symbols/Curve3D.html +2 -18
  29. package/distrib/docs/symbols/CurveDifference.html +2 -18
  30. package/distrib/docs/symbols/CurveIntersection.html +2 -18
  31. package/distrib/docs/symbols/CurveUnion.html +2 -18
  32. package/distrib/docs/symbols/Derivative.html +2 -18
  33. package/distrib/docs/symbols/Ellipse.html +2 -18
  34. package/distrib/docs/symbols/ForeignObject.html +2 -18
  35. package/distrib/docs/symbols/Functiongraph.html +2 -18
  36. package/distrib/docs/symbols/Functiongraph3D.html +2 -18
  37. package/distrib/docs/symbols/Glider.html +2 -18
  38. package/distrib/docs/symbols/Grid.html +2 -18
  39. package/distrib/docs/symbols/Group.html +2 -18
  40. package/distrib/docs/symbols/Hatch.html +2 -18
  41. package/distrib/docs/symbols/Hyperbola.html +2 -18
  42. package/distrib/docs/symbols/Image.html +2 -18
  43. package/distrib/docs/symbols/ImplicitCurve.html +2 -18
  44. package/distrib/docs/symbols/Incenter.html +2 -18
  45. package/distrib/docs/symbols/Incircle.html +2 -18
  46. package/distrib/docs/symbols/Inequality.html +2 -18
  47. package/distrib/docs/symbols/Input.html +2 -18
  48. package/distrib/docs/symbols/Integral.html +2 -18
  49. package/distrib/docs/symbols/Intersection.html +2 -18
  50. package/distrib/docs/symbols/IntersectionCircle3D.html +2 -18
  51. package/distrib/docs/symbols/IntersectionLine3D.html +2 -18
  52. package/distrib/docs/symbols/JXG.AbstractRenderer.html +2 -18
  53. package/distrib/docs/symbols/JXG.Board.html +4 -20
  54. package/distrib/docs/symbols/JXG.Board.infobox.html +2 -18
  55. package/distrib/docs/symbols/JXG.C.html +2 -18
  56. package/distrib/docs/symbols/JXG.CA.html +2 -18
  57. package/distrib/docs/symbols/JXG.CanvasRenderer.html +2 -18
  58. package/distrib/docs/symbols/JXG.Chart.html +2 -18
  59. package/distrib/docs/symbols/JXG.Circle.html +2 -18
  60. package/distrib/docs/symbols/JXG.Circle3D.html +2 -18
  61. package/distrib/docs/symbols/JXG.Complex.html +2 -18
  62. package/distrib/docs/symbols/JXG.Composition.html +2 -18
  63. package/distrib/docs/symbols/JXG.Coords.html +2 -18
  64. package/distrib/docs/symbols/JXG.CoordsElement.html +98 -22
  65. package/distrib/docs/symbols/JXG.Curve.html +2 -18
  66. package/distrib/docs/symbols/JXG.Curve3D.html +2 -18
  67. package/distrib/docs/symbols/JXG.Dump.html +2 -18
  68. package/distrib/docs/symbols/JXG.EventEmitter.html +2 -18
  69. package/distrib/docs/symbols/JXG.Expect.html +2 -18
  70. package/distrib/docs/symbols/JXG.ForeignObject.html +2 -18
  71. package/distrib/docs/symbols/JXG.GeometryElement.html +2 -18
  72. package/distrib/docs/symbols/JXG.GeometryElement3D.html +2 -18
  73. package/distrib/docs/symbols/JXG.GeonextParser.html +2 -18
  74. package/distrib/docs/symbols/JXG.Group.html +2 -18
  75. package/distrib/docs/symbols/JXG.Image.html +2 -18
  76. package/distrib/docs/symbols/JXG.JSXGraph.html +2 -18
  77. package/distrib/docs/symbols/JXG.JessieCode.html +2 -18
  78. package/distrib/docs/symbols/JXG.Legend.html +2 -18
  79. package/distrib/docs/symbols/JXG.Line.html +2 -18
  80. package/distrib/docs/symbols/JXG.Line3D.html +2 -18
  81. package/distrib/docs/symbols/JXG.Math.BoxQuadtree.html +2 -18
  82. package/distrib/docs/symbols/JXG.Math.Clip.html +2 -18
  83. package/distrib/docs/symbols/JXG.Math.Extrapolate.html +2 -18
  84. package/distrib/docs/symbols/JXG.Math.Geometry.html +2 -18
  85. package/distrib/docs/symbols/JXG.Math.ImplicitPlot.html +2 -18
  86. package/distrib/docs/symbols/JXG.Math.IntervalArithmetic.html +2 -18
  87. package/distrib/docs/symbols/JXG.Math.Metapost.html +2 -18
  88. package/distrib/docs/symbols/JXG.Math.Nlp.html +2 -18
  89. package/distrib/docs/symbols/JXG.Math.Numerics.html +2 -18
  90. package/distrib/docs/symbols/JXG.Math.Plot.html +2 -18
  91. package/distrib/docs/symbols/JXG.Math.Poly.Monomial.html +2 -18
  92. package/distrib/docs/symbols/JXG.Math.Poly.Polynomial.html +2 -18
  93. package/distrib/docs/symbols/JXG.Math.Poly.Ring.html +2 -18
  94. package/distrib/docs/symbols/JXG.Math.Poly.html +2 -18
  95. package/distrib/docs/symbols/JXG.Math.ProbFuncs.html +2 -18
  96. package/distrib/docs/symbols/JXG.Math.Quadtree.html +2 -18
  97. package/distrib/docs/symbols/JXG.Math.Statistics.html +22 -34
  98. package/distrib/docs/symbols/JXG.Math.html +2 -18
  99. package/distrib/docs/symbols/JXG.NoRenderer.html +2 -18
  100. package/distrib/docs/symbols/JXG.Options.html +2 -18
  101. package/distrib/docs/symbols/JXG.Plane3D.html +2 -18
  102. package/distrib/docs/symbols/JXG.Point.html +2 -18
  103. package/distrib/docs/symbols/JXG.Point3D.html +2 -18
  104. package/distrib/docs/symbols/JXG.Polygon.html +2 -18
  105. package/distrib/docs/symbols/JXG.Polygon3D.html +2 -18
  106. package/distrib/docs/symbols/JXG.PrefixParser.html +2 -18
  107. package/distrib/docs/symbols/JXG.SVGRenderer.html +2 -18
  108. package/distrib/docs/symbols/JXG.Sphere3D.html +2 -18
  109. package/distrib/docs/symbols/JXG.Surface3D.html +2 -18
  110. package/distrib/docs/symbols/JXG.Text.html +2 -18
  111. package/distrib/docs/symbols/JXG.Text3D.html +2 -18
  112. package/distrib/docs/symbols/JXG.Ticks.html +2 -18
  113. package/distrib/docs/symbols/JXG.Transformation.html +2 -18
  114. package/distrib/docs/symbols/JXG.Turtle.html +2 -18
  115. package/distrib/docs/symbols/JXG.Util.Base64.html +2 -18
  116. package/distrib/docs/symbols/JXG.Util.UTF8.html +2 -18
  117. package/distrib/docs/symbols/JXG.Util.Unzip.html +2 -18
  118. package/distrib/docs/symbols/JXG.Util.html +2 -18
  119. package/distrib/docs/symbols/JXG.VMLRenderer.html +2 -18
  120. package/distrib/docs/symbols/JXG.View3D.html +4 -19
  121. package/distrib/docs/symbols/JXG.XML.html +2 -18
  122. package/distrib/docs/symbols/JXG.html +2 -18
  123. package/distrib/docs/symbols/Label.html +2 -18
  124. package/distrib/docs/symbols/Legend.html +2 -18
  125. package/distrib/docs/symbols/Line.html +2 -18
  126. package/distrib/docs/symbols/Line3D.html +2 -18
  127. package/distrib/docs/symbols/MajorArc.html +2 -18
  128. package/distrib/docs/symbols/MajorSector.html +2 -18
  129. package/distrib/docs/symbols/Measurement.html +2 -18
  130. package/distrib/docs/symbols/Mesh3D.html +2 -18
  131. package/distrib/docs/symbols/Metapostspline.html +2 -18
  132. package/distrib/docs/symbols/Midpoint.html +2 -18
  133. package/distrib/docs/symbols/MinorArc.html +2 -18
  134. package/distrib/docs/symbols/MinorSector.html +2 -18
  135. package/distrib/docs/symbols/Mirrorpoint.html +2 -18
  136. package/distrib/docs/symbols/NonReflexAngle.html +2 -18
  137. package/distrib/docs/symbols/Normal.html +2 -18
  138. package/distrib/docs/symbols/Orthogonalprojection.html +2 -18
  139. package/distrib/docs/symbols/OtherIntersection.html +2 -18
  140. package/distrib/docs/symbols/Parabola.html +2 -18
  141. package/distrib/docs/symbols/Parallel.html +2 -18
  142. package/distrib/docs/symbols/Parallelogram.html +2 -18
  143. package/distrib/docs/symbols/Parallelpoint.html +2 -18
  144. package/distrib/docs/symbols/ParametricSurface3D.html +2 -18
  145. package/distrib/docs/symbols/Perpendicular.html +2 -18
  146. package/distrib/docs/symbols/PerpendicularPoint.html +2 -18
  147. package/distrib/docs/symbols/PerpendicularSegment.html +2 -18
  148. package/distrib/docs/symbols/Point.html +2 -18
  149. package/distrib/docs/symbols/Point3D.html +2 -18
  150. package/distrib/docs/symbols/PolarLine.html +2 -18
  151. package/distrib/docs/symbols/PolePoint.html +2 -18
  152. package/distrib/docs/symbols/Polygon.html +2 -18
  153. package/distrib/docs/symbols/PolygonalChain.html +2 -18
  154. package/distrib/docs/symbols/RadicalAxis.html +2 -18
  155. package/distrib/docs/symbols/Reflection.html +2 -18
  156. package/distrib/docs/symbols/ReflexAngle.html +2 -18
  157. package/distrib/docs/symbols/RegularPolygon.html +2 -18
  158. package/distrib/docs/symbols/Riemannsum.html +2 -18
  159. package/distrib/docs/symbols/Sector.html +2 -18
  160. package/distrib/docs/symbols/Segment.html +2 -18
  161. package/distrib/docs/symbols/Semicircle.html +2 -18
  162. package/distrib/docs/symbols/Slider.html +2 -18
  163. package/distrib/docs/symbols/Slopefield.html +2 -18
  164. package/distrib/docs/symbols/Slopetriangle.html +2 -18
  165. package/distrib/docs/symbols/Smartlabel.html +2 -18
  166. package/distrib/docs/symbols/Sphere3D.html +2 -18
  167. package/distrib/docs/symbols/Spline.html +2 -18
  168. package/distrib/docs/symbols/Stepfunction.html +2 -18
  169. package/distrib/docs/symbols/Tangent.html +2 -18
  170. package/distrib/docs/symbols/TangentTo.html +2 -18
  171. package/distrib/docs/symbols/Tapemeasure.html +2 -18
  172. package/distrib/docs/symbols/Text.html +12 -26
  173. package/distrib/docs/symbols/Text3D.html +2 -18
  174. package/distrib/docs/symbols/Ticks.html +2 -18
  175. package/distrib/docs/symbols/Ticks3D.html +2 -18
  176. package/distrib/docs/symbols/Tracecurve.html +2 -18
  177. package/distrib/docs/symbols/Transformation.html +2 -18
  178. package/distrib/docs/symbols/Turtle.html +2 -18
  179. package/distrib/docs/symbols/Vectorfield.html +2 -18
  180. package/distrib/docs/symbols/Vectorfield3D.html +53 -18
  181. package/distrib/docs/symbols/View3D.html +2 -18
  182. package/distrib/docs/symbols/_global_.html +2 -18
  183. package/distrib/docs/symbols/mirrorelement.html +2 -18
  184. package/distrib/docs/symbols/src/src_3d_box3d.js.html +261 -259
  185. package/distrib/docs/symbols/src/src_3d_curve3d.js.html +205 -156
  186. package/distrib/docs/symbols/src/src_3d_linspace3d.js.html +337 -327
  187. package/distrib/docs/symbols/src/src_3d_point3d.js.html +204 -187
  188. package/distrib/docs/symbols/src/src_3d_text3d.js.html +189 -177
  189. package/distrib/docs/symbols/src/src_3d_view3d.js.html +1246 -1236
  190. package/distrib/docs/symbols/src/src_base_board.js.html +2058 -2057
  191. package/distrib/docs/symbols/src/src_base_constants.js.html +1 -1
  192. package/distrib/docs/symbols/src/src_base_coordselement.js.html +383 -274
  193. package/distrib/docs/symbols/src/src_element_sector.js.html +1 -1
  194. package/distrib/docs/symbols/src/src_math_geometry.js.html +609 -604
  195. package/distrib/docs/symbols/src/src_math_statistics.js.html +418 -411
  196. package/distrib/docs/symbols/src/src_options.js.html +504 -502
  197. package/distrib/docs/symbols/src/src_options3d.js.html +952 -944
  198. package/distrib/docs.zip +0 -0
  199. package/distrib/geogebra.min.js +1 -1
  200. package/distrib/geonext.min.js +1 -1
  201. package/distrib/intergeo.min.js +1 -1
  202. package/distrib/jsxgraph.zip +0 -0
  203. package/distrib/jsxgraphcore.js +2 -2
  204. package/distrib/jsxgraphcore.mjs +2 -2
  205. package/distrib/jsxgraphcore.mjs.map +1 -1
  206. package/distrib/jsxgraphsrc.js +15405 -16038
  207. package/distrib/jsxgraphsrc.mjs +15405 -16038
  208. package/distrib/jsxgraphsrc.mjs.map +1 -1
  209. package/distrib/sketch.min.js +1 -1
  210. package/package.json +1 -1
  211. package/src/3d/box3d.js +2 -0
  212. package/src/3d/curve3d.js +53 -4
  213. package/src/3d/linspace3d.js +17 -7
  214. package/src/3d/point3d.js +20 -3
  215. package/src/3d/text3d.js +20 -8
  216. package/src/3d/view3d.js +17 -7
  217. package/src/base/board.js +1 -0
  218. package/src/base/constants.js +1 -1
  219. package/src/base/coordselement.js +119 -10
  220. package/src/element/sector.js +1 -1
  221. package/src/index.js +0 -3
  222. package/src/math/geometry.js +27 -22
  223. package/src/math/statistics.js +29 -22
  224. package/src/options.js +8 -6
  225. package/src/options3d.js +10 -2
  226. package/src/{server → unused/server}/JXGServer.py +4 -9
  227. package/src/{server → unused/server}/JXGServerModule.py +2 -2
  228. package/src/{server → unused/server}/README.md +25 -14
  229. package/src/{server → unused/server}/RStats.py +1 -1
  230. package/src/{server → unused/server}/YahooFinance.py +4 -4
  231. package/src/{server → unused/server}/fft.py +6 -6
  232. package/src/{server → unused/server}/geoloci.py +17 -17
  233. package/src/{server → unused/server}/jxggroebner.py +22 -22
  234. package/src/index2.js +0 -105
  235. /package/src/{element → unused}/locus.js +0 -0
  236. /package/src/{server → unused/server}/JXG.py +0 -0
  237. /package/src/{server → unused/server}/jxgtestplugin.py +0 -0
  238. /package/src/{server → unused/server}/server.js +0 -0
  239. /package/src/{math → unused}/symbolic.js +0 -0
@@ -285,197 +285,214 @@
285
285
  <span class='line'>278</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
286
286
  <span class='line'>279</span>
287
287
  <span class='line'>280</span> </span><span class="WHIT"> </span><span class="NAME">update</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">drag</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">var</span><span class="WHIT"> </span><span class="NAME">c3d</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">foot</span><span class="PUNC">;</span><span class="WHIT">
288
+ <span class='line'>281</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c3d</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">foot</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">res</span><span class="PUNC">;</span><span class="WHIT">
289
289
  <span class='line'>282</span>
290
290
  <span class='line'>283</span> </span><span class="WHIT"> </span><span class="COMM">// Update is called from board.updateElements</span><span class="WHIT">
291
291
  <span class='line'>284</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT">
292
292
  <span class='line'>285</span> </span><span class="WHIT"> </span><span class="NAME">this.element2D.draggable</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT">
293
293
  <span class='line'>286</span> </span><span class="WHIT"> </span><span class="NAME">Geometry.distance</span><span class="PUNC">(</span><span class="NAME">this._c2d</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.element2D.coords.usrCoords</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT">
294
294
  <span class='line'>287</span> </span><span class="WHIT"> </span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
295
- <span class='line'>288</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.slide</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
296
- <span class='line'>289</span> </span><span class="WHIT"> </span><span class="NAME">this.coords</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.slide.projectScreenCoords</span><span class="PUNC">(</span><span class="WHIT">
297
- <span class='line'>290</span> </span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NAME">this.element2D.X</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.element2D.Y</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
298
- <span class='line'>291</span> </span><span class="WHIT"> </span><span class="NAME">this._params</span><span class="WHIT">
299
- <span class='line'>292</span> </span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
300
- <span class='line'>293</span> </span><span class="WHIT"> </span><span class="NAME">this.element2D.coords.setCoordinates</span><span class="PUNC">(</span><span class="WHIT">
301
- <span class='line'>294</span> </span><span class="WHIT"> </span><span class="NAME">Const.COORDS_BY_USER</span><span class="PUNC">,</span><span class="WHIT">
302
- <span class='line'>295</span> </span><span class="WHIT"> </span><span class="NAME">this.view.project3DTo2D</span><span class="PUNC">(</span><span class="NAME">this.coords</span><span class="PUNC">)</span><span class="WHIT">
303
- <span class='line'>296</span> </span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
304
- <span class='line'>297</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">
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.view.isVerticalDrag</span><span class="PUNC">(</span><span class="PUNC">)</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="COMM">// Drag the point in its vertical to the xy plane</span><span class="WHIT">
307
- <span class='line'>300</span> </span><span class="WHIT"> </span><span class="NAME">c3d</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.view.project2DTo3DVertical</span><span class="PUNC">(</span><span class="NAME">this.element2D</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.coords</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
308
- <span class='line'>301</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">
309
- <span class='line'>302</span> </span><span class="WHIT"> </span><span class="COMM">// Drag the point in its xy plane</span><span class="WHIT">
310
- <span class='line'>303</span> </span><span class="WHIT"> </span><span class="NAME">foot</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</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">this.coords</span><span class="PUNC">[</span><span class="NUMB">3</span><span class="PUNC">]</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
311
- <span class='line'>304</span> </span><span class="WHIT"> </span><span class="NAME">c3d</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.view.project2DTo3DPlane</span><span class="PUNC">(</span><span class="NAME">this.element2D</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">foot</span><span class="PUNC">)</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> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">c3d</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</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="PUNC">{</span><span class="WHIT">
314
- <span class='line'>307</span> </span><span class="WHIT"> </span><span class="NAME">this.coords</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.view.project3DToCube</span><span class="PUNC">(</span><span class="NAME">c3d</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="PUNC">}</span><span class="WHIT">
316
- <span class='line'>309</span> </span><span class="WHIT"> </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"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
318
- <span class='line'>311</span> </span><span class="WHIT"> </span><span class="NAME">this.updateCoords</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
319
- <span class='line'>312</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.slide</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
320
- <span class='line'>313</span> </span><span class="WHIT"> </span><span class="NAME">this.coords</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.slide.projectCoords</span><span class="PUNC">(</span><span class="WHIT">
321
- <span class='line'>314</span> </span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NAME">this.X</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.Y</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.Z</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
322
- <span class='line'>315</span> </span><span class="WHIT"> </span><span class="NAME">this._params</span><span class="WHIT">
323
- <span class='line'>316</span> </span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
324
- <span class='line'>317</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
325
- <span class='line'>318</span> </span><span class="WHIT"> </span><span class="COMM">// Update 2D point from its 3D view</span><span class="WHIT">
326
- <span class='line'>319</span> </span><span class="WHIT"> </span><span class="NAME">this.element2D.coords.setCoordinates</span><span class="PUNC">(</span><span class="WHIT">
327
- <span class='line'>320</span> </span><span class="WHIT"> </span><span class="NAME">Const.COORDS_BY_USER</span><span class="PUNC">,</span><span class="WHIT">
328
- <span class='line'>321</span> </span><span class="WHIT"> </span><span class="NAME">this.view.project3DTo2D</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.X</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.Y</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.Z</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT">
329
- <span class='line'>322</span> </span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
330
- <span class='line'>323</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
331
- <span class='line'>324</span> </span><span class="WHIT"> </span><span class="NAME">this._c2d</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.element2D.coords.usrCoords.slice</span><span class="PUNC">(</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="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">;</span><span class="WHIT">
334
- <span class='line'>327</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
335
- <span class='line'>328</span>
336
- <span class='line'>329</span> </span><span class="WHIT"> </span><span class="NAME">updateRenderer</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">
337
- <span class='line'>330</span> </span><span class="WHIT"> </span><span class="NAME">this.needsUpdate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
338
- <span class='line'>331</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">
339
- <span class='line'>332</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
340
- <span class='line'>333</span>
341
- <span class='line'>334</span> </span><span class="WHIT"> </span><span class="COMM">/**
342
- <span class='line'>335</span> * Check whether a point's homogeneous coordinate vector is zero.
343
- <span class='line'>336</span> * @returns {Boolean} True if the coordinate vector is zero; false otherwise.
344
- <span class='line'>337</span> */</span><span class="WHIT">
345
- <span class='line'>338</span> </span><span class="WHIT"> </span><span class="NAME">isIllDefined</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">
346
- <span class='line'>339</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Type.cmpArrays</span><span class="PUNC">(</span><span class="NAME">this.coords</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
347
- <span class='line'>340</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
348
- <span class='line'>341</span>
349
- <span class='line'>342</span> </span><span class="WHIT"> </span><span class="COMM">/**
350
- <span class='line'>343</span> * Calculate the distance from one point to another. If one of the points is on the plane at infinity, return positive infinity.
351
- <span class='line'>344</span> * @param {JXG.Point3D} pt The point to which the distance is calculated.
352
- <span class='line'>345</span> * @returns {Number} The distance
353
- <span class='line'>346</span> */</span><span class="WHIT">
354
- <span class='line'>347</span> </span><span class="WHIT"> </span><span class="NAME">distance</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">pt</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
355
- <span class='line'>348</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">eps_sq</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Mat.eps</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NAME">Mat.eps</span><span class="PUNC">,</span><span class="WHIT">
356
- <span class='line'>349</span> </span><span class="WHIT"> </span><span class="NAME">c_this</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.coords</span><span class="PUNC">,</span><span class="WHIT">
357
- <span class='line'>350</span> </span><span class="WHIT"> </span><span class="NAME">c_pt</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pt.coords</span><span class="PUNC">;</span><span class="WHIT">
358
- <span class='line'>351</span>
359
- <span class='line'>352</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">c_this</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NAME">c_this</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NAME">eps_sq</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">c_pt</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NAME">c_pt</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NAME">eps_sq</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
360
- <span class='line'>353</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Mat.hypot</span><span class="PUNC">(</span><span class="WHIT">
361
- <span class='line'>354</span> </span><span class="WHIT"> </span><span class="NAME">c_pt</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">c_this</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
362
- <span class='line'>355</span> </span><span class="WHIT"> </span><span class="NAME">c_pt</span><span class="PUNC">[</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">c_this</span><span class="PUNC">[</span><span class="NUMB">2</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
363
- <span class='line'>356</span> </span><span class="WHIT"> </span><span class="NAME">c_pt</span><span class="PUNC">[</span><span class="NUMB">3</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">c_this</span><span class="PUNC">[</span><span class="NUMB">3</span><span class="PUNC">]</span><span class="WHIT">
364
- <span class='line'>357</span> </span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
365
- <span class='line'>358</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">
366
- <span class='line'>359</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Number.POSITIVE_INFINITY</span><span class="PUNC">;</span><span class="WHIT">
367
- <span class='line'>360</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
368
- <span class='line'>361</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
369
- <span class='line'>362</span>
370
- <span class='line'>363</span> </span><span class="WHIT"> </span><span class="COMM">// Not yet working</span><span class="WHIT">
371
- <span class='line'>364</span> </span><span class="WHIT"> </span><span class="NAME">__evt__update3D</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">oc</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="WHIT">
372
- <span class='line'>365</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
373
- <span class='line'>366</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
374
- <span class='line'>367</span>
375
- <span class='line'>368</span> </span><span class="COMM">/**
376
- <span class='line'>369</span> * @class This element is used to provide a constructor for a 3D Point.
377
- <span class='line'>370</span> * @pseudo
378
- <span class='line'>371</span> * @description A Point3D object is defined by 3 coordinates [x,y,z].
379
- <span class='line'>372</span> * &lt;p>
380
- <span class='line'>373</span> * All numbers can also be provided as functions returning a number.
381
- <span class='line'>374</span> *
382
- <span class='line'>375</span> * @name Point3D
383
- <span class='line'>376</span> * @augments JXG.Point3D
384
- <span class='line'>377</span> * @constructor
385
- <span class='line'>378</span> * @throws {Exception} If the element cannot be constructed with the given parent
386
- <span class='line'>379</span> * objects an exception is thrown.
387
- <span class='line'>380</span> * @param {number,function_number,function_number,function} x,y,z The coordinates are given as x, y, z consisting of numbers of functions.
388
- <span class='line'>381</span> * @param {array,function} F Alternatively, the coordinates can be supplied as
389
- <span class='line'>382</span> * &lt;ul>
390
- <span class='line'>383</span> * &lt;li>array arr=[x,y,z] of length 3 consisting of numbers or
391
- <span class='line'>384</span> * &lt;li>function returning an array [x,y,z] of length 3 of numbers.
392
- <span class='line'>385</span> * &lt;/ul>
393
- <span class='line'>386</span> *
394
- <span class='line'>387</span> * @example
395
- <span class='line'>388</span> * var bound = [-5, 5];
396
- <span class='line'>389</span> * var view = board.create('view3d',
397
- <span class='line'>390</span> * [[-6, -3], [8, 8],
398
- <span class='line'>391</span> * [bound, bound, bound]],
399
- <span class='line'>392</span> * {});
400
- <span class='line'>393</span> * var p = view.create('point3d', [1, 2, 2], { name:'A', size: 5 });
401
- <span class='line'>394</span> * var q = view.create('point3d', function() { return [p.X(), p.Y(), p.Z() - 3]; }, { name:'B', size: 5, fixed: true });
402
- <span class='line'>395</span> *
403
- <span class='line'>396</span> * &lt;/pre>&lt;div id="JXGb9ee8f9f-3d2b-4f73-8221-4f82c09933f1" class="jxgbox" style="width: 300px; height: 300px;">&lt;/div>
404
- <span class='line'>397</span> * &lt;script type="text/javascript">
405
- <span class='line'>398</span> * (function() {
406
- <span class='line'>399</span> * var board = JXG.JSXGraph.initBoard('JXGb9ee8f9f-3d2b-4f73-8221-4f82c09933f1',
407
- <span class='line'>400</span> * {boundingbox: [-8, 8, 8,-8], axis: false, pan: {enabled: false}, showcopyright: false, shownavigation: false});
408
- <span class='line'>401</span> * var bound = [-5, 5];
409
- <span class='line'>402</span> * var view = board.create('view3d',
410
- <span class='line'>403</span> * [[-6, -3], [8, 8],
411
- <span class='line'>404</span> * [bound, bound, bound]],
412
- <span class='line'>405</span> * {});
413
- <span class='line'>406</span> * var p = view.create('point3d', [1, 2, 2], { name:'A', size: 5 });
414
- <span class='line'>407</span> * var q = view.create('point3d', function() { return [p.X(), p.Y(), p.Z() - 3]; }, { name:'B', size: 5 });
415
- <span class='line'>408</span> * })();
416
- <span class='line'>409</span> *
417
- <span class='line'>410</span> * &lt;/script>&lt;pre>
418
- <span class='line'>411</span> *
419
- <span class='line'>412</span> */</span><span class="WHIT">
420
- <span class='line'>413</span> </span><span class="NAME">JXG.createPoint3D</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">board</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">parents</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">attributes</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
421
- <span class='line'>414</span> </span><span class="WHIT"> </span><span class="COMM">// parents[0]: view</span><span class="WHIT">
422
- <span class='line'>415</span> </span><span class="WHIT"> </span><span class="COMM">// followed by</span><span class="WHIT">
423
- <span class='line'>416</span> </span><span class="WHIT"> </span><span class="COMM">// parents[1]: function or array</span><span class="WHIT">
424
- <span class='line'>417</span> </span><span class="WHIT"> </span><span class="COMM">// or</span><span class="WHIT">
425
- <span class='line'>418</span> </span><span class="WHIT"> </span><span class="COMM">// parents[1..3]: coordinates</span><span class="WHIT">
426
- <span class='line'>419</span>
427
- <span class='line'>420</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">view</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">parents</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
428
- <span class='line'>421</span> </span><span class="WHIT"> </span><span class="NAME">attr</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">F</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">slide</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">c2d</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">el</span><span class="PUNC">;</span><span class="WHIT">
429
- <span class='line'>422</span>
430
- <span class='line'>423</span> </span><span class="WHIT"> </span><span class="COMM">// If the last element of parents is a 3D object,</span><span class="WHIT">
431
- <span class='line'>424</span> </span><span class="WHIT"> </span><span class="COMM">// the point is a glider on that element.</span><span class="WHIT">
432
- <span class='line'>425</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">parents.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">2</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">Type.exists</span><span class="PUNC">(</span><span class="NAME">parents</span><span class="PUNC">[</span><span class="NAME">parents.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">is3D</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
433
- <span class='line'>426</span> </span><span class="WHIT"> </span><span class="NAME">slide</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">parents.pop</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
434
- <span class='line'>427</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">
435
- <span class='line'>428</span> </span><span class="WHIT"> </span><span class="NAME">slide</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">
436
- <span class='line'>429</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
437
- <span class='line'>430</span>
438
- <span class='line'>431</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">parents.length</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"> </span><span class="PUNC">{</span><span class="WHIT">
439
- <span class='line'>432</span> </span><span class="WHIT"> </span><span class="COMM">// [view, array|fun] (Array [x, y, z] | function) returning [x, y, z]</span><span class="WHIT">
440
- <span class='line'>433</span> </span><span class="WHIT"> </span><span class="NAME">F</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">parents</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
441
- <span class='line'>434</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="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">parents.length</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NUMB">4</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
442
- <span class='line'>435</span> </span><span class="WHIT"> </span><span class="COMM">// [view, x, y, z], (3 numbers | functions)</span><span class="WHIT">
443
- <span class='line'>436</span> </span><span class="WHIT"> </span><span class="NAME">F</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">parents.slice</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
444
- <span class='line'>437</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">
445
- <span class='line'>438</span> </span><span class="WHIT"> </span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Error</span><span class="PUNC">(</span><span class="WHIT">
446
- <span class='line'>439</span> </span><span class="WHIT"> </span><span class="STRN">"JSXGraph: Can't create point3d with parent types '"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
447
- <span class='line'>440</span> </span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">parents</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
448
- <span class='line'>441</span> </span><span class="WHIT"> </span><span class="STRN">"' and '"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
449
- <span class='line'>442</span> </span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">parents</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
450
- <span class='line'>443</span> </span><span class="WHIT"> </span><span class="STRN">"'."</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
451
- <span class='line'>444</span> </span><span class="WHIT"> </span><span class="STRN">"\nPossible parent types: [[x,y,z]], [x,y,z]"</span><span class="WHIT">
452
- <span class='line'>445</span> </span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
453
- <span class='line'>446</span> </span><span class="WHIT"> </span><span class="COMM">// "\nPossible parent types: [[x,y,z]], [x,y,z], [element,transformation]"); // TODO</span><span class="WHIT">
454
- <span class='line'>447</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
455
- <span class='line'>448</span>
456
- <span class='line'>449</span> </span><span class="WHIT"> </span><span class="NAME">attr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Type.copyAttributes</span><span class="PUNC">(</span><span class="NAME">attributes</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">board.options</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'point3d'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
457
- <span class='line'>450</span> </span><span class="WHIT"> </span><span class="NAME">el</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">JXG.Point3D</span><span class="PUNC">(</span><span class="NAME">view</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">F</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">slide</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">attr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
458
- <span class='line'>451</span> </span><span class="WHIT"> </span><span class="NAME">el.initCoords</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
459
- <span class='line'>452</span>
460
- <span class='line'>453</span> </span><span class="WHIT"> </span><span class="NAME">c2d</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">view.project3DTo2D</span><span class="PUNC">(</span><span class="NAME">el.coords</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
461
- <span class='line'>454</span>
462
- <span class='line'>455</span> </span><span class="WHIT"> </span><span class="NAME">attr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">el.setAttr2D</span><span class="PUNC">(</span><span class="NAME">attr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
463
- <span class='line'>456</span> </span><span class="WHIT"> </span><span class="NAME">el.element2D</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">view.create</span><span class="PUNC">(</span><span class="STRN">'point'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">c2d</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">attr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
464
- <span class='line'>457</span> </span><span class="WHIT"> </span><span class="NAME">el.element2D.view</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">view</span><span class="PUNC">;</span><span class="WHIT">
465
- <span class='line'>458</span> </span><span class="WHIT"> </span><span class="NAME">el.addChild</span><span class="PUNC">(</span><span class="NAME">el.element2D</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
466
- <span class='line'>459</span> </span><span class="WHIT"> </span><span class="NAME">el.inherits.push</span><span class="PUNC">(</span><span class="NAME">el.element2D</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
467
- <span class='line'>460</span> </span><span class="WHIT"> </span><span class="NAME">el.element2D.setParents</span><span class="PUNC">(</span><span class="NAME">el</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
468
- <span class='line'>461</span>
469
- <span class='line'>462</span> </span><span class="WHIT"> </span><span class="COMM">// if this point is a glider, record that in the update tree</span><span class="WHIT">
470
- <span class='line'>463</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">el.slide</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
471
- <span class='line'>464</span> </span><span class="WHIT"> </span><span class="NAME">el.slide.addChild</span><span class="PUNC">(</span><span class="NAME">el</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
472
- <span class='line'>465</span> </span><span class="WHIT"> </span><span class="NAME">el.setParents</span><span class="PUNC">(</span><span class="NAME">el.slide</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
473
- <span class='line'>466</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
474
- <span class='line'>467</span>
475
- <span class='line'>468</span> </span><span class="WHIT"> </span><span class="NAME">el._c2d</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">el.element2D.coords.usrCoords.slice</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// Store a copy of the coordinates to detect dragging</span><span class="WHIT">
295
+ <span class='line'>288</span>
296
+ <span class='line'>289</span> </span><span class="WHIT"> </span><span class="COMM">//</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">this.slide</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="NAME">this.coords</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.slide.projectScreenCoords</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="NAME">this.element2D.X</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.element2D.Y</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
300
+ <span class='line'>293</span> </span><span class="WHIT"> </span><span class="NAME">this._params</span><span class="WHIT">
301
+ <span class='line'>294</span> </span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
302
+ <span class='line'>295</span> </span><span class="WHIT"> </span><span class="NAME">this.element2D.coords.setCoordinates</span><span class="PUNC">(</span><span class="WHIT">
303
+ <span class='line'>296</span> </span><span class="WHIT"> </span><span class="NAME">Const.COORDS_BY_USER</span><span class="PUNC">,</span><span class="WHIT">
304
+ <span class='line'>297</span> </span><span class="WHIT"> </span><span class="NAME">this.view.project3DTo2D</span><span class="PUNC">(</span><span class="NAME">this.coords</span><span class="PUNC">)</span><span class="WHIT">
305
+ <span class='line'>298</span> </span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
306
+ <span class='line'>299</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">
307
+ <span class='line'>300</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.view.isVerticalDrag</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
308
+ <span class='line'>301</span> </span><span class="WHIT"> </span><span class="COMM">// Drag the point in its vertical to the xy plane</span><span class="WHIT">
309
+ <span class='line'>302</span> </span><span class="WHIT"> </span><span class="COMM">// If the point is outside of bbox3d,</span><span class="WHIT">
310
+ <span class='line'>303</span> </span><span class="WHIT"> </span><span class="COMM">// c3d is already corrected.</span><span class="WHIT">
311
+ <span class='line'>304</span> </span><span class="WHIT"> </span><span class="NAME">c3d</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.view.project2DTo3DVertical</span><span class="PUNC">(</span><span class="NAME">this.element2D</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.coords</span><span class="PUNC">)</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"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
313
+ <span class='line'>306</span> </span><span class="WHIT"> </span><span class="COMM">// Drag the point in its xy plane</span><span class="WHIT">
314
+ <span class='line'>307</span> </span><span class="WHIT"> </span><span class="NAME">foot</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</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">this.coords</span><span class="PUNC">[</span><span class="NUMB">3</span><span class="PUNC">]</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="NAME">c3d</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.view.project2DTo3DPlane</span><span class="PUNC">(</span><span class="NAME">this.element2D</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">foot</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
316
+ <span class='line'>309</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
317
+ <span class='line'>310</span>
318
+ <span class='line'>311</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">c3d</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</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="PUNC">{</span><span class="WHIT">
319
+ <span class='line'>312</span> </span><span class="WHIT"> </span><span class="COMM">// Check if c3d is inside of view.bbox3d</span><span class="WHIT">
320
+ <span class='line'>313</span> </span><span class="WHIT"> </span><span class="COMM">// Otherwise, the coords have to be corrected below.</span><span class="WHIT">
321
+ <span class='line'>314</span> </span><span class="WHIT"> </span><span class="NAME">res</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.view.project3DToCube</span><span class="PUNC">(</span><span class="NAME">c3d</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
322
+ <span class='line'>315</span> </span><span class="WHIT"> </span><span class="NAME">this.coords</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">res</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</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="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">res</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
325
+ <span class='line'>318</span> </span><span class="WHIT"> </span><span class="COMM">// The 3D coordinates have been corrected, now</span><span class="WHIT">
326
+ <span class='line'>319</span> </span><span class="WHIT"> </span><span class="COMM">// also correct the 2D element.</span><span class="WHIT">
327
+ <span class='line'>320</span> </span><span class="WHIT"> </span><span class="NAME">this.element2D.coords.setCoordinates</span><span class="PUNC">(</span><span class="WHIT">
328
+ <span class='line'>321</span> </span><span class="WHIT"> </span><span class="NAME">Const.COORDS_BY_USER</span><span class="PUNC">,</span><span class="WHIT">
329
+ <span class='line'>322</span> </span><span class="WHIT"> </span><span class="NAME">this.view.project3DTo2D</span><span class="PUNC">(</span><span class="NAME">this.coords</span><span class="PUNC">)</span><span class="WHIT">
330
+ <span class='line'>323</span> </span><span class="WHIT"> </span><span class="PUNC">)</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="WHIT">
332
+ <span class='line'>325</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
333
+ <span class='line'>326</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
334
+ <span class='line'>327</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">
335
+ <span class='line'>328</span> </span><span class="WHIT"> </span><span class="COMM">// Update 2D point from its 3D view</span><span class="WHIT">
336
+ <span class='line'>329</span> </span><span class="WHIT"> </span><span class="NAME">this.updateCoords</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
337
+ <span class='line'>330</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.slide</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="NAME">this.coords</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.slide.projectCoords</span><span class="PUNC">(</span><span class="WHIT">
339
+ <span class='line'>332</span> </span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NAME">this.X</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.Y</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.Z</span><span class="PUNC">(</span><span class="PUNC">)</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="NAME">this._params</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> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
343
+ <span class='line'>336</span> </span><span class="WHIT"> </span><span class="NAME">this.element2D.coords.setCoordinates</span><span class="PUNC">(</span><span class="WHIT">
344
+ <span class='line'>337</span> </span><span class="WHIT"> </span><span class="NAME">Const.COORDS_BY_USER</span><span class="PUNC">,</span><span class="WHIT">
345
+ <span class='line'>338</span> </span><span class="WHIT"> </span><span class="NAME">this.view.project3DTo2D</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.X</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.Y</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.Z</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT">
346
+ <span class='line'>339</span> </span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
347
+ <span class='line'>340</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
348
+ <span class='line'>341</span> </span><span class="WHIT"> </span><span class="NAME">this._c2d</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.element2D.coords.usrCoords.slice</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
349
+ <span class='line'>342</span>
350
+ <span class='line'>343</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">
351
+ <span class='line'>344</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
352
+ <span class='line'>345</span>
353
+ <span class='line'>346</span> </span><span class="WHIT"> </span><span class="NAME">updateRenderer</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">
354
+ <span class='line'>347</span> </span><span class="WHIT"> </span><span class="NAME">this.needsUpdate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
355
+ <span class='line'>348</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">
356
+ <span class='line'>349</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
357
+ <span class='line'>350</span>
358
+ <span class='line'>351</span> </span><span class="WHIT"> </span><span class="COMM">/**
359
+ <span class='line'>352</span> * Check whether a point's homogeneous coordinate vector is zero.
360
+ <span class='line'>353</span> * @returns {Boolean} True if the coordinate vector is zero; false otherwise.
361
+ <span class='line'>354</span> */</span><span class="WHIT">
362
+ <span class='line'>355</span> </span><span class="WHIT"> </span><span class="NAME">isIllDefined</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">
363
+ <span class='line'>356</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Type.cmpArrays</span><span class="PUNC">(</span><span class="NAME">this.coords</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
364
+ <span class='line'>357</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
365
+ <span class='line'>358</span>
366
+ <span class='line'>359</span> </span><span class="WHIT"> </span><span class="COMM">/**
367
+ <span class='line'>360</span> * Calculate the distance from one point to another. If one of the points is on the plane at infinity, return positive infinity.
368
+ <span class='line'>361</span> * @param {JXG.Point3D} pt The point to which the distance is calculated.
369
+ <span class='line'>362</span> * @returns {Number} The distance
370
+ <span class='line'>363</span> */</span><span class="WHIT">
371
+ <span class='line'>364</span> </span><span class="WHIT"> </span><span class="NAME">distance</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">pt</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
372
+ <span class='line'>365</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">eps_sq</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Mat.eps</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NAME">Mat.eps</span><span class="PUNC">,</span><span class="WHIT">
373
+ <span class='line'>366</span> </span><span class="WHIT"> </span><span class="NAME">c_this</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.coords</span><span class="PUNC">,</span><span class="WHIT">
374
+ <span class='line'>367</span> </span><span class="WHIT"> </span><span class="NAME">c_pt</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pt.coords</span><span class="PUNC">;</span><span class="WHIT">
375
+ <span class='line'>368</span>
376
+ <span class='line'>369</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">c_this</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NAME">c_this</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NAME">eps_sq</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">c_pt</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NAME">c_pt</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NAME">eps_sq</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
377
+ <span class='line'>370</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Mat.hypot</span><span class="PUNC">(</span><span class="WHIT">
378
+ <span class='line'>371</span> </span><span class="WHIT"> </span><span class="NAME">c_pt</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">c_this</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
379
+ <span class='line'>372</span> </span><span class="WHIT"> </span><span class="NAME">c_pt</span><span class="PUNC">[</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">c_this</span><span class="PUNC">[</span><span class="NUMB">2</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
380
+ <span class='line'>373</span> </span><span class="WHIT"> </span><span class="NAME">c_pt</span><span class="PUNC">[</span><span class="NUMB">3</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">c_this</span><span class="PUNC">[</span><span class="NUMB">3</span><span class="PUNC">]</span><span class="WHIT">
381
+ <span class='line'>374</span> </span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
382
+ <span class='line'>375</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">
383
+ <span class='line'>376</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Number.POSITIVE_INFINITY</span><span class="PUNC">;</span><span class="WHIT">
384
+ <span class='line'>377</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
385
+ <span class='line'>378</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
386
+ <span class='line'>379</span>
387
+ <span class='line'>380</span> </span><span class="WHIT"> </span><span class="COMM">// Not yet working</span><span class="WHIT">
388
+ <span class='line'>381</span> </span><span class="WHIT"> </span><span class="NAME">__evt__update3D</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">oc</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="WHIT">
389
+ <span class='line'>382</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
390
+ <span class='line'>383</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
391
+ <span class='line'>384</span>
392
+ <span class='line'>385</span> </span><span class="COMM">/**
393
+ <span class='line'>386</span> * @class This element is used to provide a constructor for a 3D Point.
394
+ <span class='line'>387</span> * @pseudo
395
+ <span class='line'>388</span> * @description A Point3D object is defined by 3 coordinates [x,y,z].
396
+ <span class='line'>389</span> * &lt;p>
397
+ <span class='line'>390</span> * All numbers can also be provided as functions returning a number.
398
+ <span class='line'>391</span> *
399
+ <span class='line'>392</span> * @name Point3D
400
+ <span class='line'>393</span> * @augments JXG.Point3D
401
+ <span class='line'>394</span> * @constructor
402
+ <span class='line'>395</span> * @throws {Exception} If the element cannot be constructed with the given parent
403
+ <span class='line'>396</span> * objects an exception is thrown.
404
+ <span class='line'>397</span> * @param {number,function_number,function_number,function} x,y,z The coordinates are given as x, y, z consisting of numbers of functions.
405
+ <span class='line'>398</span> * @param {array,function} F Alternatively, the coordinates can be supplied as
406
+ <span class='line'>399</span> * &lt;ul>
407
+ <span class='line'>400</span> * &lt;li>array arr=[x,y,z] of length 3 consisting of numbers or
408
+ <span class='line'>401</span> * &lt;li>function returning an array [x,y,z] of length 3 of numbers.
409
+ <span class='line'>402</span> * &lt;/ul>
410
+ <span class='line'>403</span> *
411
+ <span class='line'>404</span> * @example
412
+ <span class='line'>405</span> * var bound = [-5, 5];
413
+ <span class='line'>406</span> * var view = board.create('view3d',
414
+ <span class='line'>407</span> * [[-6, -3], [8, 8],
415
+ <span class='line'>408</span> * [bound, bound, bound]],
416
+ <span class='line'>409</span> * {});
417
+ <span class='line'>410</span> * var p = view.create('point3d', [1, 2, 2], { name:'A', size: 5 });
418
+ <span class='line'>411</span> * var q = view.create('point3d', function() { return [p.X(), p.Y(), p.Z() - 3]; }, { name:'B', size: 5, fixed: true });
419
+ <span class='line'>412</span> *
420
+ <span class='line'>413</span> * &lt;/pre>&lt;div id="JXGb9ee8f9f-3d2b-4f73-8221-4f82c09933f1" class="jxgbox" style="width: 300px; height: 300px;">&lt;/div>
421
+ <span class='line'>414</span> * &lt;script type="text/javascript">
422
+ <span class='line'>415</span> * (function() {
423
+ <span class='line'>416</span> * var board = JXG.JSXGraph.initBoard('JXGb9ee8f9f-3d2b-4f73-8221-4f82c09933f1',
424
+ <span class='line'>417</span> * {boundingbox: [-8, 8, 8,-8], axis: false, pan: {enabled: false}, showcopyright: false, shownavigation: false});
425
+ <span class='line'>418</span> * var bound = [-5, 5];
426
+ <span class='line'>419</span> * var view = board.create('view3d',
427
+ <span class='line'>420</span> * [[-6, -3], [8, 8],
428
+ <span class='line'>421</span> * [bound, bound, bound]],
429
+ <span class='line'>422</span> * {});
430
+ <span class='line'>423</span> * var p = view.create('point3d', [1, 2, 2], { name:'A', size: 5 });
431
+ <span class='line'>424</span> * var q = view.create('point3d', function() { return [p.X(), p.Y(), p.Z() - 3]; }, { name:'B', size: 5 });
432
+ <span class='line'>425</span> * })();
433
+ <span class='line'>426</span> *
434
+ <span class='line'>427</span> * &lt;/script>&lt;pre>
435
+ <span class='line'>428</span> *
436
+ <span class='line'>429</span> */</span><span class="WHIT">
437
+ <span class='line'>430</span> </span><span class="NAME">JXG.createPoint3D</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">board</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">parents</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">attributes</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
438
+ <span class='line'>431</span> </span><span class="WHIT"> </span><span class="COMM">// parents[0]: view</span><span class="WHIT">
439
+ <span class='line'>432</span> </span><span class="WHIT"> </span><span class="COMM">// followed by</span><span class="WHIT">
440
+ <span class='line'>433</span> </span><span class="WHIT"> </span><span class="COMM">// parents[1]: function or array</span><span class="WHIT">
441
+ <span class='line'>434</span> </span><span class="WHIT"> </span><span class="COMM">// or</span><span class="WHIT">
442
+ <span class='line'>435</span> </span><span class="WHIT"> </span><span class="COMM">// parents[1..3]: coordinates</span><span class="WHIT">
443
+ <span class='line'>436</span>
444
+ <span class='line'>437</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">view</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">parents</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
445
+ <span class='line'>438</span> </span><span class="WHIT"> </span><span class="NAME">attr</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">F</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">slide</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">c2d</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">el</span><span class="PUNC">;</span><span class="WHIT">
446
+ <span class='line'>439</span>
447
+ <span class='line'>440</span> </span><span class="WHIT"> </span><span class="COMM">// If the last element of parents is a 3D object,</span><span class="WHIT">
448
+ <span class='line'>441</span> </span><span class="WHIT"> </span><span class="COMM">// the point is a glider on that element.</span><span class="WHIT">
449
+ <span class='line'>442</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">parents.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">2</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">Type.exists</span><span class="PUNC">(</span><span class="NAME">parents</span><span class="PUNC">[</span><span class="NAME">parents.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">is3D</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
450
+ <span class='line'>443</span> </span><span class="WHIT"> </span><span class="NAME">slide</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">parents.pop</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
451
+ <span class='line'>444</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">
452
+ <span class='line'>445</span> </span><span class="WHIT"> </span><span class="NAME">slide</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">
453
+ <span class='line'>446</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
454
+ <span class='line'>447</span>
455
+ <span class='line'>448</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">parents.length</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"> </span><span class="PUNC">{</span><span class="WHIT">
456
+ <span class='line'>449</span> </span><span class="WHIT"> </span><span class="COMM">// [view, array|fun] (Array [x, y, z] | function) returning [x, y, z]</span><span class="WHIT">
457
+ <span class='line'>450</span> </span><span class="WHIT"> </span><span class="NAME">F</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">parents</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
458
+ <span class='line'>451</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="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">parents.length</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NUMB">4</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
459
+ <span class='line'>452</span> </span><span class="WHIT"> </span><span class="COMM">// [view, x, y, z], (3 numbers | functions)</span><span class="WHIT">
460
+ <span class='line'>453</span> </span><span class="WHIT"> </span><span class="NAME">F</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">parents.slice</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
461
+ <span class='line'>454</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">
462
+ <span class='line'>455</span> </span><span class="WHIT"> </span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Error</span><span class="PUNC">(</span><span class="WHIT">
463
+ <span class='line'>456</span> </span><span class="WHIT"> </span><span class="STRN">"JSXGraph: Can't create point3d with parent types '"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
464
+ <span class='line'>457</span> </span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">parents</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
465
+ <span class='line'>458</span> </span><span class="WHIT"> </span><span class="STRN">"' and '"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
466
+ <span class='line'>459</span> </span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">parents</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
467
+ <span class='line'>460</span> </span><span class="WHIT"> </span><span class="STRN">"'."</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
468
+ <span class='line'>461</span> </span><span class="WHIT"> </span><span class="STRN">"\nPossible parent types: [[x,y,z]], [x,y,z]"</span><span class="WHIT">
469
+ <span class='line'>462</span> </span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
470
+ <span class='line'>463</span> </span><span class="WHIT"> </span><span class="COMM">// "\nPossible parent types: [[x,y,z]], [x,y,z], [element,transformation]"); // TODO</span><span class="WHIT">
471
+ <span class='line'>464</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
472
+ <span class='line'>465</span>
473
+ <span class='line'>466</span> </span><span class="WHIT"> </span><span class="NAME">attr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Type.copyAttributes</span><span class="PUNC">(</span><span class="NAME">attributes</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">board.options</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'point3d'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
474
+ <span class='line'>467</span> </span><span class="WHIT"> </span><span class="NAME">el</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">JXG.Point3D</span><span class="PUNC">(</span><span class="NAME">view</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">F</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">slide</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">attr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
475
+ <span class='line'>468</span> </span><span class="WHIT"> </span><span class="NAME">el.initCoords</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
476
476
  <span class='line'>469</span>
477
- <span class='line'>470</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">el</span><span class="PUNC">;</span><span class="WHIT">
478
- <span class='line'>471</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
479
- <span class='line'>472</span>
480
- <span class='line'>473</span> </span><span class="NAME">JXG.registerElement</span><span class="PUNC">(</span><span class="STRN">"point3d"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">JXG.createPoint3D</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
481
- <span class='line'>474</span> </span></pre></body></html>
477
+ <span class='line'>470</span> </span><span class="WHIT"> </span><span class="NAME">c2d</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">view.project3DTo2D</span><span class="PUNC">(</span><span class="NAME">el.coords</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
478
+ <span class='line'>471</span>
479
+ <span class='line'>472</span> </span><span class="WHIT"> </span><span class="NAME">attr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">el.setAttr2D</span><span class="PUNC">(</span><span class="NAME">attr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
480
+ <span class='line'>473</span> </span><span class="WHIT"> </span><span class="NAME">el.element2D</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">view.create</span><span class="PUNC">(</span><span class="STRN">'point'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">c2d</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">attr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
481
+ <span class='line'>474</span> </span><span class="WHIT"> </span><span class="NAME">el.element2D.view</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">view</span><span class="PUNC">;</span><span class="WHIT">
482
+ <span class='line'>475</span> </span><span class="WHIT"> </span><span class="NAME">el.addChild</span><span class="PUNC">(</span><span class="NAME">el.element2D</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
483
+ <span class='line'>476</span> </span><span class="WHIT"> </span><span class="NAME">el.inherits.push</span><span class="PUNC">(</span><span class="NAME">el.element2D</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
484
+ <span class='line'>477</span> </span><span class="WHIT"> </span><span class="NAME">el.element2D.setParents</span><span class="PUNC">(</span><span class="NAME">el</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
485
+ <span class='line'>478</span>
486
+ <span class='line'>479</span> </span><span class="WHIT"> </span><span class="COMM">// if this point is a glider, record that in the update tree</span><span class="WHIT">
487
+ <span class='line'>480</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">el.slide</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
488
+ <span class='line'>481</span> </span><span class="WHIT"> </span><span class="NAME">el.slide.addChild</span><span class="PUNC">(</span><span class="NAME">el</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
489
+ <span class='line'>482</span> </span><span class="WHIT"> </span><span class="NAME">el.setParents</span><span class="PUNC">(</span><span class="NAME">el.slide</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
490
+ <span class='line'>483</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
491
+ <span class='line'>484</span>
492
+ <span class='line'>485</span> </span><span class="WHIT"> </span><span class="NAME">el._c2d</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">el.element2D.coords.usrCoords.slice</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// Store a copy of the coordinates to detect dragging</span><span class="WHIT">
493
+ <span class='line'>486</span>
494
+ <span class='line'>487</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">el</span><span class="PUNC">;</span><span class="WHIT">
495
+ <span class='line'>488</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
496
+ <span class='line'>489</span>
497
+ <span class='line'>490</span> </span><span class="NAME">JXG.registerElement</span><span class="PUNC">(</span><span class="STRN">"point3d"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">JXG.createPoint3D</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
498
+ <span class='line'>491</span> </span></pre></body></html>