[Back to TURTLE SWAG index] [Back to Main SWAG index] [Original]

    (* ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
       ³ Programated by Vladimir Zahoransky                        ³
       ³                Vladko software                            ³
       ³ Contact      : zahoran@cezap.ii.fmph.uniba.sk             ³
       ³ Program tema : Parametrical express of line               ³
       ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ *)

    {  This is other version for define line. This is parametrical express
      of line. There are two linear equarials system defined :

      x=a1+u1*t
      y=a2+u2*t
      ---------

        [x,y] are coordinations of new point to draw. A1,a2 are coordinations
      of defined point. Point X [x,y] we have from equarials. t is a parameter.
      This is linear equarial system with one parameter t. If we use all t from
      R then we have line. If we take interval then we have halfline or abscissa.
      U1,u2 are coordinates of linevector.

      If u1=0 and u2<>0 then line is paraller with x-coordinate
      If u1<>0 and u2=0 then line is paraller with y-coordinate
      If u1=u2=0 and a1=a2=0 then are infime lines
      If u1=u2=0 and not (a1=a2=0) then don't exist the line
      Other versions : standard lines

      This program work with standard lines. If you want all extremes then
      modify the program how in graph06.pas.

        This program sometimes write message Division by zero, because this
      program work only for standard lines not for extrems.
    }

    Uses Okor;

    Type Mygraph=Object(kor)
                 Procedure Init;
                 Procedure Coordinate_system;
                 End;

    Procedure Mygraph.Init;
    Begin
    kor.init(0,0,0);
    End;

    Procedure Mygraph.Coordinate_system;
    Var i:integer;
    Begin
    ZmenFp(15);
    PresunXY(-320,0);
    ZmenXY(320,0);
    PresunXY(315,5);
    ZmenXY(320,0);
    ZmenXY(315,-5);
    PresunXY(310,-10);
    Pis('x');

    PresunXY(0,-240);;
    ZmenXY(0,240);
    PresunXY(-5,235);
    ZmenXY(0,240);
    ZmenXY(5,235);
    PresunXY(8,230);
    Pis('y');

    For i:=0 to 32 do Begin
                      PresunXY(-320+20*i,-3);
                      ZmenXY(-320+20*i,3);
                      End;

    For i:=0 to 23 do Begin
                      PresunXY(-3,-240+20*i);
                      ZmenXY(3,-240+20*i);
                      End;

    End;

    Type Analytical_line=Object(kor)

                         a1,a2,u1,u2,x,y:real;
                         Procedure Init(a1i,a2i,u1i,u2i:real);
                         Procedure Draw_line;
                         End;

    Procedure Analytical_line.Init;
    Begin
    a1:=a1i;
    a2:=a2i;
    u1:=u1i;
    u2:=u2i;
    Kor.Init(a1-u1/u2*(240+a2),-240,0);
    End;

    Procedure Analytical_line.Draw_line;
    Begin
    ZmenXY(a1+u1/u2*(240-a2),240);
    End;

    Var Mg:MyGraph;
        Al:Analytical_line;
        I:integer;
    Begin

    With Mg do Begin
               Init;
               Coordinate_system;
               End;
    Randomize;
    With Al Do

              For i:=1 to 15 do
                 Begin
                 Init(-100+random(200),-100+random(200),
                      -10+random(20),-10+random(20));
                 ZmenFp(1+ i mod 14);
                 Draw_line;
                 CakajKlaves;
                 Koniec;
                 End;

    End.

[Back to TURTLE SWAG index] [Back to Main SWAG index] [Original]