|
Core 1.0
|
Spheroids are symmetric ellipsoids, i.e., with the same radial coefficients a = b ≠ c. More...
#include <ellipse.h>
Public Member Functions | |
| Spheroid () | |
| Empty. | |
| Spheroid (const Vector &, const Vector &, const double &, const double &) | |
| Create a spheroid. | |
| Spheroid (const Vector &, const Vector &, const double &) | |
| Create a spheroid. | |
| ~Spheroid () | |
| Empty. | |
| Vector | Center () const |
| Gets the center. | |
| Vector | GetAxis () const |
| Gets the axis. | |
| double | A () const |
| Major radius of the ellipsoid. | |
| double | B () const |
| Minor radius of the ellipsoid. | |
| Box | GetBox () const |
| Compute the bouding box. | |
| Sphere | GetSphere () const |
| Compute the bouding sphere. | |
| Spheroid | Rotated (const Matrix &) const |
| Rotates a spheroid. | |
| Spheroid | Translated (const Vector &) const |
| Translates a spheroid. | |
| double | R (const Vector &) const |
| Compute the squared distance between a point and the spheroid. | |
| int | Intersect (const Ray &, double &, double &) const |
| Computes the intersection between a ray and the spheroid. | |
| double | Volume () const |
| Compute the volume of an ellipsoid. | |
Protected Member Functions | |
| double | Value (const Vector &) const |
| Compute the field function value of a spheroid. | |
Protected Attributes | |
| Vector | c = Vector::Null |
| Center of the ellipsoid. | |
| Vector | axis = Vector::Z |
| Axis. | |
| double | b = 1.0 |
| Axis length, and radial length (revolution). | |
Friends | |
| std::ostream & | operator<< (std::ostream &s, const Spheroid &spheroid) |
| Overloaded stream operator. | |
Spheroids are symmetric ellipsoids, i.e., with the same radial coefficients a = b ≠ c.
Symmetric spheroids are surfaces of revolution, thus the Euclidean distance of a point or the signed distance can be computed analytically.
|
explicit |
Create a spheroid.
| c | Center. |
| axis | Axis (should be normalized). |
| a,b | Axis length and radial length. |
Create a spheroid.
| c | Center. |
| axis | Axis of revolution, whose norm will define the first radius. |
| r | Radial length. |
| int Spheroid::Intersect | ( | const Ray & | ray, |
| double & | tmin, | ||
| double & | tmax ) const |
Computes the intersection between a ray and the spheroid.
| ray | The ray. |
| tmin,tmax | Intersection depths. |
| double Spheroid::R | ( | const Vector & | p | ) | const |
Compute the squared distance between a point and the spheroid.
It is possible to compute the closed form expression of the distance to a spheroid if the spheroid is symmetrical in one axis, in which case the spheroid is a surface of revolution, and the computation boils down to evaluating the distance between a point and an ellipse.
| p | Point. |
Rotates a spheroid.
| r | Rotation matrix. |
Translates a spheroid.
| t | Translation vector. |
|
protected |
Compute the field function value of a spheroid.
| p | Point. |
|
friend |
Overloaded stream operator.
| s | Stream. |
| spheroid | Spheroid. |