Iterations of the Dragon Curve

Various properties of finite iterations of the Heighway/Harter dragon curve and twindragon curve, including boundary, area, convex hull, minimum rectangle, XY convex hull, centroid, inertia, complex base i±1, area tree, and some properties of the fractal limit including boundary and fixed point.

A sample dragon curve image (about 2.4 kbytes).

Read draft 23,

Also by plain HTTP or by FTP or by RSYNC if desired. The sig file is a Gnu PG ascii armoured signature generated from my key.

"Draft" here means believed correct as far as it goes but there might be more to come in which case sections and equations will renumber. The quality varies in places, and it's becoming long, but there's plenty of pictures to look at. The LaTeX source uses PGF for pictures.

Document copyright 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Kevin Ryde. Permission is granted for anyone to make a copy for the purpose of reading it. Permission is granted for anyone to make a full complete verbatim copy, nothing added, nothing removed, nothing overlaid, for any purpose. The PDF rendition contains fonts which are Copyright American Mathematical Society and licensed under the Open Font License.

The source .tar.gz includes various generator and development programs which are all GPLv3 up. They're mostly Perl and a bit rough. Modules used variously include FLAT, Graph, and Math::Geometry::Planar (some debs in my repo). The document has self-tests with Pari/GP and gp-inline. GP functions are extracted to a devel/dragon-defines.gp which is highly specific to the document but might be of interest for experimenting. (Needs at least GP 2.9 up for various things.) Some C code using the Nauty library makes dragon curve graphs and trees for experimenting.

Draft 16 had a typo in the fLpred statement and errors in fR etc formulas and sample values.


Among my own results I like the unique fixed point "ffixed". The write-up is a rather long there, but its a nice "3 for 2" recurrence. Also good is the bit patterns which of "other" for switching between the two n which visit a location in the finite iterations. (Davis and Knuth have this in a folded form.)

A result I didn't reach is the diameter of the twindragon graph. It looks like the answer is a segment away from the curve endpoints, but how to show everything else is closer together, after various curling to sub-curve corners.

Among others' results not otherwise referred to, Albers has a careful calculation for an unfolding angle up to which the curve touches or crosses. The result is a solution to some slightly wild trigonometry which is a particular couple of segments.


See my Math::PlanePath::DragonCurve for some Perl code implementing curve coordinate calculations. The corresponding DragonCurve section of the PlanePath image gallery has some pictures. The complex base i±1 here is ComplexPlus and ComplexMinus.

See my Graph::Maker::TwindragonAreaTree for Perl code creating the area tree in Graph.pm (or anything compatible).

Other pictures:

Here are some dragon curve drawing programs by me and variously posted on Rosetta Code. The algorithms vary with the strengths of each language. (Between 2 and 6 kbytes each, all free software GPLv3 up, included in the .tar.gz above.)


This page Copyright 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 Kevin Ryde.

(Back to the sitemap.)