.


:




:

































 

 

 

 





 

. - (XT, YT) .

Procedure PP(var PX,PY: RealWektor; N: byte);

var XX: Float;

begin

if Ugol <> 0 then begin

while N>0 do begin

XX:=PX[N];

PX[N]:=XT + XX´Cos(Ugol) + PY[N]´Sin(Ugol);

PY[N]:=YT - XX´Sin(Ugol) + PY[N]´Cos(Ugol);

 

Dec(N);

end;

end

else begin

while N>0 do begin

PX[N]:=XT + PX[N];

PY[N]:=YT + PY[N];

Dec(N);

end;

end;

end;

 

Procedure Preobr(N:byte);

begin

PP(PX,PY,N)

end;

4- (. 121):

-

. 121 XTS:=XT; YTS:=YT; Ugs:= Ugol;

- XT:=XT1; YT:=YT1; Ugol:= U;

- PX[1]:=X1; PY[1]:=Y1; PX[2]:=X2; PY[2]:=Y2; PX[3]:=X3;

PY[3]:=Y3; PX[4]:=X4; PY[4]:=Y4; { }

- Preobr(4);

-

X1:=PX[1]; Y1:=PY[1]; X2:=PX[2]; Y2:=PY[2]; X3:=PX[3]; Y3:=PY[3];

X4:=PX[4]; Y4:=PY[4];

-

XT:=XTS, YT:=YTS, Ugol:= Ugs.

 

3.3.6.

 

(XC,YC), (X1,Y1), (X2,Y2) ( = 1 - , = 2 - ) (. 122).

Ug (,YC) (- Ug), UD .

 

 

:

 

begin

DlinaO(XC,YC,X1,Y1,R); { }

DlinaO(X1,Y1,X2,Y2,L); { }

if R>0 then begin

if (LT<=0.01) or ((X1=X2) and (Y1=Y2))

. 122 then begin

if .=1 then UD=360

else UD=0;

end

else begin

TekUgol(XC,YC,X1,Y1,Ug);

 

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

XT:=0; YT:=0; Ugol:= - Ug;

PX[1]:=X2-XC; PY[1]:=Y2-YC;

{ }

Preobr[1];

TekUgol(XC,YC,PX[1]+X2,PY[1]+Y2,UD);

if (UD>Ug) and (.=1) then UD:=UD

else UD:=360 - UD;

if (.=1) and ((UD<=0.01) or (UD>=359.99)

then UD:=360

else UD:=0;

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

end;

end;

0,0001.

: DlinaD(XC,YC,X1,Y1, X2,Y2,.,UD).

 

 

:

begin

DlinaO(XC,YC,X1,Y1,R); { }

DlinaO(X,Y,X,Y,L); { (. 123)}

DlinaO(X1,Y1,X,Y,L1); { }

 

DlinaO(X2,Y2,X,Y,L2); { }

DlinaD(XC,YC,X1,Y1, X2,Y2,1,UD);

{ }

DlinaD(XC,YC,X1,Y1, X,Y,1,U); { (X,Y)}

if (abc(LT-R)<0.05 and (R>0) then begin

if (L1 < 0.05) or (L2 < 0.05) then P:=1

else if UD > U then P:=1

. 123 else P:=0;

end

else P:=0;

end;

= 1 - , = 0 - . .=1, .. .

: PikDug(X,Y,XC,YC,X1,Y1, X2,Y2,.,P).

 





:


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


:

:

. .
==> ...

1457 - | 1417 -


© 2015-2024 lektsii.org - -

: 0.007 .