| 
Public Attributes | 
| union { | 
| struct { | 
| double   x | 
| double   y | 
| double   z | 
| } |  | 
| double   v_ [3] | 
| }; |  | 
| 
Setting the value | 
|  | Vec () | 
|  | Vec (double X, double Y, double Z) | 
| template<class C > | 
|  | Vec (const C &c) | 
| Vec & | operator= (const Vec &v) | 
| void | setValue (double X, double Y, double Z) | 
| 
Accessing the value | 
| double | operator[] (int i) const | 
| double & | operator[] (int i) | 
| const double * | address () const | 
|  | operator const double * () const | 
|  | operator double * () | 
|  | operator const float * () const | 
| 
Algebraic computations | 
| Vec & | operator+= (const Vec &a) | 
| Vec & | operator-= (const Vec &a) | 
| Vec & | operator*= (double k) | 
| Vec & | operator/= (double k) | 
| Vec | orthogonalVec () const | 
| Vec | operator+ (const Vec &a, const Vec &b) | 
| Vec | operator- (const Vec &a, const Vec &b) | 
| Vec | operator- (const Vec &a) | 
| Vec | operator* (const Vec &a, double k) | 
| Vec | operator* (double k, const Vec &a) | 
| Vec | operator/ (const Vec &a, double k) | 
| bool | operator!= (const Vec &a, const Vec &b) | 
| bool | operator== (const Vec &a, const Vec &b) | 
| double | operator* (const Vec &a, const Vec &b) | 
| Vec | operator^ (const Vec &a, const Vec &b) | 
| Vec | cross (const Vec &a, const Vec &b) | 
| 
Norm of the vector | 
| double | sqNorm () const | 
| double | squaredNorm () const | 
| double | norm () const | 
| double | normalize () | 
| Vec | unit () const | 
| 
Projection | 
| void | projectOnAxis (const Vec &direction) | 
| void | projectOnPlane (const Vec &normal) | 
| 
XML representation | 
|  | Vec (const QDomElement &element) | 
| QDomElement | domElement (const QString &name, QDomDocument &document) const | 
| void | initFromDOMElement (const QDomElement &element) | 
The Vec class represents 3D positions and 3D vectors. 
Vec is used as a parameter and return type by many methods of the library. It provides classical algebraic computational methods and is compatible with OpenGL:
  
  Vec pos = camera()->position() + 3.0 * camera()->viewDirection();
  glBegin(GL_POINTS);
  glVertex3fv(pos);
  glEnd();
This makes of Vec a good candidate for representing positions and vectors in your programs. Since it is part of the qglviewer namespace, specify qglviewer::Vec or use the qglviewer namespace: 
  using namespace qglviewer;
Interface with other vector classes
Vec implements a universal explicit converter, based on the operator. Everywhere a const Vec& argument is expected, you can use your own vector type instead, as long as it implements this operator (see the Vec(const C& c) documentation).
See also the Quaternion and the Frame documentations. 
Definition at line 69 of file vec.h.
      
        
          | QDomElement Vec::domElement | ( | const QString & | name, | 
        
          |  |  | QDomDocument & | document | 
        
          |  | ) |  | const | 
      
 
Returns an XML QDomElement that represents the Vec.
name is the name of the QDomElement tag. doc is the QDomDocument factory used to create QDomElement.
When output to a file, the resulting QDomElement will look like: 
 <name x=".." y=".." z=".." />
Use initFromDOMElement() to restore the Vec state from the resulting QDomElement. See also the Vec(const QDomElement&) constructor.
Here is complete example that creates a QDomDocument and saves it into a file: 
 Vec sunPos;
 QDomDocument document("myDocument");
 QDomElement sunElement = document.createElement("Sun");
 document.appendChild(sunElement);
 sunElement.setAttribute("brightness", sunBrightness());
 sunElement.appendChild(sunPos.domElement("sunPosition", document));
 
 
 QFile f("myFile.xml");
 if (f.open(IO_WriteOnly))
 {
   QTextStream out(&f);
   document.save(out, 2);
   f.close();
 }
See also Quaternion::domElement(), Frame::domElement(), Camera::domElement()... 
Definition at line 128 of file vec.cpp.
 
 
Restores the Vec state from a QDomElement created by domElement().
The QDomElement should contain x, y and z attributes. If one of these attributes is missing or is not a number, a warning is displayed and the associated value is set to 0.0.
To restore the Vec state from an xml file, use: 
 
 QDomDocument doc;
 QFile f("myFile.xml");
 if (f.open(IO_ReadOnly))
 {
   doc.setContent(&f);
   f.close();
 }
 
 QDomElement main=doc.documentElement();
 myVec.initFromDOMElement(main);
See also the Vec(const QDomElement&) constructor. 
Definition at line 158 of file vec.cpp.