The dot product or scalar product (not to be confused with cross product) of two vectors is the product of the magnitudes of the two vectors and the cosine of the angle between them. The dot product of vectors \(\vec{V}\) and \(\vec{U}\) can be calculated thanks to the following formula:
$$ \vec{V} \cdot \vec{U} = V_x.U_x + V_y.U_y + V_z.U_z = | \vec{V} |. | \vec{U} | .cos (\theta) $$
where \(\theta\) is the angle between \(\vec{V}\) and \(\vec{U}\).
If \(\vec{V}\) and \(\vec{U}\) are perpendicular, \(\vec{V} \cdot \vec{U}\) is equal to zero. |
If \(\vec{V}\) is null, \(\vec{V} \cdot \vec{U}\) is equal to zero. |
If \(\vec{U}\) is null, \(\vec{V} \cdot \vec{U}\) is equal to zero. |
\(\vec{V} \cdot \vec{V} = | \vec{V} | ^2\) |
\(\vec{V} \cdot \vec{U} = \vec{U} \cdot \vec{V}\) |
\(\vec{V} \cdot (-\vec{U}) = (-\vec{V}) \cdot \vec{U} = - ( \vec{V} \cdot \vec{U} )\) |
The following C++ function return the dot product of two vectors :
/*!
* \brief Compute the dot product of two vectors (this . V)
* The current vector is the first operand
* \param V is the second operand
* \return the dot product between the current vector and V
*/
inline double rOc_vector::dot(const rOc_vector V)
{
return this->x()*V.x() + this->y()*V.y() + this->z()*V.z();
}
With MATLAB, the dot product can easily be computed with the function dot(A, B)
:
>> u=[1,2,3];
>> v=[4,5,6];
>> dot (u,v)
ans =
32