Informatika gyűjtemény

Egy szinttel feljebb ep_cella0.pas

2004050607080910

NézetNyomtat

ep_cella0.pas (Vissza)
Az alábbi letöltési lehetőségek közül választhatsz: (segítség)
Karakterkódolás:
Sortörés:
Típus: text/plain
Tartalmaz szöveget
Karakterkódolás: utf-8
Méret: 1 KB
program cella;
{x^2+y^2=100}

type TPont =    Record x,: double; end;

var p0,p1,p2,p3: TPont;
   db : longint;

function pattan(p1,p2 : TPont):TPont;
begin
    {
    * x3 = (x2^2*x1+y1*y2*x2)/50-x1
    * y3 = -x2/y2(x3-x1)+y1
    * }
    
       if p2.= 0 then
       begin
               pattan.:= -p1.x;
               pattan.:= p1.y;
       end else if p2.= 0 then
       begin
                pattan.:= p1.x;
                pattan.:= -p1.y;
        end
       else
       begin
               pattan.:= (p2.x*p2.x*p1.x+p1.y*p2.y*p2.x)/50-p1.x;
               pattan.:= -p2.x/p2.y*(pattan.x-p1.x)+p1.y;
       end;
end;

function metsz(p1 : TPont; m : double):TPont;
begin
 metsz.:= (2*m*m*p1.x-2*m*p1.y)/(1+m*m)-p1.x;
 metsz.:= m*(metsz.x-p1.x)+p1.y;
end;

function m(p1,p2:TPont):double;
begin
       m := (p2.y-p1.y)/(p2.x-p1.x);
end;

procedure print(db:longint; p : TPont);
begin
 writeln(db,':',p.x:10:8, ' ', p.y:10:8);
end;


BEGIN
      

       p0.:= 0;
       p0.:= 10.1;
       p2.:= 2.8;
       p2.:= -9.6;
       p1 := metsz(p2,m(p0,p2));

       print(0,p1);
       print(1,p2);

       db := 1;
       repeat
               inc(db);
               p3 := pattan(p1,p2);
               print(db,p3);
               p1 := p2;
               p2 := p3;
              
       until (-0.02<=p2.x) and (p2.x<=0.02) and (p2.y>0);
               writeln('KILÉPÉSI PONT:');
               print(db,p2);
END.
(Vissza)