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