1. Construction method of protofield primitive

The wave configuration below I call a Protofiled. This primitive building block forms the basis of most of the generative art and animation I have produced over the last few years. It is fundamentally very simple, yet by rotating, combining and varying the frequencies of different protofield primitives we can produce a surprisingly rich set of visuals. I only discuss the fundamentals of the algorithm below and don't get into color or animation methods.

Hover over diagram above to change x, y input values

In this example wavelength is determined by the regular division of 'origin circle'

Frequencey: f  
a = (x2 + y2 - r2) / 2y
Wave orthoganal centerY:
Wave orthoganal radius:
√((y - a)2 + x2)
b = (y2 - ay) / x
Wave centerX:
x + b
Wave center radius:
√(b2 + y2)
D = Cos-1(r / (x + b))
Wave alpha:

2. Working drawings for above calculations

3. Rotating protofields to make a quasicrystal

Protofield primitive from above is simply rotated and wave values [-1...1] are summed for each rotation step. A single rotation step I call a Domain. In this example all domains have the same frequency. Looping through each domain is the source of the inefficiency in the algorithm. I wonder if there is a mathematical shortcut to summing each domain wave value for each pixel.

From above, wave value is calculated either by Sin(D * f) or Cos(D * f)

Rotation step:



When (Frequency is an integer and even) and (Domains is Even) and (Phase = Sine), waves cancel out completely