середа, 16 листопада 2016 р.

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

Завдання. Дослідити взаємне розміщення  прямої та 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;               

Немає коментарів:

Дописати коментар

Архів блогу