Check if two segments (or vectors) are parallel

To check if two segments S_A and S_B are parallel, compute the vector define by each segment and check if the cross product of the vectors is a null vector

ParalellSegments

First compute vectors \vec{V_A} and \vec{V_B} :

 \vec{V_A}=\vec{P_1P_2}

 \vec{V_B}=\vec{P_3P_4}

Now compute the cross product :

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

\vec{V} is null if S_A is null or S_B is null or S_A and S_B are parallel.

C++ source code


/*!
* \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();
}