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. More... | |
Cone (const double &, const double &, const double &) | |
Creates a vertical cone characterized height and radii. More... | |
~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. More... | |
int | Intersect (const Ray &, double &, double &, Vector &, Vector &) const |
Compute the intersections between the cone and a ray. More... | |
int | Intersect (const Ray &, double &, Vector &) const |
Compute the first positive intersection between the cone and a ray. More... | |
bool | Inside (const Vector &) const |
Check if a point is inside or outside the cone. More... | |
double | R (const Vector &) const |
Compute the distance between a point and the cone. More... | |
double | Signed (const Vector &) const |
Compute the signed distance between a point and the cone. More... | |
Vector | Normal (const Vector &) const |
Computes the vector distance between the cone and a point. More... | |
void | Rotate (const Matrix &) |
Rotates the cone. More... | |
void | Translate (const Vector &) |
Translates the cone. More... | |
void | Scale (const double &) |
Uniformly scales the cone. More... | |
double | Area () const |
Compute the total surface area of the cone. More... | |
double | Volume () const |
Compute the volume of the cone. | |
Vector | RandomInside (Random &=Random::R239) const |
Generate a random vector inside the cone. More... | |
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. More... | |
~Axis () | |
Empty. | |
void | Rotate (const Matrix &) |
Rotates an axis. More... | |
void | Translate (const Vector &) |
Translates an axis. More... | |
void | Scale (const double &) |
Uniformly scales an axis. More... | |
void | Scale (const Vector &) |
Scales an axis. More... | |
Quadric | Equation (const Ray &) const |
Compute the polynomial equation of the Euclidean distance between a ray and the axis. More... | |
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. More... | |
Sphere | Symmetric (const Sphere &) const |
Symmetric sphere. More... | |
Vector | Normal (const Vector &) const |
Compute the normal vector between a point and its projection onto the edge. More... | |
double | R (const Vector &) const |
Compute the squared distance to the segment. More... | |
double | R (const Axis &) const |
Compute the squared distance between two axes. More... | |
double | R (const Vector &, double &) const |
Compute the squared distance to the axis. More... | |
Matrix | GetFrame () const |
Compute an orthonormal frame attached to the axis. More... | |
Static Public Member Functions | |
static Vector | RandomDirection (const Vector &, const double &, Random &=Random::R239) |
Generate a random direction. More... | |
Static Public Member Functions inherited from Axis | |
static Matrix | GetFrame (const Vector &) |
Compute an orthonormal frame attached to the axis. More... | |
static Vector | BoxVector (const Vector &) |
Compute the box vector extent of a unit circle with a given axis. More... | |
Static Public Attributes | |
static const double | epsilon = 1.0e-4 |
Epsilon value. | |
static const Cone | Unit |
Unit vertical cone. | |
Protected Attributes | |
double | rb = 0.0 |
Radius of the cone at the first and second vertices 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 vertices of the axis. | |
Vector | axis = Vector::Z |
Normalized axis vector. | |
double | length = 1.0 |
Length of the axis. | |
Friends | |
std::ostream & | operator<< (std::ostream &, const Cone &) |
Overloaded. More... | |
Additional Inherited Members | |
Protected Member Functions inherited from Axis | |
double | Radial (const Vector &, Vector &, Vector &) const |
Compute the radial coordinates of a point. More... | |
Vector2 | Radial (const Vector &) const |
Compute the radial coordinates of a point. More... | |
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. |