Program Lab_6_2; uses crt, Types, OPolig, Poligon, IOGeom, GrGeom, Punct, Graph; (**************************************** * Apartenenta la domeniu: * Poligon stelat ****************************************) const filein = 'Stelat.txt'; var Polig: TPoligon; t, C: TPunct; procedure drow_poz(t: TPunct); begin print_poz(t, 0, TextHeight('H')*3, 'T'); drow_punct(t, WHITE); drow_cerc(t, 5); end; begin Polig.Init(MAX_ELEM); with Polig do begin clrscr; { Citirea datelor din fisierul , daca exista } nr := readf_puncte(filein, p^); if nr = 0 then nr := gen_polig_stel(p^, 10, ZeroP)+1; { Citirea coordonatelor punctelor de la tastatura } if nr = 0 then begin writeln('Introdu nr de puncte: '); readln(nr); writeln('Introdu coordonatele varfurilor poligonului convex: '); read_puncte(p^, nr); writeln('Introdu coordonatele unui punct din care se vad toate varfurile poligonului:'); read_punct(C, 'c'); p^[nr] := C; {Pentru a fi salvat in fisier} {Salvarea punctelor in fisier} end else begin dec(nr); {p[nr] este originea poligonului stelat} C := p^[nr]; end; writef_puncte(filein, p^, nr+1); { Afisarea coordonatelor } clrscr; write_puncte(p^, nr); write_punct(C, 'c'); {Punctul de verificat} writeln; writeln('Scrie coordonatele punctului de verifica la apartenenta:'); read_punct(t, 'p'); { Afisarea rezultatului } if apart_stel(p^, nr, C, t) then writeln('Apartine!') else writeln('Nu apartine!'); readkey; InitGr(0); graph.setcolor(GREEN); drow_poligon(p^, nr); drow_set_puncte(p^, nr, RED); drow_punct(C, RED); print_poz(C, 1, 1, 'C'); drow_poz(t); repeat if keypressed then begin drow_poz(t); if move_punct(t, 10, ReadKey) = #27 then Break; if apart_stel(p^, nr, C, t) then SetColor(GREEN) else SetColor(RED); drow_poz(t); end; until false; CloseGr; Halt(0); end; Polig.Done; end.