/// <summary>
 ///
 /// </summary>
 /// <param name="f0"></param>
 /// <param name="f1"></param>
 /// <returns></returns>
 public static FuncField3d <double> CreateIntersection(IField3d <double> f0, IField3d <double> f1)
 {
     return(Create(p => SDFUtil.Intersection(f0.ValueAt(p), f1.ValueAt(p))));
 }
 /// <summary>
 ///
 /// </summary>
 /// <param name="center"></param>
 /// <param name="radius"></param>
 /// <returns></returns>
 public static FuncField3d <double> CreateSphere(Vec3d center, double radius)
 {
     return(Create(p => SDFUtil.Sphere(p - center, -radius)));
 }
 /// <summary>
 ///
 /// </summary>
 /// <param name="f0"></param>
 /// <param name="f1"></param>
 /// <returns></returns>
 public static FuncField3d <double> CreateDifference(IField3d <double> f0, IField3d <double> f1)
 {
     return(Create(p => SDFUtil.Difference(f0.ValueAt(p), f1.ValueAt(p))));
 }