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 variable- z, such as- 'z*z + 0.2i0.5'. It can use binary operators, such as- +,- *or- ^, and standard unary complex functions such as- sinhand- atanh.
- paletteis a named palette or an array of 3- or 4-component colors (encoded as RGB / RGBA, respectively) with each component being an integer from- 0to- 255.
- centeris the center of the rendered rectangular area.
- heightis the height of the rendered area. The width is determined automatically based on- heightand 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 for- HMTLCanvasElement.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:
- grayscale
- red
- green
- tree(brown and green tones)
- snow(light-blue tones)
License
julia-set is licensed under the Apache 2.0 license.