/// <summary>
        ///
        /// </summary>
        /// <param name="p0"></param>
        /// <param name="p1"></param>
        /// <param name="p2"></param>
        /// <returns></returns>
        public static Vec3d GetIncenter(Vec3d p0, Vec3d p1, Vec3d p2)
        {
            double d01  = p0.DistanceTo(p1);
            double d12  = p1.DistanceTo(p2);
            double d20  = p2.DistanceTo(p0);
            double pInv = 1.0 / (d01 + d12 + d20); // inverse perimeter

            return(p0 * (d12 * pInv) + p1 * (d20 * pInv) + p2 * (d01 * pInv));
        }