Example #1
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="a"></param>
 /// <param name="b"></param>
 /// <returns></returns>
 public static Interval3d Union(Interval3d a, Interval3d b)
 {
     a.X = Interval1d.Union(a.X, b.X);
     a.Y = Interval1d.Union(a.Y, b.Y);
     a.Z = Interval1d.Union(a.Z, b.Z);
     return(a);
 }
Example #2
0
 /// <summary>
 /// Returns a random vector which has components within the given interval.
 /// </summary>
 /// <param name="random"></param>
 /// <param name="interval"></param>
 /// <returns></returns>
 public static Vec3d NextVec3d(this Random random, Interval1d interval)
 {
     return(new Vec3d(
                interval.Evaluate(random.NextDouble()),
                interval.Evaluate(random.NextDouble()),
                interval.Evaluate(random.NextDouble())));
 }
Example #3
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="point"></param>
 /// <param name="from"></param>
 /// <param name="to"></param>
 /// <returns></returns>
 public static Vec3d Remap(Vec3d point, Interval3d from, Interval3d to)
 {
     point.X = Interval1d.Remap(point.X, from.X, to.X);
     point.Y = Interval1d.Remap(point.Y, from.Y, to.Y);
     point.Y = Interval1d.Remap(point.Z, from.Z, to.Z);
     return(point);
 }
Example #4
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="d0"></param>
 /// <param name="d1"></param>
 /// <returns></returns>
 public static Interval3d Intersect(Interval3d d0, Interval3d d1)
 {
     d0.X = Interval1d.Intersect(d0.X, d1.X);
     d0.Y = Interval1d.Intersect(d0.Y, d1.Y);
     d0.Z = Interval1d.Intersect(d0.Z, d1.Z);
     return(d0);
 }
Example #5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="t"></param>
        /// <param name="from"></param>
        /// <param name="to"></param>
        /// <returns></returns>
        public static double Remap(double t, Interval1d from, Interval1d to)
        {
            if (!from.IsValid)
            {
                throw new InvalidOperationException("Can't remap from an invalid interval");
            }

            return(SlurMath.Remap(t, from.A, from.B, to.A, to.B));
        }
Example #6
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="points"></param>
        public Interval2d(IEnumerable <Vec2d> points)
            : this()
        {
            var p = points.First();

            X = new Interval1d(p.X);
            Y = new Interval1d(p.Y);

            Include(points.Skip(1));
        }
Example #7
0
 /// <summary>
 /// Returns the region of a that is also in b.
 /// </summary>
 /// <param name="a"></param>
 /// <param name="b"></param>
 /// <returns></returns>
 public static Interval1d Intersect(Interval1d a, Interval1d b)
 {
     throw new NotImplementedException();
 }
Example #8
0
 /// <summary>
 /// Returns the union of a and b.
 /// </summary>
 /// <param name="a"></param>
 /// <param name="b"></param>
 /// <returns></returns>
 public static Interval1d Union(Interval1d a, Interval1d b)
 {
     a.Include(b.A);
     a.Include(b.B);
     return(a);
 }
Example #9
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="x0"></param>
 /// <param name="x1"></param>
 /// <param name="y0"></param>
 /// <param name="y1"></param>
 /// <param name="z0"></param>
 /// <param name="z1"></param>
 public Interval3d(double x0, double x1, double y0, double y1, double z0, double z1)
 {
     X = new Interval1d(x0, x1);
     Y = new Interval1d(y0, y1);
     Z = new Interval1d(z0, z1);
 }
Example #10
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="center"></param>
 /// <param name="offsetX"></param>
 /// <param name="offsetY"></param>
 /// <param name="offsetZ"></param>
 public Interval3d(Vec3d center, double offsetX, double offsetY, double offsetZ)
 {
     X = new Interval1d(center.X - offsetX, center.X + offsetX);
     Y = new Interval1d(center.Y - offsetY, center.Y + offsetY);
     Z = new Interval1d(center.Z - offsetZ, center.Z + offsetZ);
 }
Example #11
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="a"></param>
 /// <param name="b"></param>
 public Interval3d(Vec3d a, Vec3d b)
 {
     X = new Interval1d(a.X, b.X);
     Y = new Interval1d(a.Y, b.Y);
     Z = new Interval1d(a.Z, b.Z);
 }
Example #12
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="ab"></param>
 public Interval3d(Vec3d ab)
 {
     X = new Interval1d(ab.X);
     Y = new Interval1d(ab.Y);
     Z = new Interval1d(ab.Z);
 }
Example #13
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="ab"></param>
 public Interval2d(Vec2d ab)
 {
     X = new Interval1d(ab.X);
     Y = new Interval1d(ab.Y);
 }
Example #14
0
 /// <summary>
 /// Expands this interval to include another
 /// </summary>
 /// <param name="other"></param>
 public void Include(Interval1d other)
 {
     Include(other.A);
     Include(other.B);
 }
Example #15
0
 /// <summary>
 /// Returns the region of a that is not in b.
 /// </summary>
 /// <param name="a"></param>
 /// <param name="b"></param>
 /// <returns></returns>
 public static Interval1d Difference(Interval1d a, Interval1d b)
 {
     throw new NotImplementedException();
 }
Example #16
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="a"></param>
 /// <param name="b"></param>
 public Interval2d(Vec2d a, Vec2d b)
 {
     X = new Interval1d(a.X, b.X);
     Y = new Interval1d(a.Y, b.Y);
 }
Example #17
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="point"></param>
 /// <param name="from"></param>
 /// <param name="to"></param>
 /// <returns></returns>
 public static Vec2d Remap(Vec2d point, Interval2d from, Interval2d to)
 {
     point.X = Interval1d.Remap(point.X, from.X, to.X);
     point.Y = Interval1d.Remap(point.Y, from.Y, to.Y);
     return(point);
 }
Example #18
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="x0"></param>
 /// <param name="x1"></param>
 /// <param name="y0"></param>
 /// <param name="y1"></param>
 public Interval2d(double x0, double x1, double y0, double y1)
 {
     X = new Interval1d(x0, x1);
     Y = new Interval1d(y0, y1);
 }
Example #19
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="center"></param>
 /// <param name="offsetX"></param>
 /// <param name="offsetY"></param>
 public Interval2d(Vec2d center, double offsetX, double offsetY)
 {
     X = new Interval1d(center.X - offsetX, center.X + offsetX);
     Y = new Interval1d(center.Y - offsetY, center.Y + offsetY);
 }
Example #20
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="other"></param>
 /// <param name="tolerance"></param>
 /// <returns></returns>
 public bool ApproxEquals(Interval1d other, double tolerance = SlurMath.ZeroTolerance)
 {
     return(Math.Abs(other.A - A) < tolerance && Math.Abs(other.B - B) < tolerance);
 }
Example #21
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="a"></param>
 /// <param name="b"></param>
 /// <returns></returns>
 public static Interval2d Union(Interval2d a, Interval2d b)
 {
     a.X = Interval1d.Union(a.X, b.X);
     a.Y = Interval1d.Union(a.Y, b.Y);
     return(a);
 }
Example #22
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="x"></param>
 /// <param name="y"></param>
 /// <param name="z"></param>
 public Interval3d(Interval1d x, Interval1d y, Interval1d z)
 {
     this.X = x;
     this.Y = y;
     this.Z = z;
 }
Example #23
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="x"></param>
 /// <param name="y"></param>
 public Interval2d(Interval1d x, Interval1d y)
 {
     this.X = x;
     this.Y = y;
 }