Name | Last modified | Size | Description | |
---|---|---|---|---|

Parent Directory | - | |||

COLOURS/ | 2021-12-22 13:10 | - | ||

EFFECTS/ | 2021-12-22 12:35 | - | ||

Messages/ | 2021-10-20 14:08 | - | ||

README.html | 2022-03-08 09:36 | 7.3K | ||

README.md | 2022-03-08 09:36 | 5.7K | ||

art.zip | 2022-03-10 11:03 | 22M | ||

art/ | 2022-03-08 09:33 | - | ||

art_no_data.zip | 2022-03-10 11:03 | 1.9M | ||

colourspace/ | 2022-03-08 09:02 | - | ||

components/ | 2022-03-08 09:04 | - | ||

core/ | 2022-03-08 09:00 | - | ||

data.zip | 2022-03-10 11:03 | 20M | ||

data/ | 2021-12-22 13:13 | - | ||

examples/ | 2021-12-22 12:19 | - | ||

geo/ | 2022-03-08 09:13 | - | ||

image/ | 2022-03-08 09:14 | - | ||

noise/ | 2021-05-22 11:49 | - | ||

sdf/ | 2021-10-20 13:30 | - | ||

string/ | 2022-03-08 09:17 | - | ||

svg/ | 2022-03-08 09:18 | - | ||

tests/ | 2022-03-08 09:20 | - | ||

tiling/ | 2021-08-27 11:14 | - | ||

types/ | 2022-03-08 09:21 | - | ||

API documentation is in the various subdirectories, e.g. `string/api.md`

.

The code here is generally licensed as CC-BY (https://creativecommons.org/licenses/by/4.0/).

Attribution should be to Mary Holstege and include a link to the code base at http://mathling.com/code/

Some of the same data is based on WordNet 3.0® and is made available under that license (see `data`

directory).

The noise code is a port of noise-rs which is used under an MIT License (see `noise`

directory).

The colour space conversion code is a port of hsluv-c which is used under an MIT License (see `colourspace`

directory).

The SDF code is based in part on code from Inigo Quilez which is used under an MIT License (see `sdf`

directory).

The gradients are based gradient definitions from a variety of sources used under MIT and BSD Licenses (see `COLOURS`

directory).

Geometry:

- More refactoring of edge/point/circle code (shifting to specific type module)
- Some support for Platonic solids and generic polyhedra
- Signed distance function for region types
- ARF graph layout
- Point maps (hash map for points)
- Additional circle/polygon intersection support (needs more tests)
- Isometric projection
- Pass-through slot bodies in various geometric operations
- Fix bug in
`box:max-y`

for spaces - Fix bug in
`geom:project`

return type - Fix cardinality bug in some instances of
`mutate()`

Sequences:

- Consolidate some sequence/set operations in sequences.xqy (Fibonacci, combinations and permutations)
- Additional sequences: deBruijn, Thue-Morse, Feibenbaum, ruler

Utilities:

- Add Poisson and binomial Poisson distributions
- Matrix operations
- Stack data structure
- Base conversions
`util:logK() and`

util:log2()` (log base K and log base 2)`rand:mutual-prime-pair()`

(pair of mutually prime integers)`util:modix`

handle negative numbers to preserve sequentiality- Include canvas edge in
`paths:array()`

calculations - Fix mishandling of pre-multiplier in resampling
- Bugs in skewed normal distribution
- Cardinality errors in some random functions
- Fix function annotation mechanism

Drawing/Colour/Effects:

- Add configuration for SVG vs DSL drawing so components can be agnostic
- Integrate projection into drawing functions for solids
- Diffuse lighting model
- Effect manipulations: merging, renaming, changing lighting colour or point light source, changing extent, changing turbulence
`gradient:random-gradient()`

select a random well-known gradient or its reverse- Doc fix: tonemapping should take place over linear RGB (XYZ space)

Components:

- Functions to array points on circular arc, helix, spirals of various types
- Mutation function library
- L-systems
- Trees
- Smooth curls
- Flowfields
- Mutated torus knots
- Frustrated N-gons
- Mountain ranges

Additions, extensions, and bug fixes to geometry code:

`geo:region-intersects`

between most region types`geo:region-contains`

between some region types`geo:shortest-distance`

from point to region`geo:intersection`

between edges`geo:bounding-circle`

of region (Weltz' algorithm)`geo:bounding-box`

of region`geo:region-center`

`geo:regions`

edge following to construct polygons from edge graph- Graph object (
`graph.xqy`

) - Squarified tree construction (
`treemap.xqy`

) - Delaunay triangulation (
`delaunay.xqy`

)

Drawing code

- Simple geometric object to SVG rendering (
`draw.xqy`

) - SVG filter construction/manipulation (
`effect.xqy`

)

- Simple geometric object to SVG rendering (
Miscellaneous

- Read PPM image data into non-sparse matrix, much faster
- ACES, Hablic, Reinhard tonemapping (
`tonemap.xqy`

) - Add missing prefixes to
`$EDGE-START`

and`$EDGE-END`

in tiling code - Enpsulate entity/string dictionary saving methods
- Linear, quadratric, and cubic root calculations (
`roots.xqy`

) - Complex numbers (
`complex.xqy`

)

Major refactoring of geospatial code, with some additional operations for splinning and reversing edges, among others. As a consequence of this a number of edge and path functions have shifted from

`euclidean.xqy`

to`edge.xqy`

or`path.xqy`

in some cases with a slight renaming. Example:`geom:linear-edge-point`

is not`edge:linear-point`

. In addition a few functions have moved to`utilities.xqy`

(`remap-degrees`

,`remap-radians`

).Handle error cases in

`edge:quad-length`

better.Change

`geom:inclination`

to define it as 90° not 0° when the points are the same.Change

`geom:destination`

to avoid small round-off errors in Z values from inclination imprecision.Add split tree and well-separated pair decomposition and spanning edges on WSPDs. (Depends on bug-fix in Saxon 10.6 to work.)

Add support for dithering of raw images.

Add support for complex numbers.

Add modules for signed distance function calculation, with various rendering and lighting calculations, with tests.

Add SVG gradient collection and module for manipulating SVG gradients.

Add permutation and combination calculations to

`utilities.xqy`

.Slight refactoring of random distributions code to avoid tangled imports.

ε is now defined globally in

`config.xqy`

`util:twixt`

will reorder out-of-order arguments.

Bug fix to

`rand:skewed()`

: incorrect calculation of standard deviation.Bug fix to

`rand:flip()`

: scaling error.Reimplementation and API change to

`rand:random-selection()`

to give more precise probability mapping.Additional/cleaned-up randomizer tests: advice on optimizer flags for Saxon EE

`util:rangeindex()`

+ tests