1. Limited time only! Sign up for a free 30min personal tutor trial with Chegg Tutors
    Dismiss Notice
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
    2017 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