jsxgraph 1.9.0 → 1.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +49 -0
- package/distrib/docs.zip +0 -0
- package/distrib/geogebra.min.js +2 -2
- package/distrib/geonext.min.js +3 -3
- package/distrib/index.d.ts +1 -1
- package/distrib/intergeo.min.js +2 -2
- package/distrib/jsxgraph.css +1 -1
- package/distrib/jsxgraph.zip +0 -0
- package/distrib/jsxgraphcore.js +3 -3
- package/distrib/jsxgraphcore.mjs +3 -3
- package/distrib/jsxgraphcore.mjs.map +1 -1
- package/distrib/jsxgraphsrc.js +7680 -6865
- package/distrib/jsxgraphsrc.mjs +7964 -7150
- package/distrib/jsxgraphsrc.mjs.map +1 -1
- package/distrib/sketch.min.js +3 -3
- package/distrib/themes/mono_thin.js +1 -1
- package/package.json +4 -4
- package/src/3d/box3d.js +6 -3
- package/src/3d/circle3d.js +11 -10
- package/src/3d/curve3d.js +3 -1
- package/src/3d/element3d.js +1 -1
- package/src/3d/linspace3d.js +20 -57
- package/src/3d/point3d.js +7 -1
- package/src/3d/polygon3d.js +2 -1
- package/src/3d/sphere3d.js +48 -44
- package/src/3d/surface3d.js +2 -1
- package/src/3d/view3d.js +1505 -1068
- package/src/base/board.js +177 -56
- package/src/base/chart.js +5 -6
- package/src/base/circle.js +4 -2
- package/src/base/composition.js +1 -1
- package/src/base/constants.js +2 -2
- package/src/base/coords.js +1 -1
- package/src/base/coordselement.js +1 -1
- package/src/base/curve.js +2 -1
- package/src/base/element.js +39 -31
- package/src/base/foreignobject.js +1 -1
- package/src/base/group.js +1 -1
- package/src/base/image.js +1 -1
- package/src/base/line.js +94 -106
- package/src/base/point.js +1 -1
- package/src/base/polygon.js +2 -2
- package/src/base/text.js +6 -2
- package/src/base/ticks.js +1 -1
- package/src/base/transformation.js +1 -1
- package/src/base/turtle.js +1 -1
- package/src/element/arc.js +1 -1
- package/src/element/button.js +63 -13
- package/src/element/checkbox.js +7 -3
- package/src/element/comb.js +1 -1
- package/src/element/composition.js +1 -1
- package/src/element/conic.js +1 -1
- package/src/element/grid.js +7 -7
- package/src/element/input.js +10 -7
- package/src/element/locus.js +1 -1
- package/src/element/measure.js +1 -1
- package/src/element/sector.js +1 -1
- package/src/element/slider.js +43 -40
- package/src/element/slopetriangle.js +1 -1
- package/src/element/smartlabel.js +1 -1
- package/src/element/vectorfield.js +1 -1
- package/src/index.d.ts +1 -1
- package/src/jsxgraph.js +6 -4
- package/src/jxg.js +1 -1
- package/src/math/bqdt.js +1 -1
- package/src/math/clip.js +1 -1
- package/src/math/complex.js +1 -1
- package/src/math/extrapolate.js +1 -1
- package/src/math/geometry.js +87 -65
- package/src/math/ia.js +12 -12
- package/src/math/implicitplot.js +1 -1
- package/src/math/math.js +48 -6
- package/src/math/metapost.js +1 -1
- package/src/math/nlp.js +1 -1
- package/src/math/numerics.js +1 -1
- package/src/math/plot.js +25 -26
- package/src/math/poly.js +1 -1
- package/src/math/probfuncs.js +1 -1
- package/src/math/qdt.js +1 -1
- package/src/math/statistics.js +1 -1
- package/src/math/symbolic.js +1 -1
- package/src/options.js +49 -4
- package/src/options3d.js +82 -5
- package/src/parser/datasource.js +1 -1
- package/src/parser/geonext.js +1 -1
- package/src/parser/jessiecode.js +12 -11
- package/src/parser/jessiescript.js +1 -1
- package/src/parser/prefix.js +9 -2
- package/src/reader/cinderella.js +1 -1
- package/src/reader/file.js +1 -1
- package/src/reader/geogebra.js +1 -1
- package/src/reader/geonext.js +1 -1
- package/src/reader/graph.js +1 -1
- package/src/reader/intergeo.js +1 -1
- package/src/reader/sketch.js +107 -1
- package/src/renderer/abstract.js +1 -1
- package/src/renderer/canvas.js +1 -1
- package/src/renderer/no.js +1 -1
- package/src/renderer/svg.js +17 -7
- package/src/renderer/vml.js +1 -1
- package/src/server/server.js +1 -1
- package/src/themes/mono_thin.js +1 -1
- package/src/unused/bst.js +1 -1
- package/src/unused/heap.js +1 -1
- package/src/utils/base64.js +1 -1
- package/src/utils/color.js +1 -1
- package/src/utils/dump.js +1 -1
- package/src/utils/env.js +3 -3
- package/src/utils/event.js +1 -1
- package/src/utils/expect.js +1 -1
- package/src/utils/type.js +30 -18
- package/src/utils/xml.js +1 -1
- package/src/utils/zip.js +1 -1
package/src/math/math.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
Copyright 2008-
|
|
2
|
+
Copyright 2008-2024
|
|
3
3
|
Matthias Ehmann,
|
|
4
4
|
Michael Gerhaeuser,
|
|
5
5
|
Carsten Miller,
|
|
@@ -109,6 +109,48 @@ JXG.Math = {
|
|
|
109
109
|
return a - Math.floor(a / m) * m;
|
|
110
110
|
},
|
|
111
111
|
|
|
112
|
+
/**
|
|
113
|
+
* Translate <code>x</code> into the interval <code>[a, b)</code> by adding
|
|
114
|
+
* a multiple of <code>b - a</code>.
|
|
115
|
+
* @param {Number} x
|
|
116
|
+
* @param {Number} a
|
|
117
|
+
* @param {Number} b
|
|
118
|
+
*/
|
|
119
|
+
wrap: function (x, a, b) {
|
|
120
|
+
return a + this.mod(x - a, b - a);
|
|
121
|
+
},
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Clamp <code>x</code> within the interval <code>[a, b]</code>. If
|
|
125
|
+
* <code>x</code> is below <code>a</code>, increase it to <code>a</code>. If
|
|
126
|
+
* it's above <code>b</code>, decrease it to <code>b</code>.
|
|
127
|
+
*/
|
|
128
|
+
clamp: function (x, a, b) {
|
|
129
|
+
return Math.min(Math.max(x, a), b);
|
|
130
|
+
},
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* A way of clamping a periodic variable. If <code>x</code> is congruent mod
|
|
134
|
+
* <code>period</code> to a point in <code>[a, b]</code>, return that point.
|
|
135
|
+
* Otherwise, wrap it into <code>[mid - period/2, mid + period/2]</code>,
|
|
136
|
+
* where <code>mid</code> is the mean of <code>a</code> and <code>b</code>,
|
|
137
|
+
* and then clamp it to <code>[a, b]</code> from there.
|
|
138
|
+
*/
|
|
139
|
+
wrapAndClamp: function (x, a, b, period) {
|
|
140
|
+
var mid = 0.5 * (a + b),
|
|
141
|
+
half_period = 0.5 * period;
|
|
142
|
+
|
|
143
|
+
return this.clamp(
|
|
144
|
+
this.wrap(
|
|
145
|
+
x,
|
|
146
|
+
mid - half_period,
|
|
147
|
+
mid + half_period
|
|
148
|
+
),
|
|
149
|
+
a,
|
|
150
|
+
b
|
|
151
|
+
);
|
|
152
|
+
},
|
|
153
|
+
|
|
112
154
|
/**
|
|
113
155
|
* Initializes a vector of size <tt>n</tt> wih coefficients set to the init value (default 0)
|
|
114
156
|
* @param {Number} n Length of the vector
|
|
@@ -882,7 +924,7 @@ JXG.Math = {
|
|
|
882
924
|
|
|
883
925
|
minOr0 = min || 0;
|
|
884
926
|
|
|
885
|
-
if (
|
|
927
|
+
if (JXG.exists(step)) {
|
|
886
928
|
tmp = (n - minOr0) / step;
|
|
887
929
|
if (Number.isInteger(tmp)) {
|
|
888
930
|
return n;
|
|
@@ -968,7 +1010,7 @@ JXG.Math = {
|
|
|
968
1010
|
* @param {Number} a Variable number of arguments.
|
|
969
1011
|
* @returns Number
|
|
970
1012
|
*/
|
|
971
|
-
hypot: function() {
|
|
1013
|
+
hypot: function () {
|
|
972
1014
|
var i, le, a, sum;
|
|
973
1015
|
|
|
974
1016
|
le = arguments.length;
|
|
@@ -985,7 +1027,7 @@ JXG.Math = {
|
|
|
985
1027
|
* @param {Number} x
|
|
986
1028
|
* @returns Number
|
|
987
1029
|
*/
|
|
988
|
-
hstep: function(x) {
|
|
1030
|
+
hstep: function (x) {
|
|
989
1031
|
return (x > 0.0) ? 1 :
|
|
990
1032
|
((x < 0.0) ? 0.0 : 0.5);
|
|
991
1033
|
},
|
|
@@ -997,7 +1039,7 @@ JXG.Math = {
|
|
|
997
1039
|
* @param {Number} z
|
|
998
1040
|
* @returns Number
|
|
999
1041
|
*/
|
|
1000
|
-
gamma: function(z) {
|
|
1042
|
+
gamma: function (z) {
|
|
1001
1043
|
var x, y, t, i, le,
|
|
1002
1044
|
g = 7,
|
|
1003
1045
|
// n = 9,
|
|
@@ -1164,7 +1206,7 @@ JXG.Math = {
|
|
|
1164
1206
|
* JXG.Math.decToFraction(-10.66666666666667);
|
|
1165
1207
|
* // Result: [-1, 10, 2, 3 ]
|
|
1166
1208
|
*/
|
|
1167
|
-
decToFraction: function(x, order) {
|
|
1209
|
+
decToFraction: function (x, order) {
|
|
1168
1210
|
var lead, sign, a,
|
|
1169
1211
|
n, n1, n2,
|
|
1170
1212
|
d, d1, d2,
|
package/src/math/metapost.js
CHANGED
package/src/math/nlp.js
CHANGED
package/src/math/numerics.js
CHANGED
package/src/math/plot.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
Copyright 2008-
|
|
2
|
+
Copyright 2008-2024
|
|
3
3
|
Matthias Ehmann,
|
|
4
4
|
Michael Gerhaeuser,
|
|
5
5
|
Carsten Miller,
|
|
@@ -2028,7 +2028,9 @@ Mat.Plot = {
|
|
|
2028
2028
|
},
|
|
2029
2029
|
|
|
2030
2030
|
getInterval: function (curve, ta, tb) {
|
|
2031
|
-
var t_int,
|
|
2031
|
+
var t_int,
|
|
2032
|
+
// x_int,
|
|
2033
|
+
y_int;
|
|
2032
2034
|
|
|
2033
2035
|
//console.log('critical point', ta, tb);
|
|
2034
2036
|
IntervalArithmetic.disable();
|
|
@@ -2036,7 +2038,7 @@ Mat.Plot = {
|
|
|
2036
2038
|
t_int = IntervalArithmetic.Interval(ta, tb);
|
|
2037
2039
|
curve.board.mathLib = IntervalArithmetic;
|
|
2038
2040
|
curve.board.mathLibJXG = IntervalArithmetic;
|
|
2039
|
-
x_int = curve.X(t_int, true);
|
|
2041
|
+
// x_int = curve.X(t_int, true);
|
|
2040
2042
|
y_int = curve.Y(t_int, true);
|
|
2041
2043
|
curve.board.mathLib = Math;
|
|
2042
2044
|
curve.board.mathLibJXG = JXG.Math;
|
|
@@ -2221,16 +2223,16 @@ Mat.Plot = {
|
|
|
2221
2223
|
i1,
|
|
2222
2224
|
i2,
|
|
2223
2225
|
x,
|
|
2224
|
-
y,
|
|
2226
|
+
// y,
|
|
2225
2227
|
lo,
|
|
2226
2228
|
hi,
|
|
2227
2229
|
d_lft,
|
|
2228
2230
|
d_rgt,
|
|
2229
2231
|
d_thresh = 100,
|
|
2232
|
+
// d1,
|
|
2233
|
+
// d2,
|
|
2230
2234
|
di1 = 5,
|
|
2231
|
-
di2 = 3
|
|
2232
|
-
d1,
|
|
2233
|
-
d2;
|
|
2235
|
+
di2 = 3;
|
|
2234
2236
|
|
|
2235
2237
|
t = group.t;
|
|
2236
2238
|
console.log("HandleSingularity at t =", t);
|
|
@@ -2366,7 +2368,7 @@ Mat.Plot = {
|
|
|
2366
2368
|
|
|
2367
2369
|
plot_v4: function (curve, ta, tb, steps) {
|
|
2368
2370
|
var i,
|
|
2369
|
-
j,
|
|
2371
|
+
// j,
|
|
2370
2372
|
le,
|
|
2371
2373
|
components,
|
|
2372
2374
|
idx,
|
|
@@ -2375,17 +2377,14 @@ Mat.Plot = {
|
|
|
2375
2377
|
g,
|
|
2376
2378
|
start,
|
|
2377
2379
|
ret,
|
|
2378
|
-
x_table,
|
|
2379
|
-
|
|
2380
|
-
|
|
2381
|
-
|
|
2382
|
-
|
|
2383
|
-
good,
|
|
2384
|
-
bad,
|
|
2385
|
-
x_int,
|
|
2380
|
+
x_table, y_table,
|
|
2381
|
+
t, t1, t2,
|
|
2382
|
+
// good,
|
|
2383
|
+
// bad,
|
|
2384
|
+
// x_int,
|
|
2386
2385
|
y_int,
|
|
2387
|
-
degree_x,
|
|
2388
|
-
degree_y,
|
|
2386
|
+
// degree_x,
|
|
2387
|
+
// degree_y,
|
|
2389
2388
|
h = (tb - ta) / steps,
|
|
2390
2389
|
Ypl = function (x) {
|
|
2391
2390
|
return curve.Y(x, true);
|
|
@@ -2402,9 +2401,9 @@ Mat.Plot = {
|
|
|
2402
2401
|
groups = ret[0];
|
|
2403
2402
|
x_table = ret[1];
|
|
2404
2403
|
y_table = ret[2];
|
|
2405
|
-
degree_x = ret[3];
|
|
2406
|
-
degree_y = ret[4];
|
|
2407
2404
|
|
|
2405
|
+
// degree_x = ret[3];
|
|
2406
|
+
// degree_y = ret[4];
|
|
2408
2407
|
// if (degree_x >= 0) {
|
|
2409
2408
|
// console.log("x polynomial of degree", degree_x);
|
|
2410
2409
|
// }
|
|
@@ -2439,8 +2438,8 @@ Mat.Plot = {
|
|
|
2439
2438
|
le = groups[g].idx - 1;
|
|
2440
2439
|
}
|
|
2441
2440
|
|
|
2442
|
-
good = 0;
|
|
2443
|
-
bad = 0;
|
|
2441
|
+
// good = 0;
|
|
2442
|
+
// bad = 0;
|
|
2444
2443
|
// Insert all uncritical points until next critical point
|
|
2445
2444
|
for (i = start; i < le - 2; i++) {
|
|
2446
2445
|
this._insertPoint_v4(
|
|
@@ -2448,7 +2447,7 @@ Mat.Plot = {
|
|
|
2448
2447
|
[1, comp.x_values[i], comp.y_values[i]],
|
|
2449
2448
|
comp.t_values[i]
|
|
2450
2449
|
);
|
|
2451
|
-
j = Math.max(0, i - 2);
|
|
2450
|
+
// j = Math.max(0, i - 2);
|
|
2452
2451
|
// Add more points in critical intervals
|
|
2453
2452
|
if (
|
|
2454
2453
|
//degree_y === -1 && // No polynomial
|
|
@@ -2497,9 +2496,9 @@ Mat.Plot = {
|
|
|
2497
2496
|
);
|
|
2498
2497
|
}
|
|
2499
2498
|
}
|
|
2500
|
-
bad++;
|
|
2501
|
-
} else {
|
|
2502
|
-
good++;
|
|
2499
|
+
// bad++;
|
|
2500
|
+
// } else {
|
|
2501
|
+
// good++;
|
|
2503
2502
|
}
|
|
2504
2503
|
}
|
|
2505
2504
|
// console.log("GOOD", good, "BAD", bad);
|
package/src/math/poly.js
CHANGED
package/src/math/probfuncs.js
CHANGED
package/src/math/qdt.js
CHANGED
package/src/math/statistics.js
CHANGED
package/src/math/symbolic.js
CHANGED
package/src/options.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
Copyright 2008-
|
|
2
|
+
Copyright 2008-2024
|
|
3
3
|
Matthias Ehmann,
|
|
4
4
|
Michael Gerhaeuser,
|
|
5
5
|
Carsten Miller,
|
|
@@ -2054,6 +2054,50 @@ JXG.Options = {
|
|
|
2054
2054
|
*/
|
|
2055
2055
|
needsRegularUpdate: true,
|
|
2056
2056
|
|
|
2057
|
+
/**
|
|
2058
|
+
* If some size of an element is controlled by a function, like the circle radius
|
|
2059
|
+
* or segments of fixed length, this attribute controls what happens if the value
|
|
2060
|
+
* is negative. By default, the absolute value is taken. If true, the maximum
|
|
2061
|
+
* of 0 and the value is used.
|
|
2062
|
+
*
|
|
2063
|
+
* @type Boolean
|
|
2064
|
+
* @default false
|
|
2065
|
+
* @name JXG.GeometryElement#nonnegativeOnly
|
|
2066
|
+
* @example
|
|
2067
|
+
* var slider = board.create('slider', [[4, -3], [4, 3], [-4, 1, 4]], { name: 'a'});
|
|
2068
|
+
* var circle = board.create('circle', [[-1, 0], 1], {
|
|
2069
|
+
* nonnegativeOnly: true
|
|
2070
|
+
* });
|
|
2071
|
+
* circle.setRadius('a'); // Use JessieCode
|
|
2072
|
+
* var seg = board.create('segment', [[-4, 3], [0, 3], () => slider.Value()], {
|
|
2073
|
+
* point1: {visible: true},
|
|
2074
|
+
* point2: {visible: true},
|
|
2075
|
+
* nonnegativeOnly: true
|
|
2076
|
+
* });
|
|
2077
|
+
*
|
|
2078
|
+
* </pre><div id="JXG9cb76224-1f78-4488-b20f-800788768bc9" class="jxgbox" style="width: 300px; height: 300px;"></div>
|
|
2079
|
+
* <script type="text/javascript">
|
|
2080
|
+
* (function() {
|
|
2081
|
+
* var board = JXG.JSXGraph.initBoard('JXG9cb76224-1f78-4488-b20f-800788768bc9',
|
|
2082
|
+
* {boundingbox: [-8, 8, 8,-8], axis: true, showcopyright: false, shownavigation: false});
|
|
2083
|
+
* var slider = board.create('slider', [[4, -3], [4, 3], [-4, 1, 4]], { name: 'a'});
|
|
2084
|
+
* var circle = board.create('circle', [[-1, 0], 1], {
|
|
2085
|
+
* nonnegativeOnly: true
|
|
2086
|
+
* });
|
|
2087
|
+
* circle.setRadius('a'); // Use JessieCode
|
|
2088
|
+
* var seg = board.create('segment', [[-4, 3], [0, 3], () => slider.Value()], {
|
|
2089
|
+
* point1: {visible: true},
|
|
2090
|
+
* point2: {visible: true},
|
|
2091
|
+
* nonnegativeOnly: true
|
|
2092
|
+
* });
|
|
2093
|
+
*
|
|
2094
|
+
* })();
|
|
2095
|
+
*
|
|
2096
|
+
* </script><pre>
|
|
2097
|
+
*
|
|
2098
|
+
*/
|
|
2099
|
+
nonnegativeOnly: false,
|
|
2100
|
+
|
|
2057
2101
|
/**
|
|
2058
2102
|
* Precision options for JSXGraph elements.
|
|
2059
2103
|
* This attributes takes either the value 'inherit' or an object of the form:
|
|
@@ -4410,6 +4454,7 @@ JXG.Options = {
|
|
|
4410
4454
|
label: {
|
|
4411
4455
|
position: 'urt'
|
|
4412
4456
|
}
|
|
4457
|
+
|
|
4413
4458
|
/**#@-*/
|
|
4414
4459
|
},
|
|
4415
4460
|
|
|
@@ -9478,9 +9523,9 @@ JXG.Options = {
|
|
|
9478
9523
|
validatePositiveInteger = function (v) {
|
|
9479
9524
|
return validateInteger(v) && v > 0;
|
|
9480
9525
|
},
|
|
9481
|
-
validateScreenCoords = function (v) {
|
|
9482
|
-
|
|
9483
|
-
},
|
|
9526
|
+
// validateScreenCoords = function (v) {
|
|
9527
|
+
// return v.length >= 2 && validateInteger(v[0]) && validateInteger(v[1]);
|
|
9528
|
+
// },
|
|
9484
9529
|
validateRenderer = function (v) {
|
|
9485
9530
|
return (v === 'vml' || v === 'svg' || v === 'canvas' || v === 'no');
|
|
9486
9531
|
},
|
package/src/options3d.js
CHANGED
|
@@ -31,7 +31,7 @@ JXG.extend(Options, {
|
|
|
31
31
|
* @type Line3D
|
|
32
32
|
* @name View3D#xAxis
|
|
33
33
|
*/
|
|
34
|
-
xAxis: { visible: true, point2: { name: "x" } },
|
|
34
|
+
xAxis: { visible: true, point2: { name: "x" }, strokeColor: JXG.palette.red },
|
|
35
35
|
|
|
36
36
|
/**
|
|
37
37
|
* Attributes of the 3D y-axis.
|
|
@@ -39,7 +39,7 @@ JXG.extend(Options, {
|
|
|
39
39
|
* @type Line3D
|
|
40
40
|
* @name View3D#yAxis
|
|
41
41
|
*/
|
|
42
|
-
yAxis: { visible: true, point2: { name: "y" } },
|
|
42
|
+
yAxis: { visible: true, point2: { name: "y" }, strokeColor: JXG.palette.green },
|
|
43
43
|
|
|
44
44
|
/**
|
|
45
45
|
* Attributes of the 3D z-axis.
|
|
@@ -47,7 +47,7 @@ JXG.extend(Options, {
|
|
|
47
47
|
* @type Line3D
|
|
48
48
|
* @name View3D#zAxis
|
|
49
49
|
*/
|
|
50
|
-
zAxis: { visible: true, point2: { name: "z" } },
|
|
50
|
+
zAxis: { visible: true, point2: { name: "z" }, strokeColor: JXG.palette.blue },
|
|
51
51
|
|
|
52
52
|
// Planes
|
|
53
53
|
/**
|
|
@@ -492,7 +492,7 @@ JXG.extend(Options, {
|
|
|
492
492
|
},
|
|
493
493
|
continuous: true,
|
|
494
494
|
slider: {
|
|
495
|
-
visible:
|
|
495
|
+
visible: 'inherit',
|
|
496
496
|
style: 6,
|
|
497
497
|
point1: { frozen: true },
|
|
498
498
|
point2: { frozen: true },
|
|
@@ -560,7 +560,7 @@ JXG.extend(Options, {
|
|
|
560
560
|
},
|
|
561
561
|
continuous: true,
|
|
562
562
|
slider: {
|
|
563
|
-
visible:
|
|
563
|
+
visible: 'inherit',
|
|
564
564
|
style: 6,
|
|
565
565
|
point1: { frozen: true },
|
|
566
566
|
point2: { frozen: true },
|
|
@@ -570,6 +570,74 @@ JXG.extend(Options, {
|
|
|
570
570
|
}
|
|
571
571
|
},
|
|
572
572
|
|
|
573
|
+
/**
|
|
574
|
+
* Specify the user handling of the bank angle.
|
|
575
|
+
* <ul>
|
|
576
|
+
* <li><tt>pointer</tt> sub-attributes:
|
|
577
|
+
* <ul>
|
|
578
|
+
* <li><tt>enabled</tt>: Boolean that specifies whether pointer navigation is allowed by elevation.
|
|
579
|
+
* <li><tt>speed</tt>: Number indicating how many passes the range of the el_slider makes when the cursor crosses the entire board once in the horizontal direction.
|
|
580
|
+
* <li><tt>outside</tt>: Boolean that specifies whether the pointer navigation is continued when the cursor leaves the board.
|
|
581
|
+
* <li><tt>button</tt>: Which button of the pointer should be used? (<tt>'-1'</tt> (=no button), <tt>'0'</tt> or <tt>'2'</tt>)
|
|
582
|
+
* <li><tt>key</tt>: Should an additional key be pressed? (<tt>'none'</tt>, <tt>'shift'</tt> or <tt>'ctrl'</tt>)
|
|
583
|
+
* </ul>
|
|
584
|
+
* <li><tt>keyboard</tt> sub-attributes:
|
|
585
|
+
* <ul>
|
|
586
|
+
* <li><tt>enabled</tt>: Boolean that specifies whether the keyboard (arrow keys) can be used to navigate the board.
|
|
587
|
+
* <li><tt>step</tt>: Size of the step per keystroke.
|
|
588
|
+
* <li><tt>key</tt>: Should an additional key be pressed? (<tt>'none'</tt>, <tt>'shift'</tt> or <tt>'ctrl'</tt>)
|
|
589
|
+
* </ul>
|
|
590
|
+
* <li><tt>continuous</tt>: Boolean that specifies whether the el_slider starts again from the beginning when its end is reached.
|
|
591
|
+
* <li><tt>slider</tt> attributes of the el_slider ({@link Slider}) with additional
|
|
592
|
+
* <ul>
|
|
593
|
+
* <li><tt>min</tt>: Minimum value.
|
|
594
|
+
* <li><tt>max</tt>: Maximum value.
|
|
595
|
+
* <li><tt>start</tt>: Start value.
|
|
596
|
+
* </ul>
|
|
597
|
+
* </ul>
|
|
598
|
+
*
|
|
599
|
+
* @name View3D#bank
|
|
600
|
+
* @type Object
|
|
601
|
+
* @default <pre>{
|
|
602
|
+
* pointer: {enabled: true, speed: 1, outside: true, button: -1, key: 'none'},
|
|
603
|
+
* keyboard: {enabled: true, step: 10, key: 'ctrl'},
|
|
604
|
+
* continuous: true,
|
|
605
|
+
* slider: {
|
|
606
|
+
* visible: true,
|
|
607
|
+
* style: 6,
|
|
608
|
+
* point1: {frozen: true},
|
|
609
|
+
* point2: {frozen: true},
|
|
610
|
+
* min: 0,
|
|
611
|
+
* max: 2 * Math.PI,
|
|
612
|
+
* start: 0.3
|
|
613
|
+
* },
|
|
614
|
+
* }<pre>
|
|
615
|
+
*/
|
|
616
|
+
bank: {
|
|
617
|
+
pointer: {
|
|
618
|
+
enabled: true,
|
|
619
|
+
speed: 0.08,
|
|
620
|
+
outside: true,
|
|
621
|
+
button: -1,
|
|
622
|
+
key: 'none'
|
|
623
|
+
},
|
|
624
|
+
keyboard: {
|
|
625
|
+
enabled: true,
|
|
626
|
+
step: 10,
|
|
627
|
+
key: 'ctrl'
|
|
628
|
+
},
|
|
629
|
+
continuous: true,
|
|
630
|
+
slider: {
|
|
631
|
+
visible: 'inherit',
|
|
632
|
+
style: 6,
|
|
633
|
+
point1: { frozen: true },
|
|
634
|
+
point2: { frozen: true },
|
|
635
|
+
min: -Math.PI,
|
|
636
|
+
max: Math.PI,
|
|
637
|
+
start: 0.0
|
|
638
|
+
}
|
|
639
|
+
},
|
|
640
|
+
|
|
573
641
|
trackball: {
|
|
574
642
|
enabled: false,
|
|
575
643
|
outside: true,
|
|
@@ -594,6 +662,15 @@ JXG.extend(Options, {
|
|
|
594
662
|
*/
|
|
595
663
|
fov: 1 / 5 * 2 * Math.PI,
|
|
596
664
|
|
|
665
|
+
/**
|
|
666
|
+
* When this option is enabled, points closer to the screen are drawn
|
|
667
|
+
* over points further from the screen within each layer.
|
|
668
|
+
*
|
|
669
|
+
* @name View3D#depthOrderPoints
|
|
670
|
+
* @default false
|
|
671
|
+
*/
|
|
672
|
+
depthOrderPoints: false,
|
|
673
|
+
|
|
597
674
|
/**
|
|
598
675
|
* Fixed values for the view, which can be changed using keyboard keys `picture-up` and `picture-down`.
|
|
599
676
|
* Array of the form: [[el0, az0, r0], [el1, az1, r1, ...[eln, azn, rn]]
|
package/src/parser/datasource.js
CHANGED
package/src/parser/geonext.js
CHANGED
package/src/parser/jessiecode.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*
|
|
2
2
|
JessieCode Interpreter and Compiler
|
|
3
3
|
|
|
4
|
-
Copyright 2011-
|
|
4
|
+
Copyright 2011-2024
|
|
5
5
|
Michael Gerhaeuser,
|
|
6
6
|
Alfred Wassermann
|
|
7
7
|
|
|
@@ -36,15 +36,15 @@
|
|
|
36
36
|
* JSXGraph to display interactive math graphics.
|
|
37
37
|
*/
|
|
38
38
|
|
|
39
|
-
import JXG from "../jxg";
|
|
40
|
-
import Const from "../base/constants";
|
|
41
|
-
import Text from "../base/text";
|
|
42
|
-
import Mat from "../math/math";
|
|
43
|
-
import Interval from "../math/ia";
|
|
44
|
-
import Geometry from "../math/geometry";
|
|
45
|
-
import Statistics from "../math/statistics";
|
|
46
|
-
import Type from "../utils/type";
|
|
47
|
-
import Env from "../utils/env";
|
|
39
|
+
import JXG from "../jxg.js";
|
|
40
|
+
import Const from "../base/constants.js";
|
|
41
|
+
import Text from "../base/text.js";
|
|
42
|
+
import Mat from "../math/math.js";
|
|
43
|
+
import Interval from "../math/ia.js";
|
|
44
|
+
import Geometry from "../math/geometry.js";
|
|
45
|
+
import Statistics from "../math/statistics.js";
|
|
46
|
+
import Type from "../utils/type.js";
|
|
47
|
+
import Env from "../utils/env.js";
|
|
48
48
|
|
|
49
49
|
// IE 6-8 compatibility
|
|
50
50
|
if (!Object.create) {
|
|
@@ -1110,7 +1110,8 @@ JXG.extend(JXG.JessieCode.prototype, /** @lends JXG.JessieCode.prototype */ {
|
|
|
1110
1110
|
|
|
1111
1111
|
// The $()-function-calls are special because their parameter is given as a string, not as a node_var.
|
|
1112
1112
|
if (node.type === 'node_op' && node.value === 'op_execfun' &&
|
|
1113
|
-
node.children.length > 1 &&
|
|
1113
|
+
node.children.length > 1 &&
|
|
1114
|
+
(node.children[0].value === '$' || node.children[0].value === '$value') &&
|
|
1114
1115
|
node.children[1].length > 0) {
|
|
1115
1116
|
|
|
1116
1117
|
e = node.children[1][0].value;
|
package/src/parser/prefix.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
Copyright 2008-
|
|
2
|
+
Copyright 2008-2024
|
|
3
3
|
Matthias Ehmann,
|
|
4
4
|
Carsten Miller,
|
|
5
5
|
Alfred Wassermann
|
|
@@ -156,12 +156,19 @@ JXG.PrefixParser = {
|
|
|
156
156
|
throw new Error("PrefixParser.parse: " + fun + " is not allowed");
|
|
157
157
|
}
|
|
158
158
|
} else {
|
|
159
|
-
// Allow shortcut 'V' for 'Value'
|
|
160
159
|
fun = term[0];
|
|
160
|
+
|
|
161
|
+
// Allow shortcut 'V' for 'Value'
|
|
161
162
|
if (fun === 'V') {
|
|
162
163
|
fun = 'Value';
|
|
163
164
|
}
|
|
164
165
|
|
|
166
|
+
// get coords always with z
|
|
167
|
+
// (its visibility is controlled by the attribute function formatCoords)
|
|
168
|
+
if (fun === 'Coords') {
|
|
169
|
+
term[2] = 'true';
|
|
170
|
+
}
|
|
171
|
+
|
|
165
172
|
if (!Type.exists(term[1][fun])) {
|
|
166
173
|
throw new Error("PrefixParser.parse: " + fun + " is not a method of " + term[1]);
|
|
167
174
|
}
|
package/src/reader/cinderella.js
CHANGED
package/src/reader/file.js
CHANGED
package/src/reader/geogebra.js
CHANGED
package/src/reader/geonext.js
CHANGED
package/src/reader/graph.js
CHANGED
package/src/reader/intergeo.js
CHANGED