Tester si deux segments (ou vecteurs) sont parallèles

Pour vérifier si deux segments S_A et S_B sont parallèles, calculer le vecteur associé à chaque segment et et vérifier que le produit vectoriel est un vecteur nul

ParalellSegments

Calculer les vecteurs \vec{V_A} et \vec{V_B} :

 \vec{V_A}=\vec{P_1P_2}

 \vec{V_B}=\vec{P_3P_4}

Ensuite calculer le produit vectoriel :

 \vec{C} = \vec{V_A} \times \vec{V_B}

\vec{V} est nul si S_A est nul ou si S_B est nul ou si S_A et S_B sont parallèles.

Source code C++


/*!
* \brief rOc_segment::isParallel check if current segment and S are parallel
* A null segment is necessarily considered as parallel
* \param S is the segment to check with the current one
* \return true the segments are parallel or at least one of the segment is null
* false the segments are non null and not parallel
*/
bool rOc_segment::isParallel(rOc_segment S)
{
// Extract main vector
rOc_vector VA=this->vector();
rOc_vector VB=S.vector();

// If the dot product is a null vector, segments are parallel (or at least one is null)
return VA.cross(VB).isNull();
}