Distance_LP - pre zadaný bod a priamku vypočíta vzdialenosť bodu od priamky

Delphi & Pascal (česká wiki)
Přejít na: navigace, hledání
Kategória:

Program: Poilinp.pasPoilinu.pas
Súbor exe: Poilinp.exePoilinu.tpu
Potrebné: Angeom02.tpuUninout.tpuEgavga.bgi
Vývoják: Poilin.docAmater.txt
Príklady: Angeom02.pasUninout.pas

Pre programovú jednotku (unit) AnGeom02 (algebraická geometria) vytvorte funkciu Distance_LP, ktorá pre zadaný bod a priamku vypočíta vzdialenosť bodu od priamky.

FUNCTION Distance_LP(Line1:TLine; bodA:TPoint): Real;
{ Testovaci program pre unit PoiLinp }
program Point_Line_OOP;
 
uses AnGeom02, PoiLinU, Graph, Crt;
 
var line1 : TLine;		{ premena ktora uchovava priamku }
    bodA  : TPoint;		{ premena ktora uchovava bod     }
    bod1,bod2 : TPoint;	{ pomocne body pre definiciu priamky     }
    x,y : real;			{ pomocne premene pre definiciu priamky  }
    vzd : real;			{ premena v ktorej bude vzdialenost bodu }
 
begin
  WriteLn('Program pre Unit AnGeom02');
  WriteLn('Program zisti vzdialenost bodu od priamky.');
  WriteLn;
 
  Write('Zadaj x-suradnicu bodu a:'); ReadLn(x);
  Write('Zadaj y-suradnicu bodu a:'); ReadLn(y);
  { vytvorim bod A }
  bodA.Init(x,y,'bodA');
 
  { priamku budem definovat ako 2 body }
  Write('Zadaj x-suradnicu prveho bodu na priamke:'); ReadLn(x);
  Write('Zadaj y-suradnicu prveho bodu na priamke:'); ReadLn(y);
  { vytvorim bod prvy }
  bod1.Init(x,y,'bod1');
 
  { priamku budem definovat ako 2 body }
  Write('Zadaj x-suradnicu druheho bodu na priamke:'); ReadLn(x);
  Write('Zadaj y-suradnicu druheho bodu na priamke:'); ReadLn(y);
  { vytvorim bod druhy }
  bod2.Init(x,y,'bod2');
 
  { vytvorim priamku }
  line1.Init_PP(bod1,bod2,'Priamka');
 
  { vykreslim }
  SetGraphMode( GraphMode );
  GrAxis;
 
  { teraz to vsetko vykreslim }
  bodA.Draw(yellow,'X');
  bod1.Draw(green,'+');
  bod2.Draw(green,'+');
  line1.Draw(red);
 
  { teraz vypocitam vzdialenost bodu od priamky }
  vzd := Distance_LP( line1, bodA );
 
  TextColor( Red );
  OutTextXY(100,100, 'Distance_LP =' + fStrR(size));
 
  repeat until keypressed;		{ pockame na stlacenie klavesy }
  RCM;							{ zatvorime graficky rezim     }
end.