.


:




:

































 

 

 

 





, (.124):

- ;

- (XP,YP) ;

- U;

-

(-U);

. 124 , Y , , .

- .

:

begin

TekUgol(X1,Y1,X2,Y2,U0);

 

DwaOtr(X1,Y1,U0,X,Y,90+U0,XP,YP,P);

DlinaO(X,Y,X,Y,L);

DlinaO(X,Y,XN,YN,R);

if L > R then P:=0; { }

else if (L - R) < 0.05 then begin

P:=1; XA:=R; XB:=R; YA:=0; YB:=0;

{ (XP,YP)}

end

else begin

TekUgol(XC,YC,XP,YP,U);

XA = L; XB= -L; {

(- U)}

;YB = - YA; { Y

(- U)}

end;

XTS:=XT; YTS:=YT; UgS:=Ugol;

Ugol:=U; XT:=XC; YT:=YC;

PX[1]:=XA; PY[1]:=YA; PX[2]:=XB; PY[2]:=YB;

Preobr(2);

XA:=PX[1]; YA:=PY[1]; XB:=PX[2]; YB:=PY[2];

{

}

XT:=XTS; YT:=YTS; Ugol:=UgS; { }

end;

: OtrDug(X1,Y1,Ug,XC,YC,R,XP1,YP1,XP2,YP2,P).

 

, :

 

PikOtr(XA,YA,X1,Y1,X2,Y2,P) P=1

PikOtr(XB,YB,X1,Y1,X2,Y2,P) P=0

PikDug(XA,YA,XC,YC,XN,YN, XK,YK,.,P) P=1

PikDug(XB,YB,XC,YC,XN,YN, XK,YK,.,P) P=1.

 

, , - , .. (=0).

 

 

 

(XC1,YC1), (XC2,YC2) R1, R2 (. 125):

- L ;

- U , ;

- (- U);

.

-

.

. 125

:

begin

DlinaO(X1,Y1,XC2,YC2,L);

TekUgol(XC1,YC1,XC2,YC2,U);

if (R1+R2<L) or (L+R1<R2) or (L+R2<R1) or (L<0,001) then

begin

P:=0; { }

end

else begin

; ;

; ; {

, U = 0}

XTS:=XT; YTS:=YT; UgS:=Ugol;

Ugol:= U; XT:=XC1; YT:=YC1; {

}

PX[1]:=XAP; PY[1]:=YAP; PX[2]:=XBP; PY[2]:=YBP;

{ }

 

 

Preobr(2); { }

XA:=PX[1]; YA:=PY[1]; XB:=PX[2]; YB:=PY[2]; {-

}

XT:=XTS; YT:=YTS; Ugol:=UgS; { }

end;

end;

: DugDug(XC1,YC1,R1,XC2,YC2,R2,X1,Y1,X2.Y2,P).

 

:

PikDug(XA,YA,XC1,YC1,XN1,YN1, XK1,YK1,.,P) P=1

PikDug(XB,YB,XC1,YC1,XN1,YN1, XK1,YK1,.,P) P=1.

PikDug(XA,YA,XC2,YC2,XN2,YN2, XK2,YK2,.,P) P=1

PikDug(XB,YB,XC2,YC2,XN2,YN2, XK2,YK2,.,P) P=1.

 

 

(. 126).

 

Procedure Naprawl(Xc,Yc,Xn,Yn,Xk,Yk: Float;.: byte);

var U1,U2,UU: Float;

begin

TekUgol(Xc,Yc,Xn,Yn,U1);

TekUgol(Xc,Yc,Xk,Yk,U2);

{

}

UU:=abs(U1-U2);

if (U1<U2) and (UU<180)

then :=1

else if (U1<U2) and (UU>180)

then :=2

else if (U1>U2) and (UU<180)

then :=2

else :=1;

. 126 end;

: Naprawl(Xc,Yc,Xn,Yn,Xk,Yk,);

 

 

Procedure

Tch_NiK(X Cg,YCg,Xg1,Yg1,Xg2,Yg2,Xs,Y s,X Tn,YTn,LD k);

¯

NOKO S NK NK (. 127). NOKO. NK NK.

NOS - SN

. 127 NS - SK - KS - SKO .. . , SN SK NOKO.

S LS ( ). , () . NO Tn , Tk .

LDk Tn k. Tn Te Tn Tb , Tb NOKO, SNe, Skb. NOKO , SNe, - SKb. , NOKO.

 

begin

if Obhod=1 then Hod:=2 else Hod:=1; {

Hod }

 

, , :

if El=1 then begin

:

TekUgol(Xg1, Yg1, Xg2, Yg2,Ug);

OtrDug(Xg1,Yg1,Ug,Xs,Ys,Ri,XP1,YP1,XP2,YP2,P);

{Ri - }

 

(XTn,YTn) (XTk,YTk) :

DlinaL(Xg1,Yg1,XP1,YP1,L1);

DlinaL(Xg1,Yg1,XP2,YP2,L2);

if L1<L2 then begin

XTn:=XP1; YTn:=YP1; XTk:=XP2; YTk:=YP2;

end

else begin

XTn:=XP2; YTn:=YP2; XTk:=XP1; YTk:=YP1;

end;

 

Tk :

PikOtr(XTk,YTk,Xg1,Yg1,Xg2,Yg2,P);

 

LDk:

if P=1 then LDk:=180 else LDk:=360;

{Ldk - max , LD<=LDk .

S , LDk=360.

LDk=180}

end

 

, , :

else begin

:

DugDug(XCg,YCg,R,Xs,Ys,Ri,XP1,YP1,XP2,YP2,P);

 

(Xg1,Yg1) (XP1,YP1), (XP2,YP2):

DlinaD(Xg,YCg,Xg1,Yg1,XP1,YP1,Nag,LD1);

DlinaD(XCg,YCg,Xg1,Yg1,XP2,YP2,Nag,LD2);

 

 

(XTn,YTn) (XTk,YTk) :

if LD1<LD2 then begin

XTn:=XP1; YTn:=YP1; XTk:=XP2; YTk:=YP2;

end

else begin

XTn:=XP2; YTn:=YP2; XTk:=XP1; YTk:=YP1;

end;

 

LDk:

DlinaD(Xs,Ys,XTn,YTn,XTk,YTk,Hod,LDk);

end;

end;

 

3.3.11.

- ,

:

RisLineBox(Bx, El, Napr, X1, Y1, X2, Y2, XC, YC), :

Bx -

Bx;

El - (1 - , 2 - );

Napr - (1- , 2 - );

X1, Y1 - ;

X2, Y2 - ;

XC, Y - ;

 

- , 1- N( )

:





:


: 2016-11-18; !; : 1443 |


:

:

, .
==> ...

1889 - | 1622 -


© 2015-2024 lektsii.org - -

: 0.019 .