juliaset
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 fractallike 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 4component 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 'juliaset';
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,
});
Builtin 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
(lightblue tones)
License
juliaset
is licensed under the Apache 2.0 license.