openvrml::vec2d Struct Reference

Two-component double-precision vector. More...

#include <openvrml/basetypes.h>

Public Member Functions

vec2doperator*= (double scalar) throw ()
 Multiply by a scalar.
vec2doperator/= (double scalar) throw ()
 Divide by a scalar.
vec2doperator+= (const vec2d &vec) throw ()
 Add a vector.
vec2doperator-= (const vec2d &vec) throw ()
 Subtract a vector.
const vec2d operator- () const throw ()
 Negate.
const double & operator[] (std::size_t index) const throw ()
 Index-based component access.
double x () const throw ()
 Get the x component.
void x (double value) throw ()
 Set the x component.
double y () const throw ()
 Get the y component.
void y (double value) throw ()
 Set the y component.
double dot (const vec2d &vec) const throw ()
 Dot product.
double length () const throw ()
 Geometric length.
const vec2d normalize () const throw ()
 Normalize.

Public Attributes

double vec [2]
 Vector components.

Related Functions

(Note that these are not member functions.)

const openvrml::vec2d make_vec2d () throw()
 Create a vec2d.
const openvrml::vec2d make_vec2d (const double(&vec)[2]) throw()
 Create a vec2d from an array.
const openvrml::vec2d make_vec2d (const double x, const double y) throw()
 Create a vec2d from x and y components.
const openvrml::vec2d operator* (const vec2d &lhs, const double rhs) throw()
 Multiply a vector by a scalar.
const openvrml::vec2d operator* (const double lhs, const vec2d &rhs) throw()
 Multiply a vector by a scalar.
const openvrml::vec2d operator/ (const vec2d &lhs, const double rhs) throw()
 Divide a vector by a scalar.
const openvrml::vec2d operator+ (const vec2d &lhs, const vec2d &rhs) throw()
 Add two vectors.
const openvrml::vec2d operator- (const vec2d &lhs, const vec2d &rhs) throw()
 Subtract two vectors.
bool operator== (const vec2d &lhs, const vec2d &rhs) throw()
 Compare for equality.
bool operator!= (const vec2d &lhs, const vec2d &rhs) throw()
 Compare for inequality.
std::istream & operator>> (std::istream &in, vec2d &v)
 Stream input.
std::ostream & operator<< (std::ostream &out, const vec2d &v)
 Stream output.

Detailed Description

Two-component double-precision vector.

Member Function Documentation

openvrml::vec2d & openvrml::vec2d::operator*= ( double  scalar) throw ()

Multiply by a scalar.

Parameters
[in]scalarfactor by which to multiply.
Returns
a reference to the object.
openvrml::vec2d & openvrml::vec2d::operator/= ( double  scalar) throw ()

Divide by a scalar.

Precondition
scalar is nonzero.
Parameters
[in]scalardivisor.
Returns
a reference to the object.
openvrml::vec2d & openvrml::vec2d::operator+= ( const vec2d vec) throw ()

Add a vector.

Parameters
[in]vecthe vector to add.
Returns
a reference to the object.
openvrml::vec2d & openvrml::vec2d::operator-= ( const vec2d vec) throw ()

Subtract a vector.

Parameters
[in]vecthe vector to subtract.
Returns
a reference to the object.
const openvrml::vec2d openvrml::vec2d::operator- ( ) const throw ()

Negate.

Returns
the additive inverse of the vector.
const double & openvrml::vec2d::operator[] ( std::size_t  index) const throw ()
inline

Index-based component access.

Parameters
[in]index0 corresponds to the x component; 1 corresponds to the y component.
Returns
a const reference to the component corresponding to index.
Precondition
index is less than 2.
double openvrml::vec2d::x ( ) const throw ()
inline

Get the x component.

Returns
the x component.
void openvrml::vec2d::x ( double  value) throw ()
inline

Set the x component.

Precondition
value is a valid numeric value (i.e., not NaN).
Parameters
[in]valuenew x component value.
double openvrml::vec2d::y ( ) const throw ()
inline

Get the y component.

Returns
the y component.
void openvrml::vec2d::y ( double  value) throw ()
inline

Set the y component.

Precondition
value is a valid numeric value (i.e., not NaN).
Parameters
[in]valuenew y component value.
double openvrml::vec2d::dot ( const vec2d vec) const throw ()

Dot product.

Parameters
[in]vec
Returns
the dot product of the vector and vec.
double openvrml::vec2d::length ( ) const throw ()

Geometric length.

Returns
the length of the vector.
const openvrml::vec2d openvrml::vec2d::normalize ( ) const throw ()

Normalize.

Returns
the vector normalized.

Friends And Related Function Documentation

const openvrml::vec2d make_vec2d ( ) throw()
related

Create a vec2d.

Returns
a zero-initialized vec2d.
const openvrml::vec2d make_vec2d ( const double(&)  vec[2]) throw()
related

Create a vec2d from an array.

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Precondition
Elements of vec are valid numeric values (i.e., not NaN).
Parameters
[in]vecan array comprising the vector components.
Returns
a vec2d with the values in vec.
const openvrml::vec2d make_vec2d ( const double  x,
const double  y 
) throw()
related

Create a vec2d from x and y components.

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Precondition
x and y are valid numeric values (i.e., not NaN).
Parameters
[in]xx component.
[in]yy component.
Returns
a vec2d with the values x and y.
const openvrml::vec2d operator* ( const vec2d lhs,
const double  rhs 
) throw()
related

Multiply a vector by a scalar.

Parameters
[in]lhsleft-hand operand (the vector).
[in]rhsright-hand operand (the scalar).
Returns
the result vector.
const openvrml::vec2d operator* ( const double  lhs,
const vec2d rhs 
) throw()
related

Multiply a vector by a scalar.

Parameters
[in]lhsleft-hand operand (the scalar).
[in]rhsright-hand operand (the vector).
Returns
the result vector.
const openvrml::vec2d operator/ ( const vec2d lhs,
const double  rhs 
) throw()
related

Divide a vector by a scalar.

Precondition
rhs is nonzero.
Parameters
[in]lhsleft-hand operand (the vector).
[in]rhsright-hand operand (the scalar).
Returns
the result vector.
const openvrml::vec2d operator+ ( const vec2d lhs,
const vec2d rhs 
) throw()
related

Add two vectors.

Parameters
[in]lhsleft-hand operand.
[in]rhsright-hand operand.
Returns
the result vector.
const openvrml::vec2d operator- ( const vec2d lhs,
const vec2d rhs 
) throw()
related

Subtract two vectors.

Parameters
[in]lhsleft-hand operand.
[in]rhsright-hand operand.
Returns
the result vector.
bool operator== ( const vec2d lhs,
const vec2d rhs 
) throw()
related

Compare for equality.

Parameters
[in]lhsleft-hand operand.
[in]rhsright-hand operand.
Returns
true if lhs and rhs have the same value; false otherwise.
bool operator!= ( const vec2d lhs,
const vec2d rhs 
) throw()
related

Compare for inequality.

Parameters
[in]lhsleft-hand operand.
[in]rhsright-hand operand.
Returns
true if lhs and rhs dot not have the same value; false otherwise.
std::istream & operator>> ( std::istream &  in,
vec2d v 
)
related

Stream input.

Consistent with the VRML97 convention, commas (“,”) in the input are treated as whitespace.

Parameters
[in,out]ininput stream.
[out]va vec2d.
Returns
in.
std::ostream & operator<< ( std::ostream &  out,
const vec2d v 
)
related

Stream output.

Parameters
[in,out]outoutput stream.
[in]va 2-component vector.
Returns
out.

Member Data Documentation

double openvrml::vec2d::vec[2]

Vector components.