Mitsuba Renderer  0.5.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
mitsuba::Normal Struct Reference

Three-dimensional normal data structure. More...

#include <mitsuba/mitsuba.h>

+ Inheritance diagram for mitsuba::Normal:

Public Member Functions

 Normal ()
 Construct a new normal without initializing it. More...
 
 Normal (Float x, Float y, Float z)
 Initialize the vector with the specified X and Z components. More...
 
 Normal (Float val)
 Initialize all components of the the normal with the specified value. More...
 
 Normal (Stream *stream)
 Unserialize a normal from a binary data stream. More...
 
 Normal (const TVector3< Float > &v)
 Construct a normal from a vector data structure. More...
 
void operator= (const TVector3< Float > &v)
 Assign a vector to this normal. More...
 
- Public Member Functions inherited from mitsuba::TVector3< Float >
 TVector3 ()
 Construct a new vector without initializing it. More...
 
 TVector3 (Floatx, Floaty, Floatz)
 Initialize the vector with the specified X, Y and Z components. More...
 
 TVector3 (Floatval)
 Initialize all components of the the vector with the specified value. More...
 
 TVector3 (const TVector3< T2 > &v)
 Initialize the vector with the components of another vector data structure. More...
 
 TVector3 (const TPoint3< T2 > &p)
 Initialize the vector with the components of a point data structure. More...
 
 TVector3 (Stream *stream)
 Unserialize a vector from a binary data stream. More...
 
TVector3 operator+ (const TVector3 &v) const
 Add two vectors and return the result. More...
 
TVector3 operator- (const TVector3 &v) const
 Subtract two vectors and return the result. More...
 
TVector3 operator- () const
 Return a negated version of the vector. More...
 
TVector3operator+= (const TVector3 &v)
 Add another vector to the current one. More...
 
TVector3operator-= (const TVector3 &v)
 Subtract another vector from the current one. More...
 
TVector3 operator* (Floatf) const
 Multiply the vector by the given scalar and return the result. More...
 
TVector3operator*= (Floatf)
 Multiply the vector by the given scalar. More...
 
TVector3 operator/ (Floatf) const
 Divide the vector by the given scalar and return the result. More...
 
TVector3operator/= (Floatf)
 Divide the vector by the given scalar. More...
 
Floatoperator[] (int i)
 Index into the vector's components. More...
 
Float operator[] (int i) const
 Index into the vector's components (const version) More...
 
Float lengthSquared () const
 Return the squared 2-norm of this vector. More...
 
LengthType length () const
 Return the 2-norm of this vector. More...
 
bool isZero () const
 Return whether or not this vector is identically zero. More...
 
bool operator== (const TVector3 &v) const
 Equality test. More...
 
bool operator!= (const TVector3 &v) const
 Inequality test. More...
 
void serialize (Stream *stream) const
 Serialize this vector to a binary data stream. More...
 
std::string toString () const
 Return a readable string representation of this vector. More...
 

Additional Inherited Members

- Public Types inherited from mitsuba::TVector3< Float >
typedef Float Scalar
 
typedef TPoint3< FloatPointType
 
typedef detail::VectorLength
< Float, std::numeric_limits
< Float >::is_integer >::type 
LengthType
 
- Public Attributes inherited from mitsuba::TVector3< Float >
Float x
 
Float y
 
Float z
 
- Static Public Attributes inherited from mitsuba::TVector3< Float >
static const int dim
 Number of dimensions. More...
 

Detailed Description

Three-dimensional normal data structure.

Internally represented using floating point numbers of the chosen compile-time precision. The main difference of this data structure when compared to TVector3<Float> is in how instances of Normal are treated by linear transformations.

Constructor & Destructor Documentation

mitsuba::Normal::Normal ( )
inline

Construct a new normal without initializing it.

This construtor is useful when the normal will either not be used at all (it might be part of a larger data structure) or initialized at a later point in time. Always make sure that one of the two is the case! Otherwise your program will do computations involving uninitialized memory, which will probably lead to a difficult-to-find bug.

mitsuba::Normal::Normal ( Float  x,
Float  y,
Float  z 
)
inline

Initialize the vector with the specified X and Z components.

mitsuba::Normal::Normal ( Float  val)
inlineexplicit

Initialize all components of the the normal with the specified value.

mitsuba::Normal::Normal ( Stream stream)
inline

Unserialize a normal from a binary data stream.

mitsuba::Normal::Normal ( const TVector3< Float > &  v)
inline

Construct a normal from a vector data structure.

Member Function Documentation

void mitsuba::Normal::operator= ( const TVector3< Float > &  v)
inline

Assign a vector to this normal.


The documentation for this struct was generated from the following file: