  let v = ( aLen*aLen + bLen*bLen - cLen*cLen ) / ( 2 * aLen * bLen );
    if( v < -1 )		v = -1;	// Clamp to prevent NaN Errors
    else if( v > 1 )	v = 1;
    return Math.acos( v );
}

// #endregion


class FabricUtil{
    // #region POINTS
    static createPointsFromChain( chain, incExtra=false ){
        const cnt  = ( incExtra )? chain.count + 1 : chain.count;
        const pnts = new Array( cnt );

        // Point for each bone
        let p;
        for( let i=0; i < cnt; i++ ){
            p        