#include <vec.h>
Setting Vec values | |
| Vec () | |
| Default constructor. Default value is (0,0,0). | |
| Vec (const float X, const float Y, const float Z) | |
| Standard constructor with the x,y and z values. | |
| template<class C> | Vec (const C &c) |
| Vec & | operator= (const Vec &v) |
| Classical = operator. | |
| void | setValue (const float X, const float Y, const float Z) |
| Set the current value. Faster than using operator equal with a temporary Vec(x,y,z). | |
Access values | |
| float | operator[] (int i) const |
| Bracket operator, with a constant return value. | |
| float & | operator[] (int i) |
| Bracket operator, returns an l-value. | |
| const float * | address () const |
| The memory address of the vector. Useful as an argument for glVertex3fv, glNormal3fv... | |
| operator const float * () const | |
| Dereferencing operator that returns the memory address of the vector. Same as address(). | |
Calculus | |
| Vec & | operator+= (const Vec &a) |
Adds a to the vector. | |
| Vec & | operator-= (const Vec &a) |
Subtracts a to the vector. | |
| Vec & | operator *= (float k) |
| Multiply the vector by a scalar. | |
| Vec & | operator/= (float k) |
Divides the vector by a scalar. If the library was compiled with the "debug" qt CONFIG flag, tests for null value. | |
| Vec | operator+ (const Vec &a, const Vec &b) |
| Returns the sum of the two vectors. | |
| Vec | operator- (const Vec &a, const Vec &b) |
| Returns the difference of the two vectors. | |
| Vec | operator- (const Vec &a) |
| Unary minus operator. | |
| Vec | operator * (const Vec &a, const float k) |
| Returns the product of the vector with a scalar. | |
| Vec | operator * (float k, const Vec &a) |
| Returns the product of the vector with a scalar. | |
| Vec | operator/ (const Vec &a, const float k) |
Returns the division of the vector with a scalar. If the library was compiled with the "debug" qt CONFIG flag, tests for null value. | |
| bool | operator!= (const Vec &a, const Vec &b) |
| Comparison based on the squared norm of the difference vector, see operator==. | |
| bool | operator== (const Vec &a, const Vec &b) |
| Comparison based on the squared norm of the difference vector, epsilon=1E-10. | |
| float | operator * (const Vec &a, const Vec &b) |
| Dot product. | |
| Vec | cross (const Vec &a, const Vec &b) |
| Cross product of the two vectors. Mind the order ! | |
| Vec | operator^ (const Vec &a, const Vec &b) |
| Cross product of the two vectors. See also cross(). | |
Norm of the vector | |
| float | sqNorm () const |
| Returns the squared norm of the Vec. | |
| float | norm () const |
| Returns the norm of the vector. | |
| Vec & | normalize () |
Normalizes the Vec and returns the norm value. If the library was compiled with the "debug" qt CONFIG flag, tests for null value. | |
Vec projection | |
| void | projectOnAxis (const Vec &dir) |
| void | projectOnPlane (const Vec &n) |
XML representation. | |
| These methods are used by higher level class (Camera, KeyFrameInterpolator...) to save and restore the state of the Vec they hold. | |
| QDomElement | domElement (const QString &name, QDomDocument &doc) const |
| void | initFromDOMElement (const QDomElement &de) |
Public Attributes | |
| float | x |
| The internal data representation is public. One can use v.x, v.y, v.z. | |
| float | y |
| The internal data representation is public. One can use v.x, v.y, v.z. | |
| float | z |
| The internal data representation is public. One can use v.x, v.y, v.z. | |
Vec is a QGLViewer internal class, used to represent 3D positions and 3D vectors. It is part of the qglviewer namespace. You can use it in your programs by specifying qglviewer::Vec, or by using the qglviewer namespace :
using namespace qglviewer;
Vec implements a universal explicit converter, based on the [] operator. Everywhere a const Vec& argument is expected, you can use your own 3D point type instead, as long as it implements the [] operator :
float operator[] (const int i) const { respectively return x, y or z for i=0, 1 or 2 };
The following code is hence valid :
// class myVector implements the [] operator myVector mv; fr.setPosition( qglviewer::Vec(mv) ); // or if you use namespace qglviewer fr.setPosition( Vec(mv) );
When Vec is used as a return value, a classical float[3] version of the function is always available.
You can also convert a Vec result to your own class, using code such as :
qglviewer::Vec sc = sceneCenter(); myVector.x() = sc.x; // or sc[0] myVector.y() = sc.y; // or sc[1] myVector.z() = sc.z; // or sc[2]
|
|
Default constructor. Default value is (0,0,0).
|
|
||||||||||||||||
|
Standard constructor with the x,y and z values.
|
|
||||||||||
|
// Declared in class MyVec float operator[](int i) const { return (x, y or z); } // Then you can use MyVec v(...); camera()->setPosition( qglviewer::Vec(v) ); |
|
|
The memory address of the vector. Useful as an argument for glVertex3fv, glNormal3fv...
|
|
||||||||||||
|
Creates an XML QDomElement that represents the Vec. QDomDocument doc("myDocument"); Vec sunPos; // ... anyNode.addElement(sunPos.domElement("sunPosition", doc)); // ... See also Quaternion::domElement(), Camera::domElement(), KeyFrameInterpolator::domElement()... |
|
|
Restore the Vec state from a QDomElement created by domElement(). The QDomElement must contain the x, y and z attributes, otherwise these fields are set to 0.0. |
|
|
Returns the norm of the vector.
|
|
|
Normalizes the Vec and returns the norm value. If the library was compiled with the "debug" qt
|
|
|
Multiply the vector by a scalar.
|
|
|
Dereferencing operator that returns the memory address of the vector. Same as address().
|
|
|
Adds
|
|
|
Subtracts
|
|
|
Divides the vector by a scalar. If the library was compiled with the "debug" qt
|
|
|
Classical = operator.
|
|
|
Bracket operator, returns an l-value.
|
|
|
Bracket operator, with a constant return value.
|
|
|
Projects on the axis whose direction is dir (and that passes through the origin).
|
|
|
Projects on the plane whose normal is n and that passes through the origin.
|
|
||||||||||||||||
|
Set the current value. Faster than using operator equal with a temporary Vec(x,y,z).
|
|
|
Returns the squared norm of the Vec.
|
|
||||||||||||
|
Cross product of the two vectors. Mind the order !
|
|
||||||||||||
|
Dot product.
|
|
||||||||||||
|
Returns the product of the vector with a scalar.
|
|
||||||||||||
|
Returns the product of the vector with a scalar.
|
|
||||||||||||
|
Comparison based on the squared norm of the difference vector, see operator==.
|
|
||||||||||||
|
Returns the sum of the two vectors.
|
|
|
Unary minus operator.
|
|
||||||||||||
|
Returns the difference of the two vectors.
|
|
||||||||||||
|
Returns the division of the vector with a scalar. If the library was compiled with the "debug" qt
|
|
||||||||||||
|
Comparison based on the squared norm of the difference vector, epsilon=1E-10.
|
|
||||||||||||
|
Cross product of the two vectors. See also cross().
|
|
|
The internal data representation is public. One can use v.x, v.y, v.z.
|
|
|
The internal data representation is public. One can use v.x, v.y, v.z.
|
|
|
The internal data representation is public. One can use v.x, v.y, v.z.
|
1.3.2