Liang Basky

Màu nền
Font chữ
Font size
Chiều cao dòng

Program Liang_Barsky;

Uses Crt,Graph;

Var

gd,gm,k : integer;

xmin,xmax,ymin,ymax : integer;

a1,b1,a2,b2,dx,dy : Real;

p,q : Array[1..4] Of Real;

(*****************************)

Procedure Special_Line(x1,y1,x2,y2: Real);

Var

tg: Real;

Begin

If (x1=x2) And (x1>xmin) And (x1<xmax) Then

Begin

If y1>y2 Then

Begin

tg:=y1; y1:=y2; y2:=tg;

End;

If (y1<ymax) And (y2>ymin) Then

Begin

If y1<ymin Then y1:=ymin;

If y2>ymax Then y2:=ymax;

End;

Line(Round(x1),Round(y1),Round(x2),Round(y2));

End;

If (y1=y2) And (y1>ymin) And (y1<ymax) Then

Begin

If x1>x2 Then

Begin

tg:=x1; x1:=x2; x2:=tg;

End;

If (x1<xmax) And (x2>xmin) Then

Begin

If x1<xmin Then x1:=xmin;

If x2>xmax Then x2:=xmax;

End; Line(Round(x1),Round(y1),Round(x2),Round(y2));

End;

End;

(*****************************)

Procedure Liang_Barsky_Clipping(x1,y1,x2,y2: Real);

Var

xw1,yw1,xw2,yw2,t,t1,t2: Real;

Begin

t1:=0; t2:=1;

dx:=x2-x1; dy:=y2-y1;

p[1]:=-dx; p[2]:=dx; p[3]:=-dy; p[4]:=dy;

q[1]:=x1-xmin; q[2]:=xmax-x1; q[3]:=y1-ymin; q[4]:=ymax-y1;

For k:=1 To 4 Do

Begin

t:=q[k]/p[k];

If p[k]<0 then If t1<t Then t1:=t;

If p[k]>0 then If t2>t then t2:=t;

End;

If t1<=t2 then

Begin

xw1:=x1+t1*dx; yw1:=y1+t1*dy;

xw2:=x1+t2*dx; yw2:=y1+t2*dy;

Line(Round(xw1),Round(yw1),Round(xw2),Round(yw2));

End;

End;

(*****************************)

Begin

Clrscr;

write('Nhap (xmin,ymin): '); readln(xmin,ymin);

write('Nhap (xmax,ymax): '); readln(xmax,ymax);

write('Nhap (a1,b1): '); readln(a1,b1);

write('Nhap (a2,b2): '); readln(a2,b2);

gd:=detect; Initgraph(gd,gm,'C:\tp\bgi');

setcolor(White);

setlinestyle(1,0,0);

Line(Round(a1),Round(b1),Round(a2),Round(b2));

setlinestyle(0,0,0);

If (a1<>a2) And (b1<>b2) Then Liang_Barsky_Clipping(a1,b1,a2,b2)

Else Special_Line(a1,b1,a2,b2);

settextjustify(1,1);

outtextxy(320,450,'HIEN THI MOT DOAN THANG TRONG MOT CUA SO CHO TRUOC');

outtextxy(320,470,'THEO THUAT TOAN LIANG_BARSKY');

rectangle(xmin,ymin,xmax,ymax);

Readln;

Closegraph;

End.

Bạn đang đọc truyện trên: Truyen2U.Pro

#hoa