public override void Regen(Vista v, bool addToDisplayList = true) { ps = v.Scala(p); if (addToDisplayList) { v.AddDL(this, Def.Shape.Nodo, ps.X, ps.Y); } }
public override void Regen(Vista v, bool addToDisplayList = true) { Point2D p1 = nd[0].P; Point2D p2 = nd[1].P; if ((p1 != null) && (p2 != null)) { nd[0].Regen(v, false); // Rigenera i nodi di estremità calcolando solo la scala... nd[1].Regen(v, false); // ... ma senza aggiungerli alla display list pc = v.Scala(Point2D.Midpoint(nd[0].P, nd[1].P)); Point2D delta = p2 - p1; rotation = Math.Atan2(delta.Y * Math.Sign(v.Verso.Y), delta.X * Math.Sign(v.Verso.X)) * 180 / Math.PI; m.Reset(); // Torna alla matrice identità (non richiedo riallocazione) m.Translate(pc.X, pc.Y); m.Rotate((float)rotation); if (addToDisplayList) { v.AddDL(this, Def.Shape.Ramo, pc.X, pc.Y); } } }