Core 1.0
ConeTube Class Reference

Cone-tubes. More...

#include <cone.h>

Inheritance diagram for ConeTube:
Cone Axis

Public Member Functions

 ConeTube ()
 Empty.
 ConeTube (const Cone &)
 Conversion constructor.
 ConeTube (const Vector &, const Vector &, const double &, const double &=0.0)
 Creates a cone characterized by its end-vertices and radii.
 ConeTube (const double &, const double &, const double &)
 Creates a vertical cone characterized height and radii.
 ~ConeTube ()
 Empty.
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.

Additional Inherited Members

Protected Member Functions inherited from Cone
 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.
Protected Member Functions inherited from Axis
double Radial (const Vector &, Vector &, Vector &) const
 Compute the radial coordinates of a point.
 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 Protected Member Functions inherited from Cone
static Vector RandomDirection (const Vector &, const double &, Random &=Random::R239)
 Generate a random direction.
Static Protected 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.
Protected Attributes inherited from Cone
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.
Static Protected Attributes inherited from Cone
static const double epsilon = 1.0e-4
 Epsilon value.
static const Cone Unit
 Unit vertical cone.
Static Protected Attributes inherited from Axis
static const Axis Z
 Axes from origin, identical to Axis(Vector::Null,Vector::X) ...

Detailed Description

Cone-tubes.

Constructor & Destructor Documentation

◆ ConeTube() [1/3]

ConeTube::ConeTube ( const Cone & c)

Conversion constructor.

Parameters
cCone.

◆ ConeTube() [2/3]

ConeTube::ConeTube ( const Vector & a,
const Vector & b,
const double & ra,
const double & rb = 0.0 )
explicit

Creates a cone characterized by its end-vertices and radii.

Parameters
a,bEnd vertices of the axis.
ra,rbRadii.

◆ ConeTube() [3/3]

ConeTube::ConeTube ( const double & ab,
const double & ra,
const double & rb )
explicit

Creates a vertical cone characterized height and radii.

Parameters
abHeight.
ra,rbRadii.

Member Function Documentation

◆ Normal()

Vector ConeTube::Normal ( const Vector & p) const

Computes the vector distance between the cone and a point.

Parameters
pPoint.

◆ R()

double ConeTube::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).

Parameters
pPoint.

◆ Rotate()

void Cone::Rotate ( const Matrix & r)

Rotates the cone.

Parameters
rRotation matrix.

◆ Signed()

double ConeTube::Signed ( const Vector & p) const

Compute the signed distance between a point and the cone.

Parameters
pPoint.

◆ Translate()

void Cone::Translate ( const Vector & t)

Translates the cone.

Parameters
tTranslation vector.