Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

I Generating Aperiodic Tilings with Plane Waves

  1. Dec 26, 2016 #1
    Hello, I saw an applet awhile ago during a late-night mathematical web-surfing marathon that used the addition of plane waves at different angles to generate aperiodic tilings (like the penrose tiling.) I haven't been able to find it again. I'm trying to make my own version of it, using the same idea.

    Code (Text):

    xmin = -10; (*Min X coord to graph*)
    xmax = 10; (*Max X coord to graph*)
    ymin = -10; (*Min Y coord to graph*)
    ymax = 10; (*Max Y coord to graph*)
    rez = 300; (*Graph resolution*)
    sym = 8; (*Directions of symmetry*)
    v = 2*Pi*(Sin[i*2*Pi]*x + Cos[i*2*Pi]*y);
    Sinu = Cos[v];
    P = N[Sum[Sinu, {i, 0, (sym - 1)/sym, 1/sym}]]
    MatrixPlot[ Table[P, {x, xmin, xmax, (xmax - xmin)/rez}, {y, ymin,   ymax, (ymax - ymin)/rez}]]
    It works like a charm for even numbers of symmetry (change the 'sym' variable to play around with different fold symmetries), but for odd numbers of 'sym' it generates patterns with 2*sym-fold symmetry. I've tried everything, like using Exp[i*v] instead of Cos[v], varying the phase between each of the component waves, and even using Sinu=Cos[v]*UnitStep[v] to stop from getting 'extra' interference, but none of them gives me the correct result for odd numbers :( Help!?
  2. jcsd
  3. Dec 26, 2016 #2


    User Avatar
    2016 Award

    Staff: Mentor

    By construction, your pattern is symmetric for x-> -x, y-> -y, your v changes its sign and cosine is an even function. You cannot produce odd symmetry with it. Using Sinu=Sin[v] might work for odd symmetries.
  4. Dec 26, 2016 #3
    For some reason, using a clipped Sine function seems to work:

    Anyone know why? A regular sine function just creates the double symmetry problem again.

    Code (Text):

    xmin = -10;
    xmax = 10;
    ymin = -10;
    ymax = 10;
    rez = 400;
    sym = 5;
    v = 2*Pi*(Sin[i*2*Pi]*x + Cos[i*2*Pi]*y);
    Sinu = Max[Sin[ v], 0];
    P = Sum[Sinu, {i, 0, (sym - 1)/sym, 1/sym}];
    MatrixPlot[ Table[N[P], {x, xmin, xmax, (xmax - xmin)/rez}, {y, ymin,   ymax, (ymax - ymin)/rez}]]
    Last edited: Dec 26, 2016
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Have something to add?
Draft saved Draft deleted