ruff-0.4.0.1: relatively useful fractal functions

Description

External angles give rise to kneading sequences under the angle doubling map. Internal addresses encode kneading sequences in human-readable form, when extended to angled internal addresses they distinguish hyperbolic components in a concise and meaningful way.

The algorithms are mostly based on Dierk Schleicher's papers Internal Addresses Of The Mandelbrot Set And Galois Groups Of Polynomials (version of February 5, 2008) http://arxiv.org/abs/math/9411238v2 and Rational parameter rays of the Mandelbrot set (version of August 11, 1998) http://arxiv.org/abs/math/9711213v2.

Synopsis

# Documentation

type Angle = Rational Source #

Angle as a fraction of a turn, usually in [0, 1).

tune :: Angle -> (Angle, Angle) -> Angle Source #

Tuning transformation for angles. Probably only valid for angle pairs representing hyperbolic components.

prettyAngles :: [Angle] -> String Source #

angles :: Angle -> [Angle] Source #

All external angles landing at the same location as the given external angle.

type BinAngle = ([Bool], [Bool]) Source #

Binary representation of a (pre-)periodic angle.

Convert an angle to binary representation.

Convert an angle from binary representation.

btune :: BinAngle -> (BinAngle, BinAngle) -> BinAngle Source #

Tuning transformation for binary represented periodic angles. Probably only valid for angle pairs representing hyperbolic components.

Period under angle doubling.

Preperiod under angle doubling.

All external angles landing at the same location as the given external angle (binary angle variant).

Constructors

 Zero One Star

Instances

Kneading sequences. Note that the Aperiodic case has an infinite list.

Constructors

Instances

Kneading sequence as a string. The Aperiodic case is truncated arbitrarily.

The kneading sequence for an external angle.

The period of a kneading sequence, or Nothing when it isn't periodic.

Unwrap a kneading sequence to an infinite list.

Internal addresses are a non-empty sequence of strictly increasing integers beginning with '1'.

Constructors

Instances

Construct an InternalAddress from a kneading sequence.

Construct a valid InternalAddress, checking the precondition.

Extract the sequence of integers.

Angled internal addresses have angles between each integer in an internal address.

Constructors

 Unangled Int Angled Int Angle AngledInternalAddress

Instances

Angled internal address as a string.

The angled internal address corresponding to an external angle.

Builds a valid AngledInternalAddress from a list, checking the precondition that only the last 'Maybe Angle' should be Nothing, and the Integer must be strictly increasing.

Convert an AngledInternalAddress to a list.

The pair of external angles whose rays land at the root of the hyperbolic component described by the angled internal address.

Split an angled internal address at the last island.

The inverse of splitAddress.

The period of an angled internal address.

Parse an angle.

Parse a list of angles.