bor

3C : Принадлежность отрезку

bor
Jan 3rd, 2013
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.00 KB | None | 0 0
  1. program _3C;
  2.  
  3. type
  4.   Point = record
  5.     x, y : Integer;
  6.   end;
  7.  
  8. var
  9.   a, b, p, pa, pb : Point;
  10.   cross, dot : Integer;
  11.  
  12. begin
  13.   ReadLn(p.x, p.y);
  14.   Read(a.x, a.y);
  15.   ReadLn(b.x, b.y);
  16.   (* Считаем вектора PA и PB *)
  17.   pa.x := a.x - p.x;
  18.   pa.y := a.y - p.y;
  19.   pb.x := b.x - p.x;
  20.   pb.y := b.y - p.y;
  21.   (* Векторное произведение векторов PA * PB *)
  22.   cross := pa.x * pb.y - pa.y * pb.x;
  23.   (* Скалярное произведение векторов PA * PB *)
  24.   dot := pa.x * pb.x + pa.y * pb.y;
  25.   (* Точка P должна лежать на прямой AB (векторное произведение - нуль).
  26.    * А ещё вектора AB и AP должны быть направлены в разные стороны
  27.    * (скалярное произведение отрицательное или нуль). *)
  28.   if (cross = 0) and (dot <= 0) then begin
  29.     WriteLn('YES');
  30.   end else begin
  31.     WriteLn('NO');
  32.   end;
  33. end.
Advertisement
Add Comment
Please, Sign In to add comment