Norwegian Puffin Movies

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

    0.2.0 • Public • Published


    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.


    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.


    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 {}.


    The following string values can be used as options.palette:

    • grayscale
    • red
    • green
    • tree (brown and green tones)
    • snow (light-blue tones)


    julia-set is licensed under the Apache 2.0 license.


    npm i julia-set

    DownloadsWeekly Downloads






    Unpacked Size

    50.7 kB

    Total Files


    Last publish


    • slowli