|
Core 1.0
|
Cones defined as truncated cones. More...
#include <cone.h>
Public Member Functions | |
| Cone () | |
| Empty. | |
| Cone (const Vector &, const Vector &, const double &, const double &=0.0) | |
| Creates a cone characterized by its end-vertices and radii. | |
| Cone (const double &, const double &, const double &) | |
| Creates a vertical cone characterized height and radii. | |
| ~Cone () | |
| Empty. | |
| constexpr double | Radius (int) const |
| Gets either end-radius of the cone. | |
| int | Intersect (const Ray &, double &, double &) const |
| Compute the intersections between the cone and a ray. | |
| int | Intersect (const Ray &, double &, double &, Vector &, Vector &) const |
| Compute the intersections between the cone and a ray. | |
| int | Intersect (const Ray &, double &, Vector &) const |
| Compute the first positive intersection between the cone and a ray. | |
| bool | Inside (const Vector &) const |
| Check if a point is inside or outside the cone. | |
| double | R (const Vector &) const |
| Compute the distance between a point and the cone. | |
| double | Signed (const Vector &) const |
| Compute the signed distance between a point and the cone. | |
| Vector | Normal (const Vector &) const |
| Computes the vector distance between the cone and a point. | |
| void | Rotate (const Matrix &) |
| Rotates the cone. | |
| void | Translate (const Vector &) |
| Translates the cone. | |
| void | Scale (const double &) |
| Uniformly scales the cone. | |
| double | Area () const |
| Compute the total surface area of the cone. | |
| double | Volume () const |
| Compute the volume of the cone. | |
| Vector | RandomInside (Random &=Random::R239) const |
| Generate a random vector inside the cone. | |
| Box | GetBox () const |
| Compute the axis-aligned bounding box of the cone. | |
| Vector | Vertex (int) const |
| Return one of the end vertexes of the axis. | |
Public Member Functions inherited from Axis | |
| Axis () | |
| Empty. | |
| Axis (const Vector &, const Vector &) | |
| Creates an axis given end vertices. | |
| ~Axis () | |
| Empty. | |
| void | Rotate (const Matrix &) |
| Rotates an axis. | |
| void | Translate (const Vector &) |
| Translates an axis. | |
| void | Scale (const double &) |
| Uniformly scales an axis. | |
| void | Scale (const Vector &) |
| Scales an axis. | |
| Quadric | Equation (const Ray &) const |
| Compute the polynomial equation of the Euclidean distance between a ray and the axis. | |
| Vector | Vertex (int) const |
| Return one of the end vertexes of the axis. | |
| Vector | Point (const double &) const |
| Compute a point on the axis. | |
| Vector | GetAxis () const |
| Returns the normalized axis vector. | |
| double | Length () const |
| Return the axis length. | |
| Vector | Symmetric (const Vector &) const |
| Symmetric point. | |
| Sphere | Symmetric (const Sphere &) const |
| Symmetric sphere. | |
| Vector | Normal (const Vector &) const |
| Compute the normal vector between a point and its projection onto the edge. | |
| double | R (const Vector &) const |
| Compute the squared distance to the segment. | |
| double | R (const Axis &) const |
| Compute the squared distance between two axes. | |
| double | R (const Vector &, double &) const |
| Compute the squared distance to the axis. | |
| Matrix | GetFrame () const |
| Compute an orthonormal frame attached to the axis. | |
| Vector2 | Radial (const Vector &) const |
| Compute the radial coordinates of a point. | |
Static Public Member Functions | |
| static Vector | RandomDirection (const Vector &, const double &, Random &=Random::R239) |
| Generate a random direction. | |
Static Public Member Functions inherited from Axis | |
| static Matrix | GetFrame (const Vector &) |
| Compute an orthonormal frame attached to the axis. | |
| static Vector | BoxVector (const Vector &) |
| Compute the box vector extent of a unit circle with a given axis. | |
Static Public Attributes | |
| static const double | epsilon = 1.0e-4 |
| Epsilon value. | |
| static const Cone | Unit |
| Unit vertical cone. | |
Static Public Attributes inherited from Axis | |
| static const Axis | Z |
| Axes from origin, identical to Axis(Vector::Null,Vector::X) ... | |
Protected Attributes | |
| double | rb = 0.0 |
| Radius of the cone at the first and second vertexes of the axis. | |
| double | rlength = -1.0 |
| Internal parameter. | |
| double | conelength = Math::Sqrt2 |
| Side length of the cone. | |
| Vector2 | side = Vector2(-1.0, 1.0) / Math::Sqrt2 |
| Vector representing the side. | |
Protected Attributes inherited from Axis | |
| Vector | b = Vector::Z |
| End vertexes of the axis. | |
| Vector | axis = Vector::Z |
| Normalized axis vector. | |
| double | length = 1.0 |
| Length of the axis. | |
Friends | |
| std::ostream & | operator<< (std::ostream &s, const Cone &cone) |
| Overloaded. | |
Additional Inherited Members | |
Protected Member Functions inherited from Axis | |
| double | Radial (const Vector &, Vector &, Vector &) const |
| Compute the radial coordinates of a point. | |
Cones defined as truncated cones.
|
explicit |
Creates a cone characterized by its end-vertices and radii.
| a,b | End vertices of the axis. |
| ra,rb | Radii. |
|
explicit |
Creates a vertical cone characterized height and radii.
| ab | Height. |
| ra,rb | Radii. |
| double Cone::Area | ( | ) | const |
Compute the total surface area of the cone.
The total surface area is the sum of the area of the cap discs, and the lateral surface area.
| bool Cone::Inside | ( | const Vector & | p | ) | const |
Check if a point is inside or outside the cone.
| p | Point. |
| int Cone::Intersect | ( | const Ray & | ray, |
| double & | ta, | ||
| double & | tb ) const |
Compute the intersections between the cone and a ray.
| ray | The ray. |
| ta,tb | Intersection depths. |
Compute the intersections between the cone and a ray.
| ray | The ray. |
| ta,tb | Intersection depths. |
| na,nb | Normals at intersection points. |
Compute the first positive intersection between the cone and a ray.
| ray | The ray. |
| t | Intersection depth. |
| n | Normal at intersection point. |
Computes the vector distance between the cone and a point.
| p | Point. |
| double Cone::R | ( | const Vector & | p | ) | const |
Compute the distance between a point and the cone.
Details appear in A. Barbier and E. Galin. Fast distance Computation between a Point and Cylinders, Cones, Line-swept-Spheres and Cone-Spheres. Journal of Graphics Tools. 9(2), 11-19 (2004).
| p | Point. |
|
static |
Generate a random direction.
| axis | Axis. |
| alpha | Angle. |
| random | Random number generator. |
| Vector Cone::RandomInside | ( | Random & | random = Random::R239 | ) | const |
Generate a random vector inside the cone.
| random | Random number generator. |
| void Cone::Rotate | ( | const Matrix & | r | ) |
Rotates the cone.
| r | Rotation matrix. |
| void Cone::Scale | ( | const double & | s | ) |
Uniformly scales the cone.
| s | Scaling factor. |
| double Cone::Signed | ( | const Vector & | p | ) | const |
Compute the signed distance between a point and the cone.
| p | Point. |
| void Cone::Translate | ( | const Vector & | t | ) |
Translates the cone.
| t | Translation vector. |
|
friend |
Overloaded.
| s | Stream. |
| cone | The cone. |