From FastGEO:

Code:
function IsPointOnRightSide(const Px,Py,x1,y1,x2,y2:TFloat):Boolean;
begin
  Result &#58;= &#40;&#40;&#40;x2 - x1&#41; * &#40;py - y1&#41;&#41; < &#40;&#40;px - x1&#41; * &#40;y2 - y1&#41;&#41;&#41;;
end;
Code:
function IsPointOnLeftSide&#40;const Px,Py,x1,y1,x2,y2&#58;TFloat&#41;&#58;Boolean;
begin
  Result &#58;= &#40;&#40;x2 - x1&#41; * &#40;py - y1&#41; > &#40;px - x1&#41; * &#40;y2 - y1&#41;&#41;;
end;
Code:
function Collinear&#40;const x1,y1,z1,x2,y2,z2,x3,y3,z3&#58;TFloat&#41;&#58;Boolean;
var
  Dx1  &#58; TFloat;
  Dx2  &#58; TFloat;
  Dy1  &#58; TFloat;
  Dy2  &#58; TFloat;
  Dz1  &#58; TFloat;
  Dz2  &#58; TFloat;
  Cx   &#58; TFloat;
  Cy   &#58; TFloat;
  Cz   &#58; TFloat;
begin
  &#40;* Find the difference between the 2 points P2 and P3 to P1 *&#41;
  Dx1 &#58;= x2 - x1;
  Dy1 &#58;= y2 - y1;
  Dz1 &#58;= z2 - z1;

  Dx2 &#58;= x3 - x1;
  Dy2 &#58;= y3 - y1;
  Dz2 &#58;= z3 - z1;

  &#40;* Perform a 3d cross product *&#41;
  Cx  &#58;= &#40;Dy1 * Dz2&#41; - &#40;Dy2 * Dz1&#41;;
  Cy  &#58;= &#40;Dx2 * Dz1&#41; - &#40;Dx1 * Dz2&#41;;
  Cz  &#58;= &#40;Dx1 * Dy2&#41; - &#40;Dx2 * Dy1&#41;;

  Result &#58;= IsEqual&#40;Cx * Cx + Cy * Cy + Cz * Cz,0.0&#41;;
end;


function RobustCollinear&#40;const x1,y1,x2,y2,x3,y3&#58;TFloat; const Epsilon &#58; TFloat = Epsilon_High&#41;&#58;Boolean;
var
  LeyDist1 &#58; TFloat;
  LeyDist2 &#58; TFloat;
  LeyDist3 &#58; TFloat;
begin
  LeyDist1 &#58;= LayDistance&#40;x1,y1,x2,y2&#41;;
  LeyDist2 &#58;= LayDistance&#40;x2,y2,x3,y3&#41;;
  LeyDist3 &#58;= LayDistance&#40;x3,y3,x1,y1&#41;;

  if LeyDist1 >= LeyDist2 then
    if LeyDist1 >= LeyDist3 then
      Result &#58;= IsEqual&#40;MinimumDistanceFromPointToLine&#40;x3,y3,x1,y1,x2,y2&#41;,0.0,Epsilon&#41;
    else
      Result &#58;= IsEqual&#40;MinimumDistanceFromPointToLine&#40;x2,y2,x3,y3,x1,y1&#41;,0.0,Epsilon&#41;
  else if LeyDist2 >= LeyDist3 then
    Result &#58;= IsEqual&#40;MinimumDistanceFromPointToLine&#40;x1,y1,x2,y2,x3,y3&#41;,0.0,Epsilon&#41;
  else
    Result &#58;= IsEqual&#40;MinimumDistanceFromPointToLine&#40;x2,y2,x3,y3,x1,y1&#41;,0.0,Epsilon&#41;;
end;


function IsPointCollinear&#40;const x1,y1,x2,y2,Px,Py&#58;TFloat; const Robust &#58; Boolean = False&#41;&#58;Boolean;
begin
  &#40;*
    This method will return true iff the point &#40;px,py&#41; is collinear
    to points &#40;x1,y1&#41; and &#40;x2,y2&#41; and exists on the segment A&#40;x1,y1&#41;->B&#40;x2,y2&#41;
  *&#41;
  if &#40;&#40;&#40;x1 <= px&#41; and &#40;px <= x2&#41;&#41; or &#40;&#40;x2 <= px&#41; and &#40;px <= x1&#41;&#41;&#41; and
     &#40;&#40;&#40;y1 <= py&#41; and &#40;py <= y2&#41;&#41; or &#40;&#40;y2 <= py&#41; and &#40;py <= y1&#41;&#41;&#41; then
  begin
    if Robust then
      Result &#58;= RobustCollinear&#40;x1,y1,x2,y2,Px,Py&#41;
    else
      Result &#58;= Collinear&#40;x1,y1,x2,y2,Px,Py&#41;;
  end
  else
    Result &#58;= False;
end;
Hope this helps.