#Table cloths

#Flat
I started out putting a plaid/gingham pattern into perspective like a boundless table cloth:

<!-- language: lang-cplusplus -->

    unsigned char RD(int i,int j){
        float s=3./(j+99);
        return (int((i+DIM)*s+j*s)%2+int((DIM*2-i)*s+j*s)%2)*127;
    }
    unsigned char GN(int i,int j){
        float s=3./(j+99);
        return (int((i+DIM)*s+j*s)%2+int((DIM*2-i)*s+j*s)%2)*127;
    }
    unsigned char BL(int i,int j){
        float s=3./(j+99);
        return (int((i+DIM)*s+j*s)%2+int((DIM*2-i)*s+j*s)%2)*127;
    }

![flat table cloth][flat]

#Ripple
Then I introduced a ripple (not strictly correct perspective, but still in 140 characters):

<!-- language: lang-cplusplus -->

    unsigned char RD(int i,int j){
        float s=3./(j+99);
        float y=(j+sin((i*i+_sq(j-700)*5)/100./DIM)*35)*s;
        return (int((i+DIM)*s+y)%2+int((DIM*2-i)*s+y)%2)*127;
    }
    unsigned char GN(int i,int j){
        float s=3./(j+99);
        float y=(j+sin((i*i+_sq(j-700)*5)/100./DIM)*35)*s;
        return (int((i+DIM)*s+y)%2+int((DIM*2-i)*s+y)%2)*127;
    }
    unsigned char BL(int i,int j){
        float s=3./(j+99);
        float y=(j+sin((i*i+_sq(j-700)*5)/100./DIM)*35)*s;
        return (int((i+DIM)*s+y)%2+int((DIM*2-i)*s+y)%2)*127;
    }

![rippled table cloth][ripple]

#Colour
Then I made some of the colours more fine grained to give detail on a wider range of scales, and to make the picture more colourful...

<!-- language: lang-cplusplus -->

    unsigned char RD(int i,int j){
        float s=3./(j+99);
        float y=(j+sin((i*i+_sq(j-700)*5)/100./DIM)*35)*s;
        return (int((i+DIM)*s+y)%2+int((DIM*2-i)*s+y)%2)*127;
    }
    unsigned char GN(int i,int j){
        float s=3./(j+99);
        float y=(j+sin((i*i+_sq(j-700)*5)/100./DIM)*35)*s;
        return (int(5*((i+DIM)*s+y))%2+int(5*((DIM*2-i)*s+y))%2)*127;
    }
    unsigned char BL(int i,int j){
        float s=3./(j+99);
        float y=(j+sin((i*i+_sq(j-700)*5)/100./DIM)*35)*s;
        return (int(29*((i+DIM)*s+y))%2+int(29*((DIM*2-i)*s+y))%2)*127;
    }

![coloured table cloth][colour]

  [flat]: https://i.sstatic.net/boPfJ.png "flat table cloth"
  [ripple]: https://i.sstatic.net/LbR64.png "rippled table cloth"
  [colour]: https://i.sstatic.net/ril9E.png "coloured table cloth"