function EExecP0A &Out_Prm Z Z1 X Y Att Sg1 Sg2 Sg3 Sg4 FM = ( local A,B,X1,Y1,X2,Y2,D1,X3,Y3,X4,Y4,D2,AA,BB,D,ZZ local X1=Complex 0. 0. local X2=Complex 0. 0. local Y1=Complex 0. 0. local Y2=Complex 0. 0. local X3=Complex 0. 0. local Y3=Complex 0. 0. local X4=Complex 0. 0. local Y4 = Complex 0 0 local D1,D2 if (X==undefined) or (Y==undefined) or (Z==undefined) or (Z1==undefined) then return false if (X.OB=="C") and (Y.OB=="C") and (Z.OB=="O") and (Z1.OB=="O") then ( if X.OB =="C" then A=CompSg X.C Sg3 if Y.OB =="C" then B=CompSg Y.C Sg4 X1=Z.X1 Y1=Z.Y1 X2=Z.X2 Y2=Z.Y2 D1=(Diskr X1.Re Y1.Re 1 X2.Re Y2.Re 1 A.Re B.Re 1)*Sg1; X3=Z1.X1 Y3=Z1.Y1 X4=Z1.X2 Y4=Z1.Y2 D2=(Diskr X3.Re Y3.Re 1 X4.Re Y4.Re 1 A.Re B.Re 1)*Sg2; if (D1<=0) and (D2<=0) then (TOPoint_Create &Out_Prm A B 1 Att) else ( if (D1>0) and (D2<=0) then ( CalcPF A B Z &AA &BB D=(Diskr X3.Re Y3.Re 1 X4.Re Y4.Re 1 AA.Re BB.Re 1)*Sg2; if D>0 then ( LinLin X1 Y1 X2 Y2 X3 Y3 X4 Y4 &AA.Re &BB.Re &ZZ TOPoint_Create &Out_Prm AA BB 1 Att ) TOPoint_Create &Out_Prm AA BB 1 Att ) else if (D1<=0) and (D2>0) then ( CalcPF A B Z1 &AA &BB D=(Diskr X1.Re Y1.Re 1 X2.Re Y2.Re 1 AA.Re BB.Re 1)*Sg1; if D>0 then ( LinLin X1 Y1 X2 Y2 X3 Y3 X4 Y4 &AA.Re &BB.Re &ZZ TOPoint_Create &Out_Prm AA BB 1 Att ) TOPoint_Create &Out_Prm AA BB 1 Att ) else ( LinLin X1 Y1 X2 Y2 X3 Y3 X4 Y4 &AA.Re &BB.Re &ZZ TOPoint_Create &Out_Prm AA BB 1 Att ) ) ) else if (Att.Chk==1) then TOEmpty_Create &Out_Prm Att return true ) -- EExecP0A