0.2.0 • Published 3 years ago
julia-set v0.2.0
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,
}codeis 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 assinhandatanh.paletteis a named palette or an array of 3- or 4-component colors (encoded as RGB / RGBA, respectively) with each component being an integer from0to255.centeris the center of the rendered rectangular area.heightis the height of the rendered area. The width is determined automatically based onheightand the canvas dimensions.iterationsis the maximum number of iterations performed by the algorithm. Greater values reveal more details, but the image may become desaturated.runawayDistanceis the stopgap distance for the algorithm. In some cases, increasing it may reveal fractal details.antialiascorresponds 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,thsynonyms respectively) - Inverse trigonometric functions:
asinh,acosh,atanh - Exponentiation:
exp - Logarithm:
log(with thelnsynonym) - 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:
grayscaleredgreentree(brown and green tones)snow(light-blue tones)
License
julia-set is licensed under the Apache 2.0 license.