# Check if three points are aligned

Let’s consider three points $A$, $B$ and $C$. The best way to know if the three points are aligned is to compute the cross product of vectors $\vec{AB}$ and $\vec{AC}$. If $\vec{AB} \times \vec{AC}$ is a null vector, the three points are aligned or two or more points coincide.

## C++ source code


/*!
* \brief rOc_segment::isPointAligned check if a point is aligned with the segment
* \param P point to test
* \return  ROC_SEGMENT_INTERSEC_NONE if the point doesn’t lay with the segment
*          ROC_SEGMENT_INTERSEC_EXTREMITY_P1 if the point is merged with P1
*          ROC_SEGMENT_INTERSEC_EXTREMITY_P2 if the point is merged with P2
*          ROC_SEGMENT_INTERSEC_CROSS if the point belongs to the segment (extremity no included)
*/
bool rOc_segment::isPointAligned(rOc_point P)
{
// Compute vectors AB and AC
rOc_vector AB=this->vector();
rOc_vector AC(this->point1(),P);
// Check if the cross product is a null vector
if (AB.cross(AC).isNull()) return true;
return false;
}