File Exchange

image thumbnail

2D Apollonian gasket with n identical circles

version (4.71 KB) by Guillaume JACQUENOT
Plot a 2D apollonian gasket with n identical circles


Updated 01 Feb 2009

View License

This function creates and displays 2D Apollonian gaskets.

In mathematics, an Apollonian gasket or Apollonian net is a fractal generated from three circles, any two of which are tangent to one another

The method used to create the Apollonian gasket is based on circle inversion, which is a geometrical transformation acting with a reference circle that modifies points.
In the plane, the inverse of a point P in respect to a circle of center O and radius R is a point P' such that P and P' are on the same ray going from O, and OP times OP' equals the radius squared
OP * OP' =R²

All circles are created using the inversion properties of circles.

Input: This function takes 6 arguments (each argument is optional)
- a positive integer, which corresponds to the number of circles on the first level of the apollonian packing. (3 at least)
- a positive integer, which corresponds to the number of levels of the apollonian. Higher the number of level is, more numerous the circles will be. 10 levels is a quite high value.
- an interger (0 or 1), which allows to display(1) or not(0) the inversion circles
- an integer (0 or 1), which indicates whether or not a metapost file is created within the results.
- an integer (0 or 1), which indicates whether or not a SVG file is created within the results.
- a string which indicates the filename in which results will be printed.
Output: a struture that contains all informations on created circles on each level:
- S(1) contains all data on level 1, coordinates centers and
radius of each circle

Comments and Ratings (2)

Nice code, but it fails the Apollonian rule when starting with four or more circles. As can be seen in the posted sample image, the second and higher-level circles are not tangent to three circles on the previous level. Something is wrong in the way the inverse-circles are calculated; I haven't tracked down just what.

James Kleiran

Nice piece of work.


An SVG script has been added.
The file has been cleaned up.

A metapost script has been added, enabling the results to be plotted with metapost (mpost)

The plot function has been updated, resulting in fast plot, and lower size picture.

MATLAB Release Compatibility
Created with R14
Compatible with any release
Platform Compatibility
Windows macOS Linux

Inspired by: 2D Apollonian gasket with four identical circles

Discover Live Editor

Create scripts with code, output, and formatted text in a single executable document.

Learn About Live Editor