(*----------------------------------------------------------* * Definitia tipurilor de date folosite in restul bibliotecii * de fata. *----------------------------------------------------------*) unit Types; interface {$N+} {Directiva pentru a putea folosi tipul Extended} const MAX_ELEM = 1000; {Nr maxim de puncte, segmente... dintr-o lista} type TCoord = double; { Poate fi single | double | extended } TNrElem = 0..MAX_ELEM; { Tip pentru numararea elementelor. Numararea incepe cu 0 } TElem = array[TNrElem] of TNrElem; { Lista de indici } (*----------------------------------------------------------*) (* Puncte *) TPunct = packed record x, y: TCoord end; {Tipul Punct} TabelPuncte = array[TNrElem] of TPunct; PPunct = ^TPunct; PTabelPuncte = ^TabelPuncte; {Celula pentru lista bidirectionala} PCell = ^Cell; Cell = record p: PPunct; prec, urm: PCell; end; ListPuncte = ^CellList; CellList = record p: TPunct; urm: ListPuncte; end; (*----------------------------------------------------------*) (* Drepte *) Dreapta = record A, B, C: TCoord end; { Ecuatia dreptei: Ax + By + C = 0 } TabelDrepte = array[TNrElem] of Dreapta; PDreapta = ^Dreapta; (*----------------------------------------------------------*) (* Segmente *) Segment = record p1, p2: TPunct end ; TabelSegmente = array[TNrElem] of Segment; PSegment = ^Segment ; SegmentP = record p1, p2: PPunct end ; TabelSegmenteP = array[TNrElem] of SegmentP; (*----------------------------------------------------------*) RelDrepte = (vid, inters, incident, nedet); {Tip enumerare folosit ca raspuns al functiei} (*----------------------------------------------------------*) const ZeroP: TPunct = (x: 0; y:0); (*----------------------------------------------------------*) implementation end.