Optische Täuschung
Tanzende Punkte
============================================

ScriptBegin
var Grafik = "Script Turtle"

var a=19;            // Quadrat
    l=3;             // Linienbreite
    din=4;           //Papierformat    
 
    Fill0  ="black"
    Fill1  ="gray"
    Fill2  ="yellow"; //"white";


//-------------------------------


function init()
{ t.setBrush(Fill1);
  t.setPage(din);
  hoehe=t.P0y()-t.P1y();  breite=t.P1x()-t.P0x();
  t.setAntiAliasing(); 
}

var hoehe,breite;

function draw()
{ //t.drawKoordSystem();
  //t.drawRaster();

  defMuster();
  drawMuster();
  drawBeschriftung(); 
}



function defMuster()
{ 
  t.setNoStyle();
  t.beginPolygon();
  t.goTo(a/2,a/2);     t.moveTo(-a/2,a/2);
  t.moveTo(-a/2,-a/2); t.moveTo(a/2,-a/2);
  t.endPolygon();
  t.setPen(Fill0,0); t.setBrush(Fill0);  
  t.defDraw("Quadrat");

  t.goTo(a+l,0); t.defPoint("ShiftX");
  t.goTo(0,a+l); t.defPoint("ShiftY");

  t.setNoStyle(); t.goTo(a/2+l/2,a/2+l/2);
  t.isoPolygon(1.1*l/2,-1);
  t.setPen("",0,0); t.setBrush(Fill2);  
  t.defDraw("Quadrat",1);
}


function drawMuster()
{
  t.turnTo(10); t.setNoStyle(); 
 
  maxi=Math.floor((breite/2 / (a+l)))+2;
  maxj=Math.floor(hoehe/2 / (a+l))+4;
  //t.msg(maxi+","+ maxj);

  for(i=-maxi; i<maxi; i++)
  { t.goTo(0,0);
    t.shift("ShiftX",i); t.shift("ShiftY",-maxj);

    for(j=-maxj; j<maxj; j++)
    { t.draw("Quadrat"); t.shift("ShiftY",1);
    }    
  }
}


function drawBeschriftung()
{ t.setFont("Arial", a/4, false, 50);
  t.setPen(Fill2);
  t.text(3.5*a, 0.5*a,"Tanzende Punkte");
} 


ScriptEnd#1
============================================