Let’s consider three points , and . The best way to know if the three points are aligned is to compute the cross product of vectors and . If 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;

}