Chào các bạn! Vì nhiều lý do từ nay Truyen2U chính thức đổi tên là Truyen247.Pro. Mong các bạn tiếp tục ủng hộ truy cập tên miền mới này nhé! Mãi yêu... ♥

Liang Basky

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: Truyen247.Pro

Tags: #hoa