35#ifndef FGCOLUMNVECTOR3_H
36#define FGCOLUMNVECTOR3_H
98 double operator()(
const unsigned int idx)
const {
return data[idx-1]; }
105 double&
operator()(
const unsigned int idx) {
return data[idx-1]; }
115 double Entry(
const unsigned int idx)
const {
return data[idx-1]; }
125 double&
Entry(
const unsigned int idx) {
return data[idx-1]; }
130 std::string
Dump(
const std::string& delimeter)
const;
157 return data[0] == b.data[0] && data[1] == b.data[1] && data[2] == b.data[2];
170 return FGColumnVector3(scalar*data[0], scalar*data[1], scalar*data[2]);
186 data[2] * V.data[0] - data[0] * V.data[2],
187 data[0] * V.data[1] - data[1] * V.data[0] );
193 data[2] +
B.data[2] );
199 data[2] -
B.data[2] );
204 data[0] -=
B.data[0];
205 data[1] -=
B.data[1];
206 data[2] -=
B.data[2];
212 data[0] +=
B.data[0];
213 data[1] +=
B.data[1];
214 data[2] +=
B.data[2];
230 void InitMatrix(
const double a) { data[0] = data[1] = data[2] = a; }
231 void InitMatrix(
const double a,
const double b,
const double c) {
232 data[0]=a; data[1]=b; data[2]=c;
242 double Magnitude(
const int idx1,
const int idx2)
const;
257 return v1(1)*v2(1) + v1(2)*v2(2) + v1(3)*v2(3);
274std::ostream&
operator<<(std::ostream& os,
const FGColumnVector3& col);
This class implements a 3 element column vector.
double operator()(const unsigned int idx) const
Read access the entries of the vector.
bool operator==(const FGColumnVector3 &b) const
Comparison operator.
void InitMatrix(const double a, const double b, const double c)
~FGColumnVector3(void)
Destructor.
std::string Dump(const std::string &delimeter) const
Prints the contents of the vector.
FGColumnVector3 operator/(const double scalar) const
Multiply by 1/scalar.
FGColumnVector3 & operator+=(const FGColumnVector3 &B)
Add an other vector.
FGColumnVector3 operator+(const FGColumnVector3 &B) const
Addition operator.
void InitMatrix(const double a)
double & Entry(const unsigned int idx)
Write access the entries of the vector.
double Entry(const unsigned int idx) const
Read access the entries of the vector.
FGColumnVector3(const FGColumnVector3 &v)
Copy constructor.
FGColumnVector3 & operator*=(const double scalar)
Scale by a scalar.
FGColumnVector3 operator*(const FGColumnVector3 &V) const
Cross product multiplication.
FGColumnVector3 & operator/=(const double scalar)
Scale by a 1/scalar.
FGColumnVector3(const double X, const double Y, const double Z)
Initialization by given values.
FGColumnVector3 operator-(const FGColumnVector3 &B) const
Subtraction operator.
FGColumnVector3 & operator=(std::initializer_list< double > lv)
Assignment operator.
FGColumnVector3 & Normalize(void)
Normalize.
FGColumnVector3 & operator-=(const FGColumnVector3 &B)
Subtract an other vector.
FGColumnVector3 & operator=(const FGColumnVector3 &b)
Assignment operator.
double Magnitude(void) const
Length of the vector.
FGColumnVector3 operator*(const double scalar) const
Multiplication by a scalar.
FGColumnVector3(void)
Default initializer.
double & operator()(const unsigned int idx)
Write access the entries of the vector.
bool operator!=(const FGColumnVector3 &b) const
Comparison operator.
ostream & operator<<(ostream &os, const FGColumnVector3 &col)
Write vector to a stream.
FGColumnVector3 operator*(double scalar, const FGColumnVector3 &A)
Scalar multiplication.
double DotProduct(const FGColumnVector3 &v1, const FGColumnVector3 &v2)
Dot product of two vectors Compute and return the euclidean dot (or scalar) product of two vectors v1...