Get unlimited public & private packages + package-based permissions with npm Pro.Get started »

julia-set

0.1.0 • Public • Published

julia-set

Build status 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. More reveals more details, but the picture 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.

Install

npm i julia-set

DownloadsWeekly Downloads

1

Version

0.1.0

License

Apache-2.0

Unpacked Size

54.6 kB

Total Files

6

Last publish

Collaborators

  • avatar