Авторський освітній сайт - Задачі обчислювальної геометрії

Завдання. Дослідити взаємне розміщення  прямої та 2-х точок. Пряма задана коефіцієнтами рівняння ax+by+c=0, а точки координатами (x;y). Перевірити, яка з точок належить даній прямій та дослідити, як розміщенні точки відносно прямої: по одну чи по різні сторони від прямої.

procedure TForm1.Button1Click(Sender: TObject);

var a,b,c,x1,y1,x2,y2:integer;

begin

a:=StrToInt(Edit1.Text);

b:=StrToInt(Edit2.Text);

c:=StrToInt(Edit3.Text);

x1:=StrToInt(Edit4.Text);

y1:=StrToInt(Edit5.Text);

x2:=StrToInt(Edit6.Text);

y2:=StrToInt(Edit8.Text);

if a*x1+b*y1+c=0 then Edit9.Text:='Точка А належить прямій';

if a*x2+b*y2+c=0 then Edit9.Text:='Точка В належить прямій';

if a*x1+b*y1+c<>0 then Edit9.Text:='Точки не належить прямій';

end;

procedure TForm1.Button2Click(Sender: TObject);

var a,b,c,x1,y1,x2,y2:integer;

begin

a:=StrToInt(Edit1.Text);

b:=StrToInt(Edit2.Text);

c:=StrToInt(Edit3.Text);

x1:=StrToInt(Edit4.Text);

y1:=StrToInt(Edit5.Text);

x2:=StrToInt(Edit6.Text);

y2:=StrToInt(Edit8.Text);

if (a*x1+b*y1+c)*(a*x2+b*y2+c)>0 then Edit9.Text:='Точки лежать по один бік заданої прямої';

if (a*x1+b*y1+c)*(a*x2+b*y2+c)<0 then Edit9.Text:='Точки лежать по різні сторони від прямої';

end;              

 

Завдання. Дано абсциси точок А і В та точки С. Дослідити, чи лежить точка С на даному відрізку. Якщо так, то вияснити, до якої з вершин відрізка точка С розташована ближче. Врахувати умову, яка з вершин відрізка розміщена справа.

procedure TForm1.Button2Click(Sender: TObject);

  var x1,x2,x3:integer;

    d,d1,d2:integer;

    begin

  x1:=StrToInt(Edit1.Text);

  x2:=StrToInt(Edit3.Text);

  x3:=StrToInt(Edit5.Text);

  d:=abs(x2-x1);

  d1:=abs(x3-x1);

  d2:=abs(x2-x3);

  if x2>x1 then

  begin

    if d1=d2 then  Edit7.Text:='С середина АВ';

    if d1>d2 then  Edit7.Text:='С блище до В';

    if d1<d2 then  Edit7.Text:='С блище до A';

 

  end;

   if x2<x1 then

  begin

    if d1=d2 then  Edit7.Text:='С середина АВ';

    if d1>d2 then  Edit7.Text:='С блище до A';

    if d1<d2 then  Edit7.Text:='С блище до B';

    end;

end;