``````(* ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ 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.

``````