/// <summary> /// Initializes a new instance of the <see cref="Boxd"/> using the specified location and size. /// </summary> /// <param name="location">The front-lower-left corner of the box.</param> /// <param name="size">The size of the box.</param> public Boxd(Point3d location, Size3d size) { X = location.X; Y = location.Y; Z = location.Z; Width = size.Width; Height = size.Height; Depth = size.Depth; }
/// <summary> /// Initializes a new instance of the <see cref="Boxd"/> using the specified location and size. /// </summary> /// <param name="x">Value for the X component of the box.</param> /// <param name="y">Value for the Y component of the box.</param> /// <param name="z">Value for the Z component of the box.</param> /// <param name="size">The size of the box.</param> public Boxd(double x, double y, double z, Size3d size) { X = x; Y = y; Z = z; Width = size.Width; Height = size.Height; Depth = size.Depth; }
/// <summary> /// Returns a size where each component is rounded to the nearest integral value. /// </summary> /// <param name="value">A size.</param> /// <param name="digits">The number of fractional digits in the return value.</param> /// <returns>The result of rounding value.</returns> public static Size3d Round(Size3d value, int digits) { return(new Size3d(Functions.Round(value.Width, digits), Functions.Round(value.Height, digits), Functions.Round(value.Depth, digits))); }
/// <summary> /// Returns a size where each component is rounded to the nearest integral value. /// </summary> /// <param name="value">A size.</param> /// <param name="digits">The number of fractional digits in the return value.</param> /// <param name="mode">Specification for how to round value if it is midway between two other numbers.</param> /// <returns>The result of rounding value.</returns> public static Size3d Round(Size3d value, int digits, MidpointRounding mode) { return(new Size3d(Functions.Round(value.Width, digits, mode), Functions.Round(value.Height, digits, mode), Functions.Round(value.Depth, digits, mode))); }
/// <summary> /// Returns a size where each component is the fractional part of the specified component. /// </summary> /// <param name="value">A size.</param> /// <returns>The fractional of value.</returns> public static Size3d Fractional(Size3d value) { return(new Size3d(Functions.Fractional(value.Width), Functions.Fractional(value.Height), Functions.Fractional(value.Depth))); }
/// <summary> /// Returns a size where each component is rounded to the nearest integral value. /// </summary> /// <param name="value">A size.</param> /// <returns>The result of rounding value.</returns> public static Size3d Round(Size3d value) { return(new Size3d(Functions.Round(value.Width), Functions.Round(value.Height), Functions.Round(value.Depth))); }
/// <summary> /// Returns a size where each component is the smallest integral value that /// is greater than or equal to the specified component. /// </summary> /// <param name="value">A size.</param> /// <returns>The ceiling of value.</returns> public static Size3d Ceiling(Size3d value) { return(new Size3d(Functions.Ceiling(value.Width), Functions.Ceiling(value.Height), Functions.Ceiling(value.Depth))); }
/// <summary> /// Returns a size where each component is the integral part of the specified component. /// </summary> /// <param name="value">A size.</param> /// <returns>The integral of value.</returns> public static Size3d Truncate(Size3d value) { return(new Size3d(Functions.Truncate(value.Width), Functions.Truncate(value.Height), Functions.Truncate(value.Depth))); }
/// <summary> /// Returns a size that contains the highest value from each pair of components. /// </summary> /// <param name="value1">The first size.</param> /// <param name="value2">The second size.</param> /// <returns>The highest of each component in left and the matching component in right.</returns> public static Size3d Max(Size3d value1, Size3d value2) { return(new Size3d(Functions.Max(value1.Width, value2.Width), Functions.Max(value1.Height, value2.Height), Functions.Max(value1.Depth, value2.Depth))); }
/// <summary> /// Constrains each component to a given range. /// </summary> /// <param name="value">A size to constrain.</param> /// <param name="min">The minimum values for each component.</param> /// <param name="max">The maximum values for each component.</param> /// <returns>A size with each component constrained to the given range.</returns> public static Size3d Clamp(Size3d value, Size3d min, Size3d max) { return(new Size3d(Functions.Clamp(value.Width, min.Width, max.Width), Functions.Clamp(value.Height, min.Height, max.Height), Functions.Clamp(value.Depth, min.Depth, max.Depth))); }
/// <summary> /// Transforms the components of a size and returns the result. /// </summary> /// <param name="value">The size to transform.</param> /// <param name="transformer">A transform function to apply to each component.</param> /// <returns>The result of transforming each component of value.</returns> public static Size3i Transform(Size3d value, Func <double, int> transformer) { return(new Size3i(transformer(value.Width), transformer(value.Height), transformer(value.Depth))); }
/// <summary> /// Returns a value that indicates whether two sizes are equal. /// </summary> /// <param name="left">The first size to compare.</param> /// <param name="right">The second size to compare.</param> /// <returns>true if the left and right are equal; otherwise, false.</returns> public static bool Equals(Size3d left, Size3d right) { return(left == right); }
/// <summary> /// Divides a size by a scalar and returns the result. /// </summary> /// <param name="size">The size to be divided (the dividend).</param> /// <param name="scalar">The scalar to divide by (the divisor).</param> /// <returns>The result of dividing left by right (the quotient).</returns> public static Size3d Divide(Size3d size, double scalar) { Contract.Requires(0 <= scalar); return(new Size3d(size.Width / scalar, size.Height / scalar, size.Depth / scalar)); }
/// <summary> /// Returns the product of a size and scalar. /// </summary> /// <param name="size">The size to multiply.</param> /// <param name="scalar">The scalar to multiply.</param> /// <returns>The product of the left and right parameters.</returns> public static Size3d Multiply(Size3d size, double scalar) { Contract.Requires(0 <= scalar); return(new Size3d(size.Width * scalar, size.Height * scalar, size.Depth * scalar)); }
/// <summary> /// Writes the given <see cref="Size3d"/> to an <see cref="Ibasa.IO.BinaryWriter">. /// </summary> public static void Write(this Ibasa.IO.BinaryWriter writer, Size3d size) { writer.Write(size.Width); writer.Write(size.Height); writer.Write(size.Depth); }