Quasiaddition

Author

Eric W. Weisstein
May 27, 2026

This notebook downloaded from http://mathworld.wolfram.com/notebooks/Tilings/Quasiaddition.nb.

For more information, see Eric's MathWorld entry http://mathworld.wolfram.com/Quasiaddition.html.

Copyright 2026 Wolfram Research, Inc. except for portions noted otherwise

Sources

Berman, S. and Moody, R. V. "The Algebraic Theory of Quasicrystals with Five-Fold Symmetries." J. Phys. A: Math. Gen. 27, 115-129, 1994. https://doi.org/10.1088/0305-4470/27/1/007.

Moody, R. V. and Patera, J. "Quasicrystals and Icosians." J. Phys. A: Math. Gen. 26, 2829-2853, 1993. https://doi.org/10.1088/0305-4470/26/12/022.

Definition

For points represented as coordinate pairs, define x \[LeftTeeArrow] y = phi^2 x - phi y.

phi = GoldenRatio;
quasiAdd[x_, y_] := phi^2 x - phi y;

Pentagon Iteration

The following code starts with the vertices of a regular pentagon and repeatedly left-quasiadds all original pentagon vertices to the current set.

regularPentagonPoints[] := N[CirclePoints[{1, Pi/2}, 5], 50];

quasiadditionStages[points_, n_Integer?NonNegative] :=
	NestList[
		DeleteDuplicates[
			Chop[
				Flatten[
					Outer[quasiAdd, points, #, 1],
					1
				]
			]
		]&,
		points,
		n
	];

stageGraphic[points_] :=
	Module[{range},
		range = 1.08 Max[Norm /@ points];
		Graphics[
			{
				{LightDarkSwitched@GrayLevel[.75], AbsoluteThickness[1.2], Circle[{0, 0}, range]},
				{LightDarkSwitched@GrayLevel[0], PointSize[.018], Point[points]}
			},
			PlotRange -> {{-range, range}, {-range, range}},
			PlotRangePadding -> Scaled[.04],
			Frame -> False,
			Axes -> False
		]
	];

stages = quasiadditionStages[regularPentagonPoints[], 5];

Length /@ stages

figure=stageGraphic /@ stages

GraphicsGrid[Partition[figure,UpTo[3]],Dividers->All]