julia-set
v0.2.0
Published
Julia set fractals with WebGL
Downloads
44
Readme
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.