Show / Hide Table of Contents

    Struct BBox3

    An axis-aligned bounding box.

    Inherited Members
    System.Object.Equals(System.Object, System.Object)
    System.Object.GetType()
    System.Object.ReferenceEquals(System.Object, System.Object)
    Namespace: Elements.Geometry
    Assembly: Hypar.Elements.dll
    Syntax
    [JsonConverter(typeof(JsonInheritanceConverter), new object[]{"discriminator"})]
    public struct BBox3

    Constructors

    BBox3(Element)

    Create the BBox3 for an Element. Elements without any geometry will return invalid boxes. Properties of the element that are themselves elements will not be considered.

    Declaration
    public BBox3(Element element)
    Parameters
    Type Name Description
    Element element

    The element.

    BBox3(Profile)

    Create the BBox3 for a Profile.

    Declaration
    public BBox3(Profile profile)
    Parameters
    Type Name Description
    Profile profile

    The Profile.

    BBox3(Vector3, Vector3)

    Create a bounding box.

    Declaration
    [JsonConstructor]
    public BBox3(Vector3 min, Vector3 max)
    Parameters
    Type Name Description
    Vector3 min

    The minimum point.

    Vector3 max

    The maximum point.

    BBox3(IEnumerable<Vector3>)

    Construct a bounding box from an array of points.

    Declaration
    public BBox3(IEnumerable<Vector3> points)
    Parameters
    Type Name Description
    System.Collections.Generic.IEnumerable<Vector3> points

    The points which are contained within the bounding box.

    BBox3(IList<Polygon>)

    Create a bounding box for a collection of polygons.

    Declaration
    public BBox3(IList<Polygon> polygons)
    Parameters
    Type Name Description
    System.Collections.Generic.IList<Polygon> polygons

    Properties

    Max

    The maximum extent of the bounding box.

    Declaration
    [JsonProperty("Max", Required = Required.Default, NullValueHandling = NullValueHandling.Ignore)]
    public Vector3 Max { get; set; }
    Property Value
    Type Description
    Vector3

    Min

    The minimum extent of the bounding box.

    Declaration
    [JsonProperty("Min", Required = Required.Default, NullValueHandling = NullValueHandling.Ignore)]
    public Vector3 Min { get; set; }
    Property Value
    Type Description
    Vector3

    Volume

    The volume of the bounding box.

    Declaration
    [JsonIgnore]
    public readonly double Volume { get; }
    Property Value
    Type Description
    System.Double

    XDomain

    A domain representing the x extents of the bounding box.

    Declaration
    [JsonIgnore]
    public readonly Domain1d XDomain { get; }
    Property Value
    Type Description
    Domain1d

    XSize

    The x dimension of the bounding box.

    Declaration
    [JsonIgnore]
    public readonly double XSize { get; }
    Property Value
    Type Description
    System.Double

    YDomain

    A domain representing the y extents of the bounding box.

    Declaration
    [JsonIgnore]
    public readonly Domain1d YDomain { get; }
    Property Value
    Type Description
    Domain1d

    YSize

    The y dimension of the bounding box.

    Declaration
    [JsonIgnore]
    public readonly double YSize { get; }
    Property Value
    Type Description
    System.Double

    ZDomain

    A domain representing the z extents of the bounding box.

    Declaration
    [JsonIgnore]
    public readonly Domain1d ZDomain { get; }
    Property Value
    Type Description
    Domain1d

    ZSize

    The z dimension of the bounding box.

    Declaration
    [JsonIgnore]
    public readonly double ZSize { get; }
    Property Value
    Type Description
    System.Double

    Methods

    Center()

    Get the center of the bounding box.

    Declaration
    public Vector3 Center()
    Returns
    Type Description
    Vector3

    The center of the bounding box.

    Contains(Vector3)

    Does this bounding box contain the provided point?

    Declaration
    public bool Contains(Vector3 point)
    Parameters
    Type Name Description
    Vector3 point

    The point to test.

    Returns
    Type Description
    System.Boolean

    True if the bounding box contains the point, otherwise false.

    Corners()

    Get all 8 corners of this bounding box. Ordering is CCW bottom, then CCW top, each starting from minimum (X,Y). For a unit cube this would be: (0,0,0),(1,0,0),(1,1,0),(0,1,0),(0,0,1),(1,0,1),(1,1,1),(0,1,1)

    Declaration
    public List<Vector3> Corners()
    Returns
    Type Description
    System.Collections.Generic.List<Vector3>

    The corners of the bounding box.

    Equals(Object)

    Is the provided object a bounding box? If so, is it equal to this bounding box within Epsilon?

    Declaration
    public override bool Equals(object obj)
    Parameters
    Type Name Description
    System.Object obj
    Returns
    Type Description
    System.Boolean
    Overrides
    System.ValueType.Equals(System.Object)

    Extend(Vector3)

    Extend this bounding box to contain the specified point.

    Declaration
    public void Extend(Vector3 point)
    Parameters
    Type Name Description
    Vector3 point

    The point to include in the bounding box.

    Extend(Vector3[])

    Extend this bound box to contain the specified points.

    Declaration
    public void Extend(params Vector3[] points)
    Parameters
    Type Name Description
    Vector3[] points

    The points to include in the bounding box.

    GetHashCode()

    Get the hash code for the bounding box.

    Declaration
    public override int GetHashCode()
    Returns
    Type Description
    System.Int32
    Overrides
    System.ValueType.GetHashCode()

    Intersects(BBox3)

    Does this bounding box intersect the other bounding box?

    Declaration
    public bool Intersects(BBox3 other)
    Parameters
    Type Name Description
    BBox3 other

    The bounding box to test.

    Returns
    Type Description
    System.Boolean

    True if an intersection occurs, otherwise false.

    Intersects(Plane, out RelationToPlane, Transform)

    Does the bounding box intersect the provided plane?

    Declaration
    public bool Intersects(Plane plane, out RelationToPlane relationToPlane, Transform transform = null)
    Parameters
    Type Name Description
    Plane plane

    The plane.

    RelationToPlane relationToPlane

    The relation of the bounding box to the plane.

    Transform transform

    An optional transform of the bounding box to apply before intersection.

    Returns
    Type Description
    System.Boolean

    True if the bounding box intersects, otherwise false.

    IsDegenerate()

    Does this bounding box have a dimension of 0 along any axis?

    Declaration
    public bool IsDegenerate()
    Returns
    Type Description
    System.Boolean

    IsValid()

    Does this bounding box have a valid set value?

    Declaration
    public bool IsValid()
    Returns
    Type Description
    System.Boolean

    Offset(Double)

    Offset a box in each coordinate by a given amount.

    Declaration
    public BBox3 Offset(double amount)
    Parameters
    Type Name Description
    System.Double amount

    Offset distance.

    Returns
    Type Description
    BBox3

    PointAt(Vector3)

    Get a point from this bounding box by supplying a vector specifying normalized parameters from 0 to 1. A point at (0,0,0) will be the minimum point of the bounding box, a point at (1,1,1) will be the maximum point, and a point at (0.5,0.5,0.5) will be the center.

    Declaration
    public Vector3 PointAt(Vector3 uvw)
    Parameters
    Type Name Description
    Vector3 uvw

    The vector in the box's parametric UVW coordinate space.

    Returns
    Type Description
    Vector3

    A point in world coordinates.

    PointAt(Double, Double, Double)

    Get a point from this bounding box by supplying normalized parameters from 0 to 1. A point at (0,0,0) will be the minimum point of the bounding box, a point at (1,1,1) will be the maximum point, and a point at (0.5,0.5,0.5) will be the center.

    Declaration
    public Vector3 PointAt(double u, double v, double w)
    Parameters
    Type Name Description
    System.Double u

    The u parameter at which to evaluate the box.

    System.Double v

    The v parameter at which to evaluate the box.

    System.Double w

    The w parameter at which to evaluate the box.

    Returns
    Type Description
    Vector3

    A point in world coordinates.

    ToString()

    The string representation of the bounding box.

    Declaration
    public override string ToString()
    Returns
    Type Description
    System.String
    Overrides
    System.ValueType.ToString()

    TransformAt(Double, Double, Double)

    Get a transform from this bounding box by supplying normalized parameters from 0 to 1. A point at (0,0,0) will be a transform at the minimum point of the bounding box, a point at (1,1,1) will be at the maximum point, and a point at (0.5,0.5,0.5) will be at the center.

    Declaration
    public Transform TransformAt(double u, double v, double w)
    Parameters
    Type Name Description
    System.Double u

    The u parameter at which to evaluate the box.

    System.Double v

    The v parameter at which to evaluate the box.

    System.Double w

    The w parameter at which to evaluate the box.

    Returns
    Type Description
    Transform

    Translated(Vector3)

    Get a translated copy of the bounding box.

    Declaration
    public BBox3 Translated(Vector3 translation)
    Parameters
    Type Name Description
    Vector3 translation

    The translation to apply.

    Returns
    Type Description
    BBox3

    UVWAtPoint(Vector3)

    For a point in world coordinates, get the corresponding vector in the box's parametric UVW coordinate space.

    Declaration
    public Vector3 UVWAtPoint(Vector3 point)
    Parameters
    Type Name Description
    Vector3 point

    A point in world coordinates.

    Returns
    Type Description
    Vector3

    A Vector3 representing the corresponding U,V,W coordinates in the box's coordinate space.

    Operators

    Equality(BBox3, BBox3)

    Are the two bounding boxes equal within Epsilon?

    Declaration
    public static bool operator ==(BBox3 a, BBox3 b)
    Parameters
    Type Name Description
    BBox3 a
    BBox3 b
    Returns
    Type Description
    System.Boolean

    Inequality(BBox3, BBox3)

    Are the two bounding boxes not equal within Epsilon?

    Declaration
    public static bool operator !=(BBox3 a, BBox3 b)
    Parameters
    Type Name Description
    BBox3 a
    BBox3 b
    Returns
    Type Description
    System.Boolean

    Extension Methods

    ModelCurveExtensions.ToModelCurves(BBox3, Transform, Material)