Dear friends of JSXGraph,
JSXGraph version 1.13.0 introduces a wealth of new features, improvements, and bug fixes. This release represents the culmination of over 400 commits, with pull requests from Christian Perfect, CloudShannon, and Andreas Walter. Thank you so much!
This version finally introduces the convenient shortcut JXG.board(...), replacing the more verbose JXG.JSXGraph.initBoard(...), see the API docs. Similarly, JXG.appBox(...) now enables the creation of a JSXGraph construction wrapped within a surrounding div element. Additionally, JSXGraph elements can be positioned outside the main board and into this wrapper. This behavior is controlled by the clip attribute of JSXGraph elements. The motivation behind appBox is to allow non-mathematical elements, such as sliders and text labels, to be placed outside the board area; see the API docs for an example.
3D support has been massively improved in this version. In particular, rendering speed has increased significantly. Previously, surfaces were displayed only as wireframe models. While this remains possible, surfaces can now utilize the polyhedron3d element for display. Three rendering types are available: 'shader', 'colorarray', and 'colormap'. You can view examples (along with source code) in our examples database:
- 3D parametric surface with colorarray
- 3D parametric surface with type shader
- 3D parametric surface with type colormap
One highly requested feature is the new board attribute cssStyle, which allows authors to style the hosting div element directly. See the example here. This is particularly helpful if the author lacks access to the surrounding HTML.
Further improvements include enhanced statistics capabilities. With JXG.Math.Statistics.boxplot(data), it is now possible to compute the quantiles and outliers of a dataset. The boxplot element can also display outliers conveniently; see the example here.
This release includes a few pull requests that appear to have been assisted by AI. AI tools helped detect bugs in various math functions and generated corresponding unit tests. The good news is that there were not many bugs, and they primarily affected rare edge cases.
Finally, many thanks to all contributors. This project would not be possible without your bug reports, comments, and pull requests.
Enjoy, Alfred