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

- Main Page
- Namespaces
- Classes
- Files
- Related Pages
- Examples

- Class List
- Class Hierarchy
- Class Members

# openvrml::sfrotation Class Reference

`#include <openvrml/field_value.h>`

Inheritance diagram for openvrml::sfrotation:

[legend]

List of all members.

## Detailed Description

A rotation node field value.

Per the VRML97 specification, the axis of an sfrotation is a normalized vector (5.8). The specification leaves undefined how to deal with an attempt to construct an sfrotation from an axis vector that is not normalized. In order to allow users of the library to minimize the number of normalizations, openvrml takes the following approach:

- Attempts to construct an sfrotation axis from a vector that is not normalized will yield an assertion failure (abort) unless NDEBUG is defined when compiling the library (in which case truly wacky behavior could result).
- Assignment to individual components of the axis will result in the axis being re-normalized upon each assignment.

Model of
  Field Value

## Public Types

typedef rotation | value_type
| Type of value.

## Public Member Functions

| sfrotation (const rotation &rot=rotation()) throw ()
| Construct.
| sfrotation (const sfrotation &sfr)
| Construct a copy.
virtual | ~sfrotation () throw ()
| Destroy.
sfrotation & | operator= (const sfrotation &sfr) throw ( std::bad_alloc )
| Assign.
const value_type & | value () const throw ()
| Access.
void | value (const value_type &val) throw ( std::bad_alloc )
| Mutate.
void | swap (sfrotation &sfr) throw ()
| Swap.

## Static Public Attributes

static const type_id | field_value_type_id = sfrotation_id
| `field_value::type_id` for this class.

## Private Member Functions

virtual std::auto_ptr < field_value > | do_clone () const throw ( std::bad_alloc )
| Polymorphically construct a copy.
virtual sfrotation & | do_assign (const field_value &value) throw ( std::bad_cast )
| Virtual assignment.
virtual type_id | do_type () const throw ()
| Get the `field_value::type_id` associated with this class.
virtual void | print (std::ostream &out) const
| Print to an output stream.

## Related Functions

(Note that these are not member functions.)
bool | operator== (const sfrotation &lhs, const sfrotation &rhs) throw()
| Compare for equality.
bool | operator!= (const sfrotation &lhs, const sfrotation &rhs) throw()
| Compare for inequality.
template<> void | swap (openvrml::sfrotation &a, openvrml::sfrotation &b)
| Swap the values of `a` and `b`.

## Member Typedef Documentation

openvrml::sfrotation::value_type

Type of value.

## Constructor & Destructor Documentation

openvrml::sfrotation::sfrotation | ( | const rotation & | rot = `rotation()` | ) | throw ()`[explicit]`

Construct.

Parameters:

  `[in]` | rot | initial value.

openvrml::sfrotation::sfrotation | ( | const sfrotation & | sfr | ) |

Construct a copy.

Parameters:

  `[in]` | sfr | the instance to copy.

openvrml::sfrotation::~sfrotation | ( |  | ) | throw ()`[virtual]`

Destroy.

## Member Function Documentation

openvrml::sfrotation & openvrml::sfrotation::operator= | ( | const sfrotation & | sfr | ) | throw ( std::bad_alloc )

Assign.

Parameters:

  `[in]` | sfr | the value to assign.

Returns:
  a reference to the instance.

Exceptions:

  | std::bad_alloc | if memory allocation fails.

const openvrml::sfrotation::value_type & openvrml::sfrotation::value | ( |  | ) | const throw ()

Access.

Returns:
  the rotation value.

Reimplemented from openvrml::field_value.

void openvrml::sfrotation::value | ( | const value_type & | val | ) | throw ( std::bad_alloc )

Mutate.

Parameters:

  `[in]` | val | the new value.

Exceptions:

  | std::bad_alloc | if memory allocation fails.

void openvrml::sfrotation::swap | ( | sfrotation & | sfr | ) | throw ()

Swap.

Parameters:

  `[in,out]` | sfr | the value to swap with this one.

std::auto_ptr< openvrml::field_value > openvrml::sfrotation::do_clone | ( |  | ) | const throw ( std::bad_alloc )`[private, virtual]`

Polymorphically construct a copy.

Returns:
  a pointer to a copy of the object.

Exceptions:

  | std::bad_alloc | if memory allocation fails.

Implements openvrml::field_value.

openvrml::sfrotation & openvrml::sfrotation::do_assign | ( | const field_value & | value | ) | throw ( std::bad_cast )`[private, virtual]`

Virtual assignment.

Parameters:

  `[in]` | value | the new value to give the object.

Returns:
  a reference to the object.

Exceptions:

  | std::bad_cast | if `value` is not an sfrotation.

Implements openvrml::field_value.

openvrml::field_value::type_id openvrml::sfrotation::do_type | ( |  | ) | const throw ()`[private, virtual]`

Get the `field_value::type_id` associated with this class.

Returns:
  `field_value::sfrotation`.

Implements openvrml::field_value.

void openvrml::sfrotation::print | ( | std::ostream & | out | ) | const`[private, virtual]`

Print to an output stream.

Parameters:

  `[in,out]` | out | an output stream.

Implements openvrml::field_value.

## Friends And Related Function Documentation

bool operator== | ( | const sfrotation & | lhs,
|  | const sfrotation & | rhs |
| ) |  |  | throw()`[related]`

Compare for equality.

Parameters:

  `[in]` | lhs | left-hand operand.
  `[in]` | rhs | right-hand operand.

Returns:
  `true` if `lhs` and `rhs` have the same value; `false` otherwise.

bool operator!= | ( | const sfrotation & | lhs,
|  | const sfrotation & | rhs |
| ) |  |  | throw()`[related]`

Compare for inequality.

Parameters:

  `[in]` | lhs | left-hand operand.
  `[in]` | rhs | right-hand operand.

Returns:
  `true` if `lhs` and `rhs` do not have the same value; `false` otherwise.

template<> void swap | ( | openvrml::sfrotation & | a,
|  | openvrml::sfrotation & | b |
| ) |  |  | `[related]`

Swap the values of `a` and `b`.

Does not throw.

Parameters:

  `[in,out]` | a |
  `[in,out]` | b |

## Member Data Documentation

const openvrml::field_value::type_id openvrml::sfrotation::field_value_type_id = sfrotation_id`[static]`

`field_value::type_id` for this class.