function EExecDD(Out_Prm1,Out_Prm2,Out_Prm3,Out_Prm4,X,Y,Z,Att1,Att2,Att3,Att4,Sg1,Sg2,Sg3) { // alert ("EExecDD"); var Xc11 = {Re:0, Im:0}; var Yc11 = {Re:0, Im:0}; var Xc22 = {Re:0, Im:0}; var Yc22 = {Re:0, Im:0}; var Xc1,Yc1,Xc2,Yc2; var Rr,S,C,X1,X2,Y1,Y2,Dl,Df,X3,Y3,X4,Y4,Xt,Yt,Zz,Dx; var A,Value; var Prizn; var Xp,Yp,B; if ((X.OB=="O") && (Y.OB=="P") && (((Z.OB=="C") && IsReal(Z)) || (Z.OB=="D")) && (IsSobstv(X)) && (IsSobstv(Y)) && (IsReal(Y))) { if (Sg1>0) { X1=X.X1.Re; Y1=X.Y1.Re; X2=X.X2.Re; Y2=X.Y2.Re; } else { X2=X.X1.Re; Y2=X.Y1.Re; X1=X.X2.Re; Y1=X.Y2.Re; }; SCDP=SC(X1,Y1,X2,Y2); Df=Fi(0,1,SCDP.S,SCDP.C); X3=Y.X.Re; Y3=Y.Y.Re; if (Z.OB=="C") Rr=Z.C.Re*Sg3; if (Z.OB=="D") Rr=Z.R.Re*Sg3; Dx=Math.PI/2+Df; X4=X3+100*Math.cos(Dx); Y4=Y3+100*Math.sin(Dx); var Q=LinLin(X1,Y1,X2,Y2,X3,Y3,X4,Y4); A=Sqr(X3-Q.X)+Sqr(Y3-Q.Y); if (Math.sqrt(A)>2*Math.abs(Rr)) { if (Att1.Chk==1) TOEmpty_Create(Out_Prm1,Att1); if (Att2.Chk==1) TOEmpty_Create(Out_Prm2,Att2); if (Att3.Chk==1) TOEmpty_Create(Out_Prm3,Att3); if (Att4.Chk==1) TOEmpty_Create(Out_Prm4,Att4); return true; }; Value=Math.abs(Rr)/Math.sqrt(Sqr(X3-Q.X)+Sqr(Y3-Q.Y)); Xp=Q.X+(X3-Q.X)*Value; Yp=Q.Y+(Y3-Q.Y)*Value; A=Sqr(Xp-X3)+Sqr(Yp-Y3); B=Math.sqrt(Sqr(Rr)-A); Value=B/Math.sqrt(Sqr(X2-X1)+Sqr(Y2-Y1)); Xc1=Xp-(X2-X1)*Value; Yc1=Yp-(Y2-Y1)*Value; Xc2=Xp+(X2-X1)*Value; Yc2=Yp+(Y2-Y1)*Value; Xc11.Re=0; Xc11.Im=0; Yc11.Re=0; Yc11.Im=0; Xc22.Re=0; Xc22.Im=0; Yc22.Re=0; Yc22.Im=0; Xc11.Re=Q.X-(X2-X1)*Value; Yc11.Re=Q.Y-(Y2-Y1)*Value; Xc22.Re=Q.X+(X2-X1)*Value; Yc22.Re=Q.Y+(Y2-Y1)*Value; if ( !(PointBelongs(X,Xc11.Re,Yc11.Re))) { if (Att1.Chk==1) TOEmpty_Create(Out_Prm1,Att1); if (Att2.Chk==1) TOEmpty_Create(Out_Prm2,Att2); } else { TOPoint_Create(Out_Prm2,Xc11,Yc11,1,Att2); TODuga_Create(Out_Prm1,MCompl(Xc1,0),MCompl(Yc1,0),MCompl(Rr,0),Xc11.Re,Yc11.Re,X3,Y3,Att1); AddInc(Out_Prm1,Out_Prm2); AddInc(Out_Prm1,Y); AddInc(X,Out_Prm2); }; if ( !(PointBelongs(X,Xc22.Re,Yc22.Re))) { if (Att3.Chk==1) TOEmpty_Create(Out_Prm3,Att3); if (Att4.Chk==1) TOEmpty_Create(Out_Prm4,Att4); } else { TOPoint_Create(Out_Prm4,Xc22,Yc22,1,Att4); TODuga_Create(Out_Prm3,MCompl(Xc2,0),MCompl(Yc2,0),MCompl(Rr,0),X3,Y3,Xc22.Re,Yc22.Re,Att3); AddInc(Out_Prm4,Out_Prm3); AddInc(Y,Out_Prm3); AddInc(Out_Prm4,X); }; } else { if (Att1.Chk==1) TOEmpty_Create(Out_Prm1,Att1); if (Att2.Chk==1) TOEmpty_Create(Out_Prm2,Att2); if (Att3.Chk==1) TOEmpty_Create(Out_Prm3,Att3); if (Att4.Chk==1) TOEmpty_Create(Out_Prm4,Att4); }; return false; } // EExecDD