Added matrix-vector multiplication

This commit is contained in:
Paolo Cignoni 2005-02-16 11:11:12 +00:00
parent 02d8bd6b38
commit 5d6d76694c
1 changed files with 21 additions and 3 deletions

View File

@ -320,7 +320,7 @@ namespace vcg
return *this; return *this;
}; };
/*! /*!
* (Modifier) Add to each element of this matrix the scalar constant <I>k</I>. * (Modifier) Add to each element of this matrix the scalar constant <I>k</I>.
* \param k the scalar constant * \param k the scalar constant
* \return the modified matrix * \return the modified matrix
@ -372,7 +372,7 @@ namespace vcg
/*! /*!
* Matrix multiplication: calculates the cross product. * Matrix multiplication: calculates the cross product.
* \param reference to the matrix to multiply by * \param reference to the matrix to multiply by
* \result the matrix product * \return the matrix product
*/ */
Matrix<TYPE> operator*(const Matrix<TYPE> &m) Matrix<TYPE> operator*(const Matrix<TYPE> &m)
{ {
@ -391,6 +391,23 @@ namespace vcg
return result; return result;
}; };
/*!
* Matrix-vector multiplication.
* \param reference to the 3-dimensional vector to multiply by
* \return the resulting vector
*/
vcg::Point3<TYPE> operator*(const vcg::Point3<TYPE> &p)
{
assert(_columns==3 && _rows==3);
vcg::Point3<TYPE> result;
result[0] = _data[0]*p[0]+_data[1]*p[1]+_data[2]*p[2];
result[1] = _data[3]*p[0]+_data[4]*p[1]+_data[5]*p[2];
result[2] = _data[6]*p[0]+_data[7]*p[1]+_data[8]*p[2];
return result;
};
/*! /*!
* Scalar sum. * Scalar sum.
* \param k * \param k
@ -535,7 +552,8 @@ namespace vcg
std::swap(_data, temp); std::swap(_data, temp);
delete []temp; delete []temp;
}; };
/*! /*!
* Print all matrix elements * Print all matrix elements
*/ */