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

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

# openvrml::sfrotation Class Reference
[Field Values]

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
  FieldValue

## Public Types

typedef rotation | value_type
| Type of value.

## Public Member Functions

| sfrotation (const rotation &rot=rotation()) throw ()
| Construct.
virtual | ~sfrotation () throw ()
| Destroy.
virtual std::auto_ptr< field_value > | clone () const throw (std::bad_alloc)
| Virtual copy constructor.
virtual field_value & | assign (const field_value &value) throw (std::bad_cast)
| Virtual assignment.
virtual type_id | type () const throw ()
| Get the field_value::type_id associated with this class.

## Public Attributes

rotation | value
| Rotation value.

## Private Member Functions

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.

## Member Typedef Documentation

openvrml::sfrotation::value_type

| Type of value.

## Constructor & Destructor Documentation

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

Construct.

Parameters:

  | rot | initial value.

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

| Destroy.

## Member Function Documentation

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

Virtual copy constructor.

Returns:
  a pointer to a copy of the object.

Exceptions:

  | std::bad_alloc | if memory allocation fails.

Implements openvrml::field_value.

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

Virtual assignment.

Parameters:

  | 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.

field_value::type_id openvrml::sfrotation::type | ( |  | ) | const throw ()`[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:

  | 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:

  | lhs | left-hand operand.
  | 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:

  | lhs | left-hand operand.
  | rhs | right-hand operand.

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

## Member Data Documentation

openvrml::sfrotation::value

| Rotation value.