jsxgraph-1.12.0/000077500000000000000000000000001507076114500134275ustar00rootroot00000000000000jsxgraph-1.12.0/.eslintrc.js000066400000000000000000000014541507076114500156720ustar00rootroot00000000000000module.exports = { "env": { "browser": true, "commonjs": true, "es2021": true }, "extends": "eslint:recommended", "parserOptions": { "ecmaVersion": 13, "sourceType": "module" }, "rules": { "comma-dangle": ["error", "never"], "eqeqeq": ["error", "smart"], "no-constant-binary-expression": "error", "no-empty": "off", "no-prototype-builtins": "off", "no-redeclare": ["error", { "builtinGlobals": false }], "no-sequences": ["error"], "no-trailing-spaces": ["warn", { "ignoreComments": false }], "no-unused-vars": ["warn", { "vars": "local", "args": "none"}], "one-var": ["warn", "always"], "semi": ["error", "always"] }, "globals": { "JXG": "readonly" } }; jsxgraph-1.12.0/.github/000077500000000000000000000000001507076114500147675ustar00rootroot00000000000000jsxgraph-1.12.0/.github/workflows/000077500000000000000000000000001507076114500170245ustar00rootroot00000000000000jsxgraph-1.12.0/.github/workflows/format.yaml000066400000000000000000000005701507076114500212020ustar00rootroot00000000000000name: Format with Prettier on: pull_request: push: branches: [main] jobs: tests: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: node-version: "20" cache: "npm" cache-dependency-path: package-lock.json # - run: npm ci # - run: npm run check-format jsxgraph-1.12.0/.github/workflows/lint.yaml000066400000000000000000000005411507076114500206560ustar00rootroot00000000000000name: ESLint on: pull_request: push: branches: [main] jobs: eslint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: node-version: "20" cache: "npm" cache-dependency-path: package-lock.json - run: npm ci - run: npm run eslint jsxgraph-1.12.0/.github/workflows/tests.yaml000066400000000000000000000005421507076114500210530ustar00rootroot00000000000000name: Unit tests on: pull_request: push: branches: [main] jobs: tests: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: node-version: "20" cache: "npm" cache-dependency-path: package-lock.json - run: npm ci - run: npm run test jsxgraph-1.12.0/.gitignore000066400000000000000000000010431507076114500154150ustar00rootroot00000000000000trunk .htaccess **/.htaccess src/.htaccess .c9revisions *.sublime-* .idea/ .vscode **/.vscode **/.vscode/* src/.vscode *.tgz **/*.tgz beta/* distrib/docs.zip distrib/docs distrib/jsxgraphcore.js* distrib/jsxgraphsrc.js* distrib/jsxgraphcore.mjs* distrib/jsxgraphsrc.mjs* distrib/jsxgraph.zip JSXCompressor/jsxcompressor.min.js build/bin/* src/require.js node_modules tmp/* doc/jsdoc-tk/template/static/jquery.min.js doc/jsdoc-tk/template/static/jsxgraphcore.js doc/jsdoc-tk/template/static/jsxgraph.css html-report HOWTO-RELEASE.md releasetxt.md jsxgraph-1.12.0/.prettierignore000066400000000000000000000001041507076114500164650ustar00rootroot00000000000000# Ignore artifacts: build/*.json build/*.md 3rdparty distrib doc .* jsxgraph-1.12.0/.travis.yml000066400000000000000000000002771507076114500155460ustar00rootroot00000000000000# safelist branches: only: - master language: node_js node_js: - "stable" stages: - core jobs: include: - stage: core if: branch = master script: make hint core jsxgraph-1.12.0/3rdparty/000077500000000000000000000000001507076114500151775ustar00rootroot00000000000000jsxgraph-1.12.0/CHANGELOG.md000066400000000000000000002506711507076114500152530ustar00rootroot000000000000001.12.0 === New features ----------- - 3D: STL file format (ASCII) parser / writer for polyhedron3d - New board attribute showLogo. Display logic is: showLogo OR showCopyright - Complex numbers: new methods abs(), angle() - New method: Line.getBoundingBox() - CoordsElements (points, texts, images): add parameter maxRounds to startAnimation Improvements ------------ - Simplify use of attribute frozen, especially for sliders - Improved autoposition algorithm for labels - Clipping of implicit curves - 3D rotations: enable rotation around point, rotation of general line - API docs: 3D transformations - Depth order: improved correctness and speed up - Shorten copyright string, add logo - New favicon files Bug fixes --------- - Stop event propagation on input field - Arrow rendering - Vanishing 3D line - 3D removeObject() - Canvas renderer: gradient color on lines - Curve.findDomain(), Curve.getLabelPosition - Label positioning on disconnected curves 1.11.1 === Improvements ------------ - Board attribute `browserPan`: support object variant `{ enabled: true }` Bug fixes --------- - Fix backwards compatibility for color value `null` - `setAttribute`: conflict with shortcut names - `view3d.removeObject` 1.11.0 === New features ----------- - New element `polyhedron3d` - Depth ordering of 3D elements: Generalize font/back detection of 3D points to other elements - Depth ordering of 3D elements: Generalize font/back detection of 3D points to other elements - Shader attributes for polyhedron3d - Shader for polyhedron3d - Attribute functions support the targeted geometry element as parameter - ARIA attributes for every element (SVG only) - CSS classes for every element (SVG only). This allows the application of SVG filters - 3D transformations for point3d, line3d, plane3d, curve3d, surface3d, polyhedron3d. Not supported, yet: circle3d, polygon3d, text3d, ticks3d - 2D transformations: new type `matrix` - 2D and 3D curves by array of coordinates Improvements ------------ - Massive speed improvements when rotating the 3D view - Refactor 3D elements. Among other things: use of homogeneous coordinates internally everywhere. - 3D view sliders can be positioned by attributes - New methods in `JXG.Math`: `matMatAdd`, `matNumberMult`, `vecMatMult`, `trace` of a matrix - New method `JXG.Math.Geometry.isConvex` - Keyboard navigation, including 3D views - Position label by `position`, `distance` attributes for `angle`, `arc`, and `sector` - Improved convex hull algorithm - Much improved element `legend` - Groups: allow texts and images as members - JessieCode: enable numbers in scientific notation - Enable glider on `sphere3d` elements - `plane3d`: allow `line3d` as defining element and also enable construction by three points - Improved dragging of 3D points - Adapt 3D info box style - Enhance element `measure` - `moveTo`, `visit`, `moveAlong` are available as promises: `moveToES6`, `visitES6`, `moveAlongES6` - Improved precision for implicit curves - API docs - Zoom attributes may be functions now - Add logo images to the JSXGraph repository Bug fixes --------- - Arrow heads on Safari - Fix regression: sphere3d - Remove singularity in sphere central projection - Dragging of labels - Screenshot of elements with gradient colors - User defined ids of 3D elements - Canvas: use `linejoin:round` for curves - Radial gradient of points in canvas - Update problems of integral elements - Angle for parallel lines - toLowerCase in `setAttribute()` - Slider handling of snapWidth - Handling of maxBoundingBox - Implicit plotting 1.10.1 === Improvements ------------ - Angle element: allow empty string as name - Better control on animation speed with `<` and `>` - `JXG.Math.Statistics.histogram`: count of long tail elements not in histogram range - Prevent dragging of 3D points out of the `view3d` box. - API docs - Retire python2 server module - Remove unused file `src/index2.js` Bug fixes --------- - 'Glider' on function graph did not respect domain - Visibility issues in 3D with `axesPosition: 'border'` - Initial camera position in `view3d` - Crash if 3D plane does not intersect 3D view - `vectorfield3d`: allow function returning three values as parameter - Inheritance of 3D axis options - `text3d`: string from function call 1.10.0 === New features ----------- - New element `tangentTo` - New element `text3d` - New element `ticks3d` - Support 3d axes position `'border'` - New random numbers with Pareto distribution Improvements ------------ - `JXG.Math.Numerics.histogram`: cumulative version - Gradual improvement of 3D functionality - Enable dragging of 3D lines - Stability of `JXG.Math.Numerics.fzero`, `JXG.Math.Numerics.fminbr` - Stability of implicit curves - Implicit curves: add parameters `rangex` and `rangey` - Enable input of points for `JXG.Math.Geometry.det3p` - Add attribute `autoPositionMaxDistance` to labels - Unit tests for tangents and normals - API docs - Makefile: force use of gawk Bug fixes --------- - Glider on parametrized curves - Line label - 3D view attributes - 3D infobox and drag icons with katex and mathjax - `removeAllTicks()` - `SVG.dumpToCanvas`, `SVG.dumpToDataURI` - Transformation of images. Disable viewport attempt - Zooming with ID in JSXGraph div - Tangents and normals on transformed curves 1.9.2 === New features ----------- - New view3d attribute `depthOrderPoints` to adapt z-ordering of 3D points - 3D: Add third view3d slider `bank` - Allow hiding of view3d - New GeometryElement attribute `nonnegativeOnly` Improvements ------------ - Improve coords projection to function graph - 3D: Trackball navigation - 3D: Change default color of axes - Resizing of the container - Printing from browser - Tangents on curves - API docs - Prefix parser for measurements - Refactor resize events Bug fixes --------- - Prevent infinite growing of a board by resizeObserver - JessieCode: using slider by name only - Fix regression in parallelogram - SVG resize - Set arrow head - Merge of attributes - isPoint3D - `JXG.toFraction()` - `curve.moveTo()` - Automatic label placement - disable resizeObserver in unit tests - Glider and tangents on arcs and sectors 1.9.1 === Bug fixes --------- - `import` of JessieCode - Handling of label attributes 1.9.0 === New features ----------- - 3D: now, beside parallel projection also central projection is supported - new element `sphere3d` - new element `intersectionline3d` - new element `circle3d` - new gliders: point3d can glide on lines and curves - new element `intersectioncircle3d` - new element `polygon3d` - new version of `otherintersection` - new 3D control: virtual trackball - new label positioning for lines, circles and curves - random numbers for uniform, normal, exponential, beta, gamma, chi-square, F, T, binomial, geometric, hypergeometric, Poisson distribution - new function `JXG.Math.Statistics.histogram` - new math function `JXG.Math.gamma` Improvements ------------ - API docs - in default mode, `click` and dblclick` events follow JavaScript standard - new default for numbers as texts: 'formatNumber:false' - grid: new default is `drawZero:true` - grid: `size` has unit pixel now - grid themes - use file name ending `.js` in all import statements - speed improvement: reduce `concat` by `Type.concat` - new 3D examples in `examples/` - mark ancient browser detection methods as deprecated - add more exports to `index.js` - board zoom center can be either the mouse pointer position (or midpoint of two finger touches) or the center of the board Bug fixes --------- - keyboard control 3D view - lower / upper case problem in `providePoints` - setting of Riemann sum type - grid: handling of attributes - grid: remove unused unit `abs` - 3D elevation speed - grid: remove redundant lines - sector arc - 3D axes were not fixed - slider label - glider handling - slider handling in JessieCode - remove use of `String.at()` (moodle problem) - remove const `JXG.touchProperty` - toggling of arrow heads - tapemeasure - toFraction 1.8.0 === New features ----------- - Element `grid` has been completely overhauled with many additional features - Element `axis` has been completely overhauled with many additional features - Pointer and keyboard control of 3D views. - New events `click` and `dblclick` on desktop browsers - Tick labels can now be displayed as fractions Improvements ------------ - API docs - Lines: new method `Direction` - New method `Math.roundToStep` - New method '`JXG.parseNumber` to handle various unit numbers in strings - New method `JXG.parsePosition` to handle combinations of position options in strings - New methods `JXG.Math.decToFraction` and `JXG.toFraction` to convert float to fraction - New text attribute `formatNumber` - Various new features in the `measurement` element - String positioning in SVG - Add various geometry methods to JessieCode - 3D: elevation now runs from 0 to 2pi - "arrowparallel": is of type `vector` now Bug fixes --------- - Handling of font size after call of `setAttribute` - Slope triangle: handling of label - Implicit curve handling of string input - Ticks of tape measures - dragging of 3D points 1.7.0 === New features ----------- - New element `implicitcurve`: plot curve given by an equation F(x, y) = 0 - New element `parallelogram` - New element `measurement` and new simple prefix parser - New element `vectorfield3d` - Add board attribute `theme` - Add theme `mono_thin` - New function `JXG.stack2jsxgraph` - New method JXG.Math.Numerics.polzeros - Extend method `Value` for angle, arc and sector. - New method `Coords` for point, image and text Improvements ------------ - New function `JXG.Math.Geometry.distPointSegment`: computes distance point from segment - New function `JXG.Math.Numerics.glomin`: Brent's global minimizer - New function `JXG.Math.hypot`: Euclidean length of a vector - New function `JXG.Math.hstep`: Heaviside unit step function - New function `JXG.Math.Numerics.polzeros` to compute all zeros (including the complex ones) of a polynomial - New quadtree implementation `BoxQuadtree` for storing segments - Add new point face `<<>>` or `diamond2` (enlarged to match size of `[]`) - API reference: many bug fixes, improvements, many new examples - Improve Jessiecode support in text elements - JessieCode support of available functions and methods - Angle element: set correct radius in sub-object arc - Remove `bst.js` and `heap.js` from core - Adapt mediawiki plug-in for the latest version of mediawiki - Improve fullscreen mode - JessieCode: improved handling of expressions containing a slider value `a` - Defining points of axes - Curves: set default values for min and max values of the parameter - Attribute handling - Massive speed up of `board.removeObject` - Allow change of arrow heads with `setAttribute` - Navigation buttons: individual CSS classes - Refactor `board.registerEvents` - Refactor JavaScript (replace `String.substr()`) - New method for complex numbers: `JXG.C.copy` - Arc: add method 'L' - Sector: add methods Area and Perimeter Bug fixes --------- - Address many eslint warnings - Tangent on sector - Intersection curve, circle - Use absolute lengths for circle construction by radius and fixed segment lengths - pinch-to-zoom - function plot algorithm - Retire `geonext2js` - Symbolic derivatives - Circum circle handling - slopetriangle: attribute borders - `glider.free` - Remove `jsxcompressor.min.js` from version control - super- und sub-scripts without TeX - `inequality`: attribute `inverse` - Handling of lower case in `deepCopy`, `copyAttributes` - ES6 support of JSXGraph 1.6.2 ==== New features ----------- - `JXG.JSXGraph.initBoard()` accepts a reference to the hosting HTML element Improvements ------------ - Quadtree functionality Bug fixes --------- - `foreignobject` regression 1.6.1 ==== New features ----------- - Slider snap values - New text attributes `autoPositionMaxDistance`, `autoPositionMinDistance` for label positioning Improvements ------------ - Fullscreen mode scaling is independent from original CSS - Fullscreen mode reacts to orientation change - Riemann sum: Display Simpson's rule as quadratic function - Enhance quadtree API Bug fixes --------- - API docs - Runge-Kutta method 1.6.0 ==== New features ----------- - New elements `vectorfield` and `slopefield` - New element `smartlabel` for displaying measurements - New method: `board.setAttribute()` - Add internationalization for formatting numbers: new attribute `intl` - Dotted lines (with attribute `dash:7`) - New attribute `dashScale` for line dashes - Allow KaTeX macros - Line elements: New values for label attribute `position:first' and 'position:last' - Transformations can handle HTML texts now - New board attributes: `registerResizeEvent` and `registerFullscreenEvent` Improvements ------------ - New circle method `circle.Perimeter()` - New line method `line.Slope()` - New polygon method "L()", alias for Perimeter() - `JXG.Math.Numerics`: New methods getLagrangePolynomialCoefficients, f.getCoefficients - New method `Sector.setRadius` - Allow all text elements to be rotated - 3D: Improved API and bug fixes - 3D: Allow vertical movements of 3D points by pressing the shift key - 3D: add method `removeObject`, `set/getAttribute` - 3D: azimuth rotates around center of box, not around origin - Keyboard control: move texts and polygons, keep elements highlighted while having focus - Much improved two-finger handling of objects - Logging of user activity: add more data, like positions - Improved TypeScript support - API documentation - Intersections: allow function as number of the intersection - Metapost curves: new API, improved support of tension, curl, ... - Allow slashes in IDs, i.e. SVG IDs are escaped. - Numerical stability of path clipping - New method `JXG.isBoard()` - Add attribute `lineCap` for circles - foreignObjects has new default attribute `needsRegularUpdate:false` - Make touchpoint offset dependent on point visibility - PointerDownListener: Add parameter to prevent evt canceling - Refactor ticks, especially insertTicks algorithm - Ticks: mark attribute `precision` as deprecated - Add missing options entries for various derived elements like tangent - Enable infobox attributes as sub-attribute of the board - New attribute `polygon.highlightByStrokeWidth`` - Add pointerleave listener Bug fixes --------- - Dependency check for transformations. This bug broke reflections and mirror elements - `hasPoint` method of curves of Bezier degree 3 - Fix regression: dragging of lines - Triangles were hexagons - intersection of polygons with line through infinite point - Add and remove polygon vertices - `circle.setRadius(0)`` - Attributes for foreignobject - 3D panning - Invisible button, checkbox, input element was not created correctly - Point face 'triangleup' - Out of memory bug for grid size 0 - `hasPoint` if one axis is "flipped" - Some API doc hyperrefs - Imports in `index.js` - JessieCode dump: remove name conflict of function variables and object names - Projection of glider to curve, if curve is partly undefined. - Ignore touchFirstPoint, touchLastPoint for invisible points - Initial positioning with snapToGrid - Jessiecode compile(): introduce `needsAngleBrackets` to distinguish parenthesis in functions and property delimiters. - SVG dump: remove `"` from URLs - Numerical instability in `meetLineLine` - Ticks: fix numerical instability with includeBoundaries - Visibility issue if a polygon becomes undefined - Touch events: executed twice - polygons and snapToGrid: prevent rotation, scaling by two fingers - Correct symbolic simplification 1.5.0 ==== New features ----------- - API change in JSXCompressor. Old: `JXG.decompress` New: `JSXCompressor.default.decompress` - Code base switched from AMD to ES6 imports - New attributes `majorTickEndings`, `ignoreInfiniteTickEndings` - New math class Mat.Heap - New board attribute `browserPan`: allows to scroll web page by swiping in JSXGraph board - New element attribute `shadow`: enables individual shadows for each stroke element (in SVG) - New turtle methods: getPenColor, getHighlightPenColor, getPenSize - New events for keyboard handling: - keymove for board - keydrag for elements - New board attribute fullscreen{ scale: 0.85 } - New board attribute `logging`: enables logs of user activity - New attribute transitionProperties: enables more flexible transitions - New point faces | ('divide') and - ('minus') - New attributes distanceX/Y for infobox element Improvements ------------ - Stability of bounding box after orientation changes or resizes if `keepaspectratio=true` - Remove all 3rd party dependencies of jsxgraphcore.js, e.g. canvas. - Ecosystem: - .gitignore, Makefile, package.json - Add github actions - Add `distrib/jsxgraphcore.js` and `distrib/jsxgraphsrc.js` to .gitignore - Update README.md - Add version number to API references - Add unit tests - Continuous improvement of `index.d.ts` - Deep merging of attributes: new method `mergeAttr` in `env.js` - Merge document attribute as black box instead of object (shadowDOM) - Improve shadow DOM support - Improve browserless support - API docs - Click on slider triggers 'drag' event - Add dependence on elements when creating JessieCode function - startAnimation: allow functions as parameters - Update JSXCompressor package Bug fixes --------- - 3D curves - Swap ids of navigation buttons up/down - Coords event handler - Pass explicit reference to $jc$ in jessiecode.js - inherited visibility of hatch - Keep resized view centered if not setting bounding box - Set renderer argument when loading board from string - Some fixes for IE11 compatibility - Fix regression in snapToGrid - updateContainerDims: avoid NaN when containerObj is not attached to the page - Remove the global variable `x_internalload` - Speed improvement in defaultAxes 1.4.6 ==== New features ----------- - New feature: ids for navigation buttons - New ticks attribute `ticksPerLabel`: allows minor ticks to be labelled as well - Attribute `hasInnerPoints` for curves - Set evenodd fill rule for polygon fills Improvements ------------ - Refactor 3D API - Refactor text handling (MathJax / JessieCode / HTML) - Allow functions as input for labels of checkbox, input and button - TypeScript: fontUnit added to TextOptions - Clipping: handle more extreme cases - Fullscreen mode support independent from browser zoom level (webkit) Bug fixes --------- - Conflicting 2D and 3D calls - polygonalchain: add / remove points - Replace fullscreen icon by SVG image - Problems with integral element / gliders on function graphs which are not defined everywhere (like log) 1.4.5 ==== New features ----------- - New element attribute `rotatable` - 3D points: new method setPosition3D() Improvements ------------ - Allow value tags in strings in combination with MathJax - Gradually improvement of index.d.ts - API doc - JSXGraph in shadowDOM - FullscreenMode in shadowDOM - Speed improvement COBYLA Bug fixes --------- - Handling of backslashes in strings. Improves MathJax in JessieCode - Keyboard mode: allow o-key and arrow keys in input fields - Precision problem in tick labels - Fix regression: snapToGrid for lines - Fix regression: resizeObserver was broken in v1.4.4 1.4.4 ==== New features ----------- - Intersecting points of polygons with other elements - Support usage of jsxgraph in shadowDOM Improvements ------------ - Additions to index.d.ts - Initial API doc for some 3D elements - Handling of parallel lines and parallel arrows - Support of 3D elements Bug fixes --------- - Add file options3d.js to jsxgraphcore.js - Resize of deleted container 1.4.3 ==== New features ----------- - Experimental support of 3D elements Improvements ------------ - Many improvements to index.d.ts - Make JSXGraph available as ES6 module Bug fixes --------- - Ticks are now parents of their tick labels - polygon.insertPoints and polygon.addPoints - JessieCode dump of slider elements - Resolve shortcuts also for trace attributes 1.4.2 ==== Improvements ------------ - Gradient fill color for points - Many improvements to index.d.ts - Improved keyboard control - Some preparations for 3D support - Reduce thick focus box on webkit browsers Bug fixes --------- - Fix touch events for iOS < 13 - Bug fix: beautifulScientificTickLabels for numbers with negative exponents 1.4.1 ==== New features ----------- - API change: the number of digits in a text element is now set generally with the attribute `digits`. The attribute "precision" is used to decide if a pointer device is close enough to a JSXGraph element to be considered as touching the element. The old attributes `precision` for the number of digits are still working but marked as deprecated. Improvements ------------ - Update JessieCode parser - View point with keepaspectratio:true is now centered - JessieCode: points can now have names like X, Y, L. Previously, there was a conflict with function names with the same name - JessieCode: allow map functions without parameters - Refactor ca.js - API docs - index.d.ts Bug fixes --------- - Clipping: various bug fixes - Fullscreen mode - SVG screen shots - Default axis ticks in JXG.Dump.toJessie and JXG.Dump.toJavaScript. - Fix problems with board.resizeContainer() Ecosystem ------------ - npm package does not rely on the npm package canvas anymore - Add unit tests for JXG.Math.Clip - Use eslint for linting - Use terser for minifying Many thanks go to David Holmes for his contributions. 1.4.0 ==== New features ----------- - New element `boxplot` - New element `foreignobject`, shortcut `fo` - New point attribute `attractToGrid` - New method `Polygon.pnpoly()` - New method `JXG.Math.statistics.percentile` - New method `JXG.Math.Numerics.lagrangePolynomialTerm()`, also available as `JXG.Math.Numerics.lagrangePolynomial.geTerm()` - Curve / circle intersection - New color scheme, optimised for color blindness, see `JXG.palette`. Old color scheme can be restored by calling `JXG.setClassicColors()`. Improvements ------------ - Keyboard interaction - isOn method for elements with `hasInnerPoints` attribute - Much smoother two finger handling for pointer events - Intersection of curves having different Bezier degrees - API docs: many bug fixes and new examples - Jessiecode tag - Security: sanitize HTML in texts in case of JessieCode Bug fixes --------- - `zoom100()` restores the original bounding box - `Button.setText()` - Regression on glider.position - ResizeContainer conflicted with zoom level - Regular polygon - `setAngle()` - JessieCode Ecosystem ------------ - Testing with Travis is enabled again - Revoke unit tests using Karma and Jasmine - Update Makefile and package.json, less dependencies from npmjs. `make core-min` is now included in `make core`. Many thanks go to Christian Lawson-Perfect for his contributions. 1.3.2 ==== Improvements ------------ - Fullscreen mode is now also possible with an out div, see Bug fixes --------- - Fixed regression regarding full screen mode - Fixed board freeze when certain devices are hit with the palm 1.3.1 ==== New features ----------- - New method: JXG.Math.Geometry.affineRatio Improvements ------------ - Responsiveness: more stable reaction to size changes - Improved fullscreen mode in cases where the JSXGraph div does not have fixed width or height - `isOn` method covers also polygons with `hasInnerPoints:true` - API doc Bug fixes --------- - Fixed: computation of intersection between parallel and (half-)bounded line - Fixed: Intersection points between circle and line with straights off - Fixed: handling of many (uncontrolled) simultaneous pointer events - Fixed regression: points defined as transformations of other points 1.3.0 ==== New features ----------- - Responsiveness: - JSXGraph updates bounding box on resize events triggered by resizeObserver, also e.g. when changing from display:none. - New board attribute `moveTarget` allows to continue dragging outside of the board - New attribute `fontUnit` for texts - Accessibility: keyboard control of JSXGraph boards - New JSXGraph objects `curvedifference`, `curveintersection`, `curveunion` - New arrow head type 7 - JessieCode: JessieCode tags support attribute `src`. - Angle: new attribute value `radius:'auto'` - New math functions erf, erfc, erfi, ndtr, ndtri, acosh, asinh - New math functions (comparisons and logical operators as functions): lt, gt, leq, geq, eq, neq, and, or, not, xor - New method: point.isOn(element) Improvements ------------ - Arrows on curves: default arrow type 7 - Smoother animations of texts: pixel position of texts is no longer rounded - Remove internal helper points if parent object is deleted (somewhat experimental) - New default: minimizeReflow:'none' - New method `coordsOnArc` - In fixed angles (set with `setAngle`) all three points now be dragged. - Intersection with arc behaves like intersection with circle - TypeScript: improve and update `index.d.ts` - API docs Bug fixes --------- - slopeTriangle: attribute `topPoint` - Snapping of glider to curve - Magnetized points on polygons - JessieCode parser - Clipping: shapes with holes 1.2.3 ==== Improvements ------------ - `el.hideElement()`, `el.showElement()` not deprecated anymore. Same as `el.setAttribute({visible:false/true})` - Better auto positiong of labels - `board.fullUpdate()` updates size info of text elements. This is helpful for JSXGraph constructions which are initialised in a hidden parent element. When the board becomes visible, a call of board.fullUpdate() is sufficient to correct the position of the text elements. This can be triggered in an event listener (by the developer). See . Bug fixes --------- - Fix bugs in API doc - MathJax texts in fullscreen mode - Plot of conic sections of type parabola New features ----------- - KaTex support (`useKatex:true`) - Add Typescript definition file `index.d.ts` (not yet complete). Thanks to David Holmes!!! - `el.hide()`, `el.show()`, alias for `el.hideElement()`, `el.showElement()`. - Experimental: new polygon points will be deleted if polygon is deleted. In the future, this might be done in other cases, too. 1.2.2 ==== Improvements ------------ * Clipping: allow clipping of arcs and sectors, as well as rings, i.e. clipping of clipped paths * Update WordPress plug-in * Update MediaWiki plug-in * Improve plotting stability (v2 and v4) Bug fixes --------- * Clipping * camelCase for radiusPoint and anglePoint attributes * Arrow heads on curves * API docs * JessieCode procedure calls Experimental ----------- * Add cobyla port (non-linear programming) 1.2.1 ==== Bug fixes --------- * board attribute `maxFrameRate` * Fix regression in interval arithemetics * Plot version 4: take prime number as number of steps * Fix disappearing glider on natural spline 1.2.0 ==== New Features ------------ * New board attributes: - title - description - drag - showInfobox - maxFrameRate * New arrow heads * Ticks and hatches for curves * New curve type: metapost * New element: metapostspline * New math function: ratpow(base, m, n) * Chandrupatla's root finding algorithm * Interval arithmetics * New attribute: `precision` for elements for method `hasPoint` * New color function `JXG.contrast` Improvements ------------ * Experimental new curve plotting algorithm * Root finding algorithm: improved bracketing * API docs * ARIA attributes * Simulate touch event property evt.scale for pointer events * Enable setAttribute for attribute `layer` * Enable centripetal cardinal splines * JXG.Math.Clip: allow coordinate arrays as input * JXG.Math.Clip: improve stability and supported cases * Scientific notation for ticks labels * Allow floating point numbers for attributes `strokeWidth` and `size` * Add methods for sequence acceleration (math/extrapolate.js) * New helper functions in JXG.type Bug fixes --------- * Inequality element * Polygon intersection * Axis ticks, arrow heads * Projective transformations of curves * `alwaysIntersect` attribute for line intersections * Sliders with visible:false * Links in API docs * generateGaussian * Dashed curves * RDP algorithm for curves with singularities 1.1.0 ==== New Features ------------ * New JSXGraph element `polygonalchain` * New attribute `gradient` for color gradients. See API documentation for more attributes like gradient angle. * New method `JXG.Math.statistics.generateGaussian` * Slider values can be set by "up" events on the base line. Improvements ------------ * Support for MathJax 3 * Exact position of arrow heads for curves * Autoposition of labels * API documentation * Support for arrow heads on curves in canvas renderer Bug fixes --------- * Fix intersection of polygons with `polygon1.intersect(polygon2)` * Update build scripts * Remove unnecessary files from NPM repsository 1.00.0 ==== Compatibility: ------------ * Safari / iOS 13 use pointer events. * Since Safari 12, `board.renderer.screenshot()` also supports texts in Safari. * JessieCode parse errors are handed over to the user and can be catched by try {} catch (e) {} New Features ------------ * Polygon / curve clipping and boolean operation on curves is now enabled. Possible operations are intersection, union or difference of curves, polygones or circles. * New math functions: cot and acot, nthroot, cbrt, binomial. Available as JXG.Math.cot, ... * New method `JXG.math.norm`: Euclidean norm of a vector * Add board attributes "showFullscreen" and "fullscreen" * New board attribute `maxBoundingBox` * Faces for hatch marks and ticks (|><) * Create parabola given by a point and a pair of coordinate pairs. * Styling and highlighting of navigation bars with CSS * Add new parameter `delay` for CoordsElement.startAnimation() * Polar grids * New attribute `highlightSize` for arrow heads. * Reflection, mirroring of polygons * New attribute for labels `autoPosition: true/false` enables automatic positioning of labels. Improvements ------------ * screenshot and base64 dumps include images now (dumpToURI) * API documentation contains many new examples * API documetation for Chart and Legend elements * Curve plotting: massive speed improvements and plotting precision * Multi-touch rotations are much more stable for pointer events * Pointer events use different precision when using pen, mouse or touch. New events for pen: pendrag, pendown, penmove. * Highlighting and hit event for touch and pointer events * Fire `hit` event also when dragging an element * Increased precision in JXG.Math.Numerics.Jacobi * Improved zoomElements * Enable attributes for parabola subelement line * Sketch reader: copy of polygons * Sketch reader: enable reflection of circle to be circle * Massive speed-up if many elements are deleted * Use '\u26f6' unicode symbol for fullscreen * Better compromise for `_insideCanvas()` for labels. * JessieCode handling of sliders * JessieCode: Use JSXGraph method `JXG.Math.pow` for a^b. This fixes problems like plotting of (-3)^(1/3) * JessieCode: Add all JSXGraph math functions * Work on unit tests * Refactor reflection and mirrorelement * Code refactoring * Update wordpress plug-in to use jsxgraphcore.js from jsxgraph.org * Update MediaWiki plug-in * Update package.json * Improved pan / pinch-to-zoom handling Bug fixes --------- * Glider on transformed curves * Fix call of free() * Address npm security alerts * Line rotation with pointer events on Edge * Dragging of labels * Input functions for curves failed for certain JessieCode functions * Bug fix: handling of pointer events * Speed-up by preventing multiple updates of drag element. * Precision of `hasPoint` for curves * Make all examples in API docs ready for fullscreen mode * Fix a very old bug in unzip algorithm for multi-file archives * size[] for axis labels of display='internal' * Animation of gliders on lines with slope!=0 * Fix arrow head placement for type=3 * Convert attributes in subobjects to lowerCase * Fix ticks for certain axes which are neither horizontal nor vertical * Firefox multi-touch pointer events * Ticks labels in canvas renderer * Better support of JSXGraph with nodejs * Manipulating ticks visibility during `board.suspendUpdate()`` * Prevent flickering of text elements during creation * Stop using deprecated hide method in `changePointStyle` * Various changes in sketch reader for sketchometry * Geogebra reader: Fix argument order when mirroring across line 0.99.7 ==== Compatibility: ------------ Option.semicirclearc.midpoint -> Option.semicirclearc.center New Features ------------ * New elements: 'cardinalspline', 'comb': * New element: (numerical) derivative (experimental). * New element 'reflection': allows point, line, curve, polygon, circle, arc, sector and angle * New element 'mirrorelement': allows point, line, curve, polygon, circle, arc, sector and angle * New possibility to create element by supplying element + transformation: This is possible for point, line, curve, polygon, circle, arc, conics, sector and angle. * New method `Curve.moveTo()` * Add option`'auto'` for `anchorX` and `anchorY` attribute of labels * SVGRenderer.screenshot: Add parameter "ignoreTexts * New board attribute value for renderer: 'auto'. * Pointer events are enabled now for Chrome and Edge on Windows * New curve attributes `recursionDepthLow` and `recursionDepthHigh` allow user controlled plot quality * The inequality element takes now also the functiongraph element as input * New function `JXG.Math.lcm(a, b)` * New attribute 'sizeUnit` to enable the user to supply the point size in COORDS_BY_USER units Improvements ------------ * require.js support (especially in moodle) * Documentation * Enable transformation "rotate" of type `[angle, [x,y]]` * Default position of line labels * Improved `trim()` method * Improve code quality by using suggestion from jslint * Add method `Type.isTransformationOrArray()` * New default value `selection:'auto'` for arcs and sectors * Use `