L system MovieClip texturization

Ora che abbiamo trovato l'algoritmo di base le variazioni possono essere infinite.
Con Flash ad esempio si può texturizzare il nostro albero come ci piace distorcendo delle figure ed adattandole alla nostra struttura.
Ho preparato un esempio per consentire a chiunque di inserire le proprie texture all'interno dell'albero.
public function drawFern(p,a,rad,level)
  {
   var c:Point = new Point(p.x + Math.cos(a) * rad * trunkRatio, p.y + Math.sin(a) * rad * trunkRatio);
   p.height = Point.distance(new Point (p.x,p.y), c);
   p.width = (level + 1)*trunkRatio*30
   p.rotation = GeomUtil.radToGrad(a)-90;
   this.addChild(p);
   if (level > 0) {
    a += bendAngle;
    level--;
    var b1:tronco = new tronco;
    var b2:tronco = new tronco;
    var b3:tronco = new tronco;
    b1.x = b2.x = b3.x = c.x;
    b1.y = b2.y = b3.y = c.y;
    drawFern(b1, a - branchAngle, rad * branchRatio, level);
    drawFern(b2, a + branchAngle, rad * branchRatio, level);
    drawFern(b3,a, rad*antiTrunkRatio, level);
   }else {
    var f:foglie = new foglie; 
    f.x = c.x;
    f.y = c.y;
    f.rotation = p.rotation
    this.addChild(f);
   }
  }
Questa volta gli input iniziali non sono le coordinate di un punto (px, py) ma un MovieClip.
Ora abbiamo 2 differenti texture (tronco, foglie).
A differenza del primo esempio, foglie viene posizionato solo quando la variabile level è scesa a zero, quindi nell'ultima recursione.
Inoltre ho inserito una funzione radToGrad, che effettua una conversione da radianti a gradi (non ho mai capito come mai la proprietà rotation si esprime in scomodissimi gradi.)
public static function radToGrad(rad:Number) {
   return rad/Math.PI*180;
  }
Domani cerco di postare la classe completa e qualche immagine di esempio.

0 comments:

Posta un commento