Home | Download | Screen shots | Discussion | Documentation
--- | --- | --- | --- | ---

Main Page | Modules | Namespace List | Class Hierarchy | Class List | Namespace Members | Class Members | Related Pages

# openvrml::bounding_sphere Class Reference

Inheritance diagram for openvrml::bounding_sphere:

[legend]
List of all members.

## Detailed Description

A bounding sphere.

Bounding spheres are very fast to intersect test, but they are fairly loose. If asked to choose just one bounding volume, four out of five graphics professionals surveyed chose the bounding sphere for their patients who chewed bounding volumes.

## Public Member Functions
| bounding_sphere ()
| Construct.
virtual | ~bounding_sphere ()
| Destroy.
virtual intersection | intersect_frustum (const openvrml::frustum &frustum) const
| Intersect this bvolume with a frustum.
virtual void | extend (const bounding_volume &b)
| Extend the bounding_volume to enclose `bv`.
virtual void | extend (const vec3f &p)
| Extend to enclose `p`.
virtual void | extend (const axis_aligned_bounding_box &b)
| Extend the bounding volume to enclose `bbox`.
virtual void | extend (const bounding_sphere &b)
| Extend this bvolume to enclose the given sphere.
virtual void | enclose (const std::vector< vec3f > &points)
| Enclose the given set of points.
virtual void | maximize ()
| Extend the bounding sphere to infinity.
virtual bool | maximized () const
| Whether the bounding_sphere is maximized.
virtual void | ortho_transform (const mat4f &t)
| Orthographically transform the bounding_sphere by `t`.
virtual void | transform (const mat4f &t)
| Transform the bounding_sphere by `t`.
void | center (const vec3f &c)
| Set the center coordinates.
const vec3f & | center () const
| Get the center coordinates.
void | radius (float r)
| Set the radius.
float | radius () const
| Get the radius.
## Private Attributes
vec3f | center_
| The center of the sphere.
float | radius_
| The radius of the sphere.

## Constructor & Destructor Documentation

openvrml::bounding_sphere::bounding_sphere | ( |  | ) |

| Construct.

openvrml::bounding_sphere::~bounding_sphere | ( |  | ) | `[virtual]`

| Destroy.

## Member Function Documentation

bounding_volume::intersection openvrml::bounding_sphere::intersect_frustum | ( | const openvrml::frustum & | frustum | ) | const`[virtual]`

  | Intersect this bvolume with a frustum. The test assumes that the frustum is in the canonical looking-down-negative-z orientation, so the bounding volume is going to have to be transformed into the frustum's space. (Alternatives include transforming the frustum into the bounding volume's space, or transforming both of them into the projection space. Lots of tradeoffs involved, but transforming the bounding volume is probably the simplest approach overall.) Parameters:
  | frustum | the frustum.
Returns: inside, outside, or partial. See also: bounding_volume::transform bounding_volume::ortho_transform Implements openvrml::bounding_volume.

void openvrml::bounding_sphere::extend | ( | const bounding_volume & | bv | ) | `[virtual]`

  | Extend the bounding_volume to enclose `bv`. Parameters:
  | bv | a bounding volume.
Implements openvrml::bounding_volume.

void openvrml::bounding_sphere::extend | ( | const vec3f & | p | ) | `[virtual]`

  | Extend to enclose `p`. Parameters:
  | p | a point.
Implements openvrml::bounding_volume.

void openvrml::bounding_sphere::extend | ( | const axis_aligned_bounding_box & | bbox | ) | `[virtual]`

  | Extend the bounding volume to enclose `bbox`. Todo: Implement me! Parameters:
  | bbox | an axis-aligned bounding box
Implements openvrml::bounding_volume.

void openvrml::bounding_sphere::extend | ( | const bounding_sphere & | b | ) | `[virtual]`

  | Extend this bvolume to enclose the given sphere. Parameters:
  | b | a bounding sphere
Implements openvrml::bounding_volume.

void openvrml::bounding_sphere::enclose | ( | const std::vector< vec3f > & | points | ) | `[virtual]`

  | Enclose the given set of points. This resets the volume from any previous values. Parameters:
  | points | points.
Implements openvrml::bounding_volume.

void openvrml::bounding_sphere::maximize | ( |  | ) | `[virtual]`

| Extend the bounding sphere to infinity. Implements openvrml::bounding_volume.

bool openvrml::bounding_sphere::maximized | ( |  | ) | const`[virtual]`

| Whether the bounding_sphere is maximized. Returns: `true` if the bounding_sphere has been maximized; `false` otherwise. Implements openvrml::bounding_volume.

void openvrml::bounding_sphere::ortho_transform | ( | const mat4f & | t | ) | `[virtual]`

  | Orthographically transform the bounding_sphere by `t`. Parameters:
  | t | transformation matrix.
Implements openvrml::bounding_volume.

void openvrml::bounding_sphere::transform | ( | const mat4f & | t | ) | `[virtual]`

  | Transform the bounding_sphere by `t`. Parameters:
  | t | transformation matrix.
Implements openvrml::bounding_volume.

void openvrml::bounding_sphere::center | ( | const vec3f & | c | ) |

  | Set the center coordinates. Parameters:
  | c | new center coordinates.

const vec3f & openvrml::bounding_sphere::center | ( |  | ) | const

| Get the center coordinates. Returns: the center coordinates.

void openvrml::bounding_sphere::radius | ( | float | r | ) |

  | Set the radius. Parameters:
  | r | new radius value.

float openvrml::bounding_sphere::radius | ( |  | ) | const

| Get the radius. Returns: the radius.

## Member Data Documentation

openvrml::bounding_sphere::center_`[private]`

| The center of the sphere.

openvrml::bounding_sphere::radius_`[private]`

| The radius of the sphere.