static Triangle[] Refine ( Triangle[] initialShape )
{
List<Triangle> shape = new List<Triangle>();
foreach ( var tri in initialShape ) {
var a = tri.A;
var b = tri.B;
var c = tri.C;
var d = Vector3.Lerp( a, b, 0.5f ).Normalized();
var e = Vector3.Lerp( a, c, 0.5f ).Normalized();
var f = Vector3.Lerp( c, b, 0.5f ).Normalized();
shape.Add( new Triangle( a, d, e ) );
shape.Add( new Triangle( d, b, f ) );
shape.Add( new Triangle( e, f, c ) );
shape.Add( new Triangle( e, d, f ) );
}
return shape.ToArray();
}