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,186 +285,198 @@
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
- <span class='line'>283</span> </span><span class="WHIT"> </span><span class="COMM">// Update is called from board.updateElements</span><span class="WHIT">
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
- <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
- <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
- <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="NAME">slice</span><span class="PUNC">(</span><span class="NUMB">1</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="NAME">this.element2D.prepareUpdate</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">update</span><span class="PUNC">(</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="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">
333
- <span class='line'>326</span>
334
- <span class='line'>327</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">
335
- <span class='line'>328</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
336
- <span class='line'>329</span>
337
- <span class='line'>330</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">
338
- <span class='line'>331</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">
339
- <span class='line'>332</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">
340
- <span class='line'>333</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
341
- <span class='line'>334</span>
342
- <span class='line'>335</span> </span><span class="WHIT"> </span><span class="COMM">/**
343
- <span class='line'>336</span> * Check whether a point's homogeneous coordinate vector is zero.
344
- <span class='line'>337</span> * @returns {Boolean} True if the coordinate vector is zero; false otherwise.
345
- <span class='line'>338</span> */</span><span class="WHIT">
346
- <span class='line'>339</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">
347
- <span class='line'>340</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">
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
+ <span class='line'>284</span> </span><span class="WHIT"> </span><span class="COMM">// See Point3D.update() for the logic.</span><span class="WHIT">
292
+ <span class='line'>285</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT">
293
+ <span class='line'>286</span> </span><span class="WHIT"> </span><span class="NAME">this.element2D.draggable</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT">
294
+ <span class='line'>287</span> </span><span class="WHIT"> </span><span class="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">
295
+ <span class='line'>288</span> </span><span class="WHIT"> </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="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">
297
+ <span class='line'>290</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">
298
+ <span class='line'>291</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">
299
+ <span class='line'>292</span> </span><span class="WHIT"> </span><span class="NAME">this._params</span><span class="WHIT">
300
+ <span class='line'>293</span> </span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
301
+ <span class='line'>294</span> </span><span class="WHIT"> </span><span class="NAME">this.element2D.coords.setCoordinates</span><span class="PUNC">(</span><span class="WHIT">
302
+ <span class='line'>295</span> </span><span class="WHIT"> </span><span class="NAME">Const.COORDS_BY_USER</span><span class="PUNC">,</span><span class="WHIT">
303
+ <span class='line'>296</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">
304
+ <span class='line'>297</span> </span><span class="WHIT"> </span><span class="PUNC">)</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="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
306
+ <span class='line'>299</span> </span><span class="WHIT"> </span><span class="KEYW">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">
307
+ <span class='line'>300</span> </span><span class="WHIT"> </span><span class="COMM">// Drag the text in its vertical to the xy plane</span><span class="WHIT">
308
+ <span class='line'>301</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">
309
+ <span class='line'>302</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">
310
+ <span class='line'>303</span> </span><span class="WHIT"> </span><span class="COMM">// Drag the text in its xy plane</span><span class="WHIT">
311
+ <span class='line'>304</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">
312
+ <span class='line'>305</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">
313
+ <span class='line'>306</span> </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="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">
315
+ <span class='line'>308</span> </span><span class="WHIT"> </span><span class="COMM">// Check if c3d is inside of view.bbox3d</span><span class="WHIT">
316
+ <span class='line'>309</span> </span><span class="WHIT"> </span><span class="COMM">// Otherwise, the coords have to be corrected below.</span><span class="WHIT">
317
+ <span class='line'>310</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">
318
+ <span class='line'>311</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">
319
+ <span class='line'>312</span>
320
+ <span class='line'>313</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">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">
321
+ <span class='line'>314</span> </span><span class="WHIT"> </span><span class="COMM">// The 3D coordinates have been corrected, now</span><span class="WHIT">
322
+ <span class='line'>315</span> </span><span class="WHIT"> </span><span class="COMM">// also correct the 2D element.</span><span class="WHIT">
323
+ <span class='line'>316</span> </span><span class="WHIT"> </span><span class="NAME">this.element2D.coords.setCoordinates</span><span class="PUNC">(</span><span class="WHIT">
324
+ <span class='line'>317</span> </span><span class="WHIT"> </span><span class="NAME">Const.COORDS_BY_USER</span><span class="PUNC">,</span><span class="WHIT">
325
+ <span class='line'>318</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">
326
+ <span class='line'>319</span> </span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
327
+ <span class='line'>320</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
328
+ <span class='line'>321</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
329
+ <span class='line'>322</span> </span><span class="WHIT"> </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"> </span><span class="KEYW">else</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.updateCoords</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
332
+ <span class='line'>325</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">
333
+ <span class='line'>326</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">
334
+ <span class='line'>327</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">
335
+ <span class='line'>328</span> </span><span class="WHIT"> </span><span class="NAME">this._params</span><span class="WHIT">
336
+ <span class='line'>329</span> </span><span class="WHIT"> </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="PUNC">}</span><span class="WHIT">
338
+ <span class='line'>331</span> </span><span class="WHIT"> </span><span class="COMM">// Update 2D text from its 3D view</span><span class="WHIT">
339
+ <span class='line'>332</span> </span><span class="WHIT"> </span><span class="NAME">this.element2D.coords.setCoordinates</span><span class="PUNC">(</span><span class="WHIT">
340
+ <span class='line'>333</span> </span><span class="WHIT"> </span><span class="NAME">Const.COORDS_BY_USER</span><span class="PUNC">,</span><span class="WHIT">
341
+ <span class='line'>334</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="NAME">slice</span><span class="PUNC">(</span><span class="NUMB">1</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="PUNC">;</span><span class="WHIT">
343
+ <span class='line'>336</span> </span><span class="WHIT"> </span><span class="NAME">this.element2D.prepareUpdate</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">update</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
344
+ <span class='line'>337</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
345
+ <span class='line'>338</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">
346
+ <span class='line'>339</span>
347
+ <span class='line'>340</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">
348
348
  <span class='line'>341</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
349
349
  <span class='line'>342</span>
350
- <span class='line'>343</span> </span><span class="WHIT"> </span><span class="COMM">// Not yet working</span><span class="WHIT">
351
- <span class='line'>344</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">
352
- <span class='line'>345</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
353
- <span class='line'>346</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
350
+ <span class='line'>343</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">
351
+ <span class='line'>344</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">
352
+ <span class='line'>345</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">
353
+ <span class='line'>346</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
354
354
  <span class='line'>347</span>
355
- <span class='line'>348</span> </span><span class="COMM">/**
356
- <span class='line'>349</span> * @class This element is used to provide a constructor for a 3D Text.
357
- <span class='line'>350</span> * @pseudo
358
- <span class='line'>351</span> * @description A Text3D object is defined by 3 coordinates [x, y, z, text] or an array / function for the position of the text
359
- <span class='line'>352</span> * and a string or function defining the text.
360
- <span class='line'>353</span> * &lt;p>
361
- <span class='line'>354</span> * That is, all numbers can also be provided as functions returning a number.
362
- <span class='line'>355</span> * &lt;p>
363
- <span class='line'>356</span> * At the time being, text display is independent from the camera view.
364
- <span class='line'>357</span> *
365
- <span class='line'>358</span> * @name Text3D
366
- <span class='line'>359</span> * @augments JXG.Text3D
367
- <span class='line'>360</span> * @augments Text
368
- <span class='line'>361</span> * @constructor
369
- <span class='line'>362</span> * @throws {Exception} If the element cannot be constructed with the given parent
370
- <span class='line'>363</span> * objects an exception is thrown.
371
- <span class='line'>364</span> * @param {number,function_number,function_number,function_String,function} x,y,z,txt The coordinates are given as x, y, z consisting of numbers of functions and the text.
372
- <span class='line'>365</span> * @param {array,function_string} F,txt Alternatively, the coordinates can be supplied as array or function returning an array.
373
- <span class='line'>366</span> *
374
- <span class='line'>367</span> * @example
375
- <span class='line'>368</span> * var bound = [-4, 6];
376
- <span class='line'>369</span> * var view = board.create('view3d',
377
- <span class='line'>370</span> * [[-4, -3], [8, 8],
378
- <span class='line'>371</span> * [bound, bound, bound]],
379
- <span class='line'>372</span> * {
380
- <span class='line'>373</span> * projection: 'central'
381
- <span class='line'>374</span> * });
382
- <span class='line'>375</span> *
383
- <span class='line'>376</span> * var txt1 = view.create('text3d', [[1, 2, 1], 'hello'], {
384
- <span class='line'>377</span> * fontSize: 20,
385
- <span class='line'>378</span> * });
355
+ <span class='line'>348</span> </span><span class="WHIT"> </span><span class="COMM">/**
356
+ <span class='line'>349</span> * Check whether a point's homogeneous coordinate vector is zero.
357
+ <span class='line'>350</span> * @returns {Boolean} True if the coordinate vector is zero; false otherwise.
358
+ <span class='line'>351</span> */</span><span class="WHIT">
359
+ <span class='line'>352</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">
360
+ <span class='line'>353</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">
361
+ <span class='line'>354</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
362
+ <span class='line'>355</span>
363
+ <span class='line'>356</span> </span><span class="WHIT"> </span><span class="COMM">// Not yet working</span><span class="WHIT">
364
+ <span class='line'>357</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">
365
+ <span class='line'>358</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
366
+ <span class='line'>359</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
367
+ <span class='line'>360</span>
368
+ <span class='line'>361</span> </span><span class="COMM">/**
369
+ <span class='line'>362</span> * @class This element is used to provide a constructor for a 3D Text.
370
+ <span class='line'>363</span> * @pseudo
371
+ <span class='line'>364</span> * @description A Text3D object is defined by 3 coordinates [x, y, z, text] or an array / function for the position of the text
372
+ <span class='line'>365</span> * and a string or function defining the text.
373
+ <span class='line'>366</span> * &lt;p>
374
+ <span class='line'>367</span> * That is, all numbers can also be provided as functions returning a number.
375
+ <span class='line'>368</span> * &lt;p>
376
+ <span class='line'>369</span> * At the time being, text display is independent from the camera view.
377
+ <span class='line'>370</span> *
378
+ <span class='line'>371</span> * @name Text3D
379
+ <span class='line'>372</span> * @augments JXG.Text3D
380
+ <span class='line'>373</span> * @augments Text
381
+ <span class='line'>374</span> * @constructor
382
+ <span class='line'>375</span> * @throws {Exception} If the element cannot be constructed with the given parent
383
+ <span class='line'>376</span> * objects an exception is thrown.
384
+ <span class='line'>377</span> * @param {number,function_number,function_number,function_String,function} x,y,z,txt The coordinates are given as x, y, z consisting of numbers of functions and the text.
385
+ <span class='line'>378</span> * @param {array,function_string} F,txt Alternatively, the coordinates can be supplied as array or function returning an array.
386
386
  <span class='line'>379</span> *
387
- <span class='line'>380</span> * &lt;/pre>&lt;div id="JXGb61d7c50-617a-4bed-9a45-13c949f90e94" class="jxgbox" style="width: 300px; height: 300px;">&lt;/div>
388
- <span class='line'>381</span> * &lt;script type="text/javascript">
389
- <span class='line'>382</span> * (function() {
390
- <span class='line'>383</span> * var board = JXG.JSXGraph.initBoard('JXGb61d7c50-617a-4bed-9a45-13c949f90e94',
391
- <span class='line'>384</span> * {boundingbox: [-8, 8, 8,-8], axis: false, pan: {enabled: false}, showcopyright: false, shownavigation: false});
392
- <span class='line'>385</span> * var bound = [-4, 6];
393
- <span class='line'>386</span> * var view = board.create('view3d',
394
- <span class='line'>387</span> * [[-4, -3], [8, 8],
395
- <span class='line'>388</span> * [bound, bound, bound]],
396
- <span class='line'>389</span> * {
397
- <span class='line'>390</span> * projection: 'central'
398
- <span class='line'>391</span> * });
387
+ <span class='line'>380</span> * @example
388
+ <span class='line'>381</span> * var bound = [-4, 6];
389
+ <span class='line'>382</span> * var view = board.create('view3d',
390
+ <span class='line'>383</span> * [[-4, -3], [8, 8],
391
+ <span class='line'>384</span> * [bound, bound, bound]],
392
+ <span class='line'>385</span> * {
393
+ <span class='line'>386</span> * projection: 'central'
394
+ <span class='line'>387</span> * });
395
+ <span class='line'>388</span> *
396
+ <span class='line'>389</span> * var txt1 = view.create('text3d', [[1, 2, 1], 'hello'], {
397
+ <span class='line'>390</span> * fontSize: 20,
398
+ <span class='line'>391</span> * });
399
399
  <span class='line'>392</span> *
400
- <span class='line'>393</span> * var txt1 = view.create('text3d', [[1, 2, 1], 'hello'], {
401
- <span class='line'>394</span> * fontSize: 20,
402
- <span class='line'>395</span> * });
403
- <span class='line'>396</span> *
404
- <span class='line'>397</span> * })();
405
- <span class='line'>398</span> *
406
- <span class='line'>399</span> * &lt;/script>&lt;pre>
407
- <span class='line'>400</span> *
408
- <span class='line'>401</span> */</span><span class="WHIT">
409
- <span class='line'>402</span> </span><span class="NAME">JXG.createText3D</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">
410
- <span class='line'>403</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">
411
- <span class='line'>404</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">
412
- <span class='line'>405</span> </span><span class="WHIT"> </span><span class="NAME">text</span><span class="PUNC">,</span><span class="WHIT">
413
- <span class='line'>406</span> </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">
414
- <span class='line'>407</span>
415
- <span class='line'>408</span> </span><span class="WHIT"> </span><span class="COMM">// If the last element of parents is a 3D object,</span><span class="WHIT">
416
- <span class='line'>409</span> </span><span class="WHIT"> </span><span class="COMM">// the point is a glider on that element.</span><span class="WHIT">
417
- <span class='line'>410</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">3</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">
418
- <span class='line'>411</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">
419
- <span class='line'>412</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">
420
- <span class='line'>413</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">
421
- <span class='line'>414</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
422
- <span class='line'>415</span>
423
- <span class='line'>416</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">3</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
424
- <span class='line'>417</span> </span><span class="WHIT"> </span><span class="COMM">// [view, array|fun, text] (Array [x, y, z] | function) returning [x, y, z] and string | function</span><span class="WHIT">
425
- <span class='line'>418</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">
426
- <span class='line'>419</span> </span><span class="WHIT"> </span><span class="NAME">text</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">2</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
427
- <span class='line'>420</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">5</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
428
- <span class='line'>421</span> </span><span class="WHIT"> </span><span class="COMM">// [view, x, y, z, text], (3 numbers | functions) sand string | function</span><span class="WHIT">
429
- <span class='line'>422</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="WHIT"> </span><span class="NUMB">4</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
430
- <span class='line'>423</span> </span><span class="WHIT"> </span><span class="NAME">text</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">4</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
431
- <span class='line'>424</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">
432
- <span class='line'>425</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">
433
- <span class='line'>426</span> </span><span class="WHIT"> </span><span class="STRN">"JSXGraph: Can't create text3d with parent types '"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
434
- <span class='line'>427</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">
435
- <span class='line'>428</span> </span><span class="WHIT"> </span><span class="STRN">"' and '"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
436
- <span class='line'>429</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">
437
- <span class='line'>430</span> </span><span class="WHIT"> </span><span class="STRN">"'."</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="STRN">"\nPossible parent types: [[x,y,z], text], [x,y,z, text]"</span><span class="WHIT">
439
- <span class='line'>432</span> </span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
440
- <span class='line'>433</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">
441
- <span class='line'>434</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
442
- <span class='line'>435</span>
443
- <span class='line'>436</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">'text3d'</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="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.Text3D</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">text</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">
445
- <span class='line'>438</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">
446
- <span class='line'>439</span>
447
- <span class='line'>440</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">
448
- <span class='line'>441</span>
449
- <span class='line'>442</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">
450
- <span class='line'>443</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">'text'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NAME">c2d</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">c2d</span><span class="PUNC">[</span><span class="NUMB">2</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">text</span><span class="PUNC">]</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">
451
- <span class='line'>444</span>
452
- <span class='line'>445</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">
453
- <span class='line'>446</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">
454
- <span class='line'>447</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">
455
- <span class='line'>448</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">
456
- <span class='line'>449</span>
457
- <span class='line'>450</span>
458
- <span class='line'>451</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">
459
- <span class='line'>452</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">
460
- <span class='line'>453</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">
461
- <span class='line'>454</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">
462
- <span class='line'>455</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
463
- <span class='line'>456</span>
464
- <span class='line'>457</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">
465
- <span class='line'>458</span>
466
- <span class='line'>459</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">
467
- <span class='line'>460</span> </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="NAME">JXG.registerElement</span><span class="PUNC">(</span><span class="STRN">"text3d"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">JXG.createText3D</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
470
- <span class='line'>463</span> </span></pre></body></html>
400
+ <span class='line'>393</span> * &lt;/pre>&lt;div id="JXGb61d7c50-617a-4bed-9a45-13c949f90e94" class="jxgbox" style="width: 300px; height: 300px;">&lt;/div>
401
+ <span class='line'>394</span> * &lt;script type="text/javascript">
402
+ <span class='line'>395</span> * (function() {
403
+ <span class='line'>396</span> * var board = JXG.JSXGraph.initBoard('JXGb61d7c50-617a-4bed-9a45-13c949f90e94',
404
+ <span class='line'>397</span> * {boundingbox: [-8, 8, 8,-8], axis: false, pan: {enabled: false}, showcopyright: false, shownavigation: false});
405
+ <span class='line'>398</span> * var bound = [-4, 6];
406
+ <span class='line'>399</span> * var view = board.create('view3d',
407
+ <span class='line'>400</span> * [[-4, -3], [8, 8],
408
+ <span class='line'>401</span> * [bound, bound, bound]],
409
+ <span class='line'>402</span> * {
410
+ <span class='line'>403</span> * projection: 'central'
411
+ <span class='line'>404</span> * });
412
+ <span class='line'>405</span> *
413
+ <span class='line'>406</span> * var txt1 = view.create('text3d', [[1, 2, 1], 'hello'], {
414
+ <span class='line'>407</span> * fontSize: 20,
415
+ <span class='line'>408</span> * });
416
+ <span class='line'>409</span> *
417
+ <span class='line'>410</span> * })();
418
+ <span class='line'>411</span> *
419
+ <span class='line'>412</span> * &lt;/script>&lt;pre>
420
+ <span class='line'>413</span> *
421
+ <span class='line'>414</span> */</span><span class="WHIT">
422
+ <span class='line'>415</span> </span><span class="NAME">JXG.createText3D</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">
423
+ <span class='line'>416</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">
424
+ <span class='line'>417</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">
425
+ <span class='line'>418</span> </span><span class="WHIT"> </span><span class="NAME">text</span><span class="PUNC">,</span><span class="WHIT">
426
+ <span class='line'>419</span> </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">
427
+ <span class='line'>420</span>
428
+ <span class='line'>421</span> </span><span class="WHIT"> </span><span class="COMM">// If the last element of parents is a 3D object,</span><span class="WHIT">
429
+ <span class='line'>422</span> </span><span class="WHIT"> </span><span class="COMM">// the point is a glider on that element.</span><span class="WHIT">
430
+ <span class='line'>423</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">3</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">
431
+ <span class='line'>424</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">
432
+ <span class='line'>425</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">
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="KEYW">null</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">
435
+ <span class='line'>428</span>
436
+ <span class='line'>429</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">3</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
437
+ <span class='line'>430</span> </span><span class="WHIT"> </span><span class="COMM">// [view, array|fun, text] (Array [x, y, z] | function) returning [x, y, z] and string | function</span><span class="WHIT">
438
+ <span class='line'>431</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">
439
+ <span class='line'>432</span> </span><span class="WHIT"> </span><span class="NAME">text</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">2</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
440
+ <span class='line'>433</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">5</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
441
+ <span class='line'>434</span> </span><span class="WHIT"> </span><span class="COMM">// [view, x, y, z, text], (3 numbers | functions) sand string | function</span><span class="WHIT">
442
+ <span class='line'>435</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="WHIT"> </span><span class="NUMB">4</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
443
+ <span class='line'>436</span> </span><span class="WHIT"> </span><span class="NAME">text</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">4</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 text3d 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], text], [x,y,z, text]"</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">'text3d'</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.Text3D</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">text</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">'text'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NAME">c2d</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">c2d</span><span class="PUNC">[</span><span class="NUMB">2</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">text</span><span class="PUNC">]</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>
465
+ <span class='line'>458</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">
466
+ <span class='line'>459</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">
467
+ <span class='line'>460</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">
468
+ <span class='line'>461</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">
469
+ <span class='line'>462</span>
470
+ <span class='line'>463</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">
471
+ <span class='line'>464</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">
472
+ <span class='line'>465</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">
473
+ <span class='line'>466</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">
474
+ <span class='line'>467</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
475
+ <span class='line'>468</span>
476
+ <span class='line'>469</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">
477
+ <span class='line'>470</span>
478
+ <span class='line'>471</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">
479
+ <span class='line'>472</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
480
+ <span class='line'>473</span>
481
+ <span class='line'>474</span> </span><span class="NAME">JXG.registerElement</span><span class="PUNC">(</span><span class="STRN">"text3d"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">JXG.createText3D</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
482
+ <span class='line'>475</span> </span></pre></body></html>