julia-set
TypeScript icon, indicating that this package has built-in type declarations

0.2.0 • Public • Published

julia-set

Build status Coverage report License: Apache-2.0

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 variable z, such as 'z*z + 0.2i0.5'. It can use binary operators, such as +, * or ^, and standard unary complex functions such as sinh and atanh.
  • 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 from 0 to 255.
  • center is the center of the rendered rectangular area.
  • height is the height of the rendered area. The width is determined automatically based on height 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 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 (with sh, ch, th synonyms respectively)
  • Inverse trigonometric functions: asinh, acosh, atanh
  • Exponentiation: exp
  • Logarithm: log (with the ln 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.

Dependencies (0)

    Dev Dependencies (2)

    Package Sidebar

    Install

    npm i julia-set

    Weekly Downloads

    30

    Version

    0.2.0

    License

    Apache-2.0

    Unpacked Size

    50.7 kB

    Total Files

    6

    Last publish

    Collaborators

    • slowli