julia-set
Rendering Julia sets for complex functions using WebGL.
This package allows rendering Julia / Fatou sets for complex functions in modern browsers. The resulting images often have fractal-like nature.
API
An image can be rendered using the default export of the package:
declare class JuliaSet {
static render(el: HTMLCanvasElement, options: Options);
constructor(el: HTMLCanvasElement, options: Options);
}
export default JuliaSet;
Here, Options
are defined as follows:
declare interface Options {
code: string,
palette?: string | [number, number, number, number?][],
center?: [number, number],
height?: number,
iterations?: number,
runawayDistance?: number,
antialias?: boolean,
}
-
code
is the function of a complex variablez
, such as'z*z + 0.2i0.5'
. It can use binary operators, such as+
,*
or^
, and standard unary complex functions such assinh
andatanh
. -
palette
is a named palette or an array of 3- or 4-component colors (encoded as RGB / RGBA, respectively) with each component being an integer from0
to255
. -
center
is the center of the rendered rectangular area. -
height
is the height of the rendered area. The width is determined automatically based onheight
and the canvas dimensions. -
iterations
is the maximum number of iterations performed by the algorithm. Greater values reveal more details, but the image may become desaturated. -
runawayDistance
is the stopgap distance for the algorithm. In some cases, increasing it may reveal fractal details. -
antialias
corresponds to the eponymous flag forHMTLCanvasElement.getContext
.
Example
import JuliaSet from 'julia-set';
JuliaSet.render(document.getElementById('canvas'), {
code: 'z * z + 0.33i0.5',
palette: [[255, 255, 255], [0, 192, 0]],
height: 3,
center: [0, 0],
iterations: 75,
runawayDistance: 4,
});
Built-in complex functions
The following functions can be used in options.code
:
Binary operations:
-
+
,-
,*
,/
,^
Unary functions:
- Trigonometric functions:
sinh
,cosh
,tanh
(withsh
,ch
,th
synonyms respectively) - Inverse trigonometric functions:
asinh
,acosh
,atanh
- Exponentiation:
exp
- Logarithm:
log
(with theln
synonym) - Real / imaginary parts of a complex value:
re
,im
- Argument / modulus of a complex value:
arg
,mod
To influence function priority, you can use any of three kinds of brackets: ()
, []
or {}
.
Palettes
The following string values can be used as options.palette
:
grayscale
red
green
-
tree
(brown and green tones) -
snow
(light-blue tones)
License
julia-set
is licensed under the Apache 2.0 license.