Diafilme zum Morphing

Script mit Doppelklick oder STRG+R aufrufen!
____________________________________________


EscherMorph1
============
ScriptBegin
var Grafik="Script Escher";
var l=10;  // Länge einer Fliese
var fw=45;  // Drehwinkel

var a=30;  // definiert halbe Strecke
var w=-85;
var b=14;

var cRand="Black";
var cFliese="DarkKhaki";
var mm=-1;

var zoom=0;   // morph 
var sw=0;    // Startwinkel
var x0=0;    // Startpunkt
var y0=0;
var d=l/2; // delta


function morphX(x,y)
{// return x;
 return x*(zoom*Math.exp(-Math.sqrt(x*x+y*y)/25)+1);
}

function morphY(x,y)
{// return y;
 return y*(zoom*Math.exp(-Math.sqrt(x*x+y*y)/25)+1);
}


function init()
{ t.setBrush("DarkOliveGreen");
  t.setPage();

  zoom=t.showDia(700, 10, 0.3 );
  fw=fw - 1.15 ;
  if (zoom<=0) {zoom=0; fw=0; t.msg(fw);}  

}

function draw()
{ //t.drawKoordSystem(false);
  //t.drawRaster();
 
  makeline("line");  
  makeFliese("Fliese");

  t.turnTo(0);t.goTo(0,0); 
//  t.draw("Fliese");
  pflaster();
 }


function pflaster()
{ t.setNoStyle();
  t.turnTo(sw);
  t.goTo(0,l/2+d); t.defPoint("ShiftX"); // Schiebvektoren
  t.goTo(l/2+d,0); t.defPoint("ShiftY");

  for(j=-11; j<12;j++)
  {    
    for(i=-8; i<9;i++)
    { 
      t.goTo(x0,y0); t.shift("ShiftY",j);t.shift("ShiftX",i);
     // t.draw("Fliese");
      t.morphDraw("Fliese"); 

    }  
   }
}




function makeFliese(s)
{
  t.goTo(0,0);t.turnTo(fw);
  t.defLine("AB",l);

  t.setPolygon("line");
  t.defDraw("AB",3);

  t.beginPolygon();
  t.setIdentity();
  t.addPolygon("AB");
  t.setRotate(90);
  t.addPolygon("AB");
  t.setRotate(180);
  t.addPolygon("AB");
  t.setRotate(270);
  t.addPolygon("AB");
 
  t.setPen(cRand,mm); t.setBrush(cFliese);
  t.endPolygon();
  t.movePolygon(-l/2,-l/2);
  t.defDraw(s); 
  t.setIdentity();
}


function makeline(s,farbe)
{ t.setNoStyle();
  t.beginPolygon();
  t.goTo(0,0); t.move(a); t.turn(w); t.move(b);
  t.endPolygon(3); 
  t.setPen(farbe);     

  //Polygon an || zur y-Achse spiegeln
  t.defDraw(s);
  t.setMirror(t.lastX(),t.lastY(),t.lastX(),t.lastY()+100,true);
  t.addPolygon(s,-1);
  t.defDraw(s);
  t.setNoStyle();
}


ScriptEnd
-------------------------------------------


