-- file: MFOctantsImpl6.mesa -- Pascal-to-Mesa translator output, translated at October 31, 1985 4:28:01 pm PST DIRECTORY PascalBasic, PascalWizardFiles, MFTypes, MFProcArray, MFMath, MFOctants, MFContours; MFOctantsImpl6: PROGRAM IMPORTS MFProcArray, MFMath, MFOctants, MFContours EXPORTS MFOctants = PUBLIC BEGIN OPEN PascalBasic, PascalWizardFiles, MFTypes, MFProcArray, MFMath, MFOctants, MFContours; OctantSubdivide: PROCEDURE = BEGIN P, Q, R, S:Halfword;Del1, Del2, Del3, Del, Dmax:Scaled;T:Fraction; DestX, DestY:Scaled; P_CurSpec;DO Q_Mem[P]^.Hh.Rh; Mem[ INT[P]+1]^.Int_Mem[ INT[P]+1]^.Int-Mem[ INT[P]+2]^.Int; Mem[ INT[P]+5]^.Int_Mem[ INT[P]+5]^.Int-Mem[ INT[P]+6]^.Int; Mem[ INT[Q]+3]^.Int_Mem[ INT[Q]+3]^.Int-Mem[ INT[Q]+4]^.Int;--420:----421: IF Q=CurSpec THEN BEGIN Unskew[Mem[ INT[Q]+1]^.Int,Mem[ INT[Q]+2]^.Int,Mem[Q]^.Hh.B1]; Skew[CurX,CurY,Mem[P]^.Hh.B1];DestX_CurX;DestY_CurY; END ELSE BEGIN Abnegate[Mem[ INT[Q]+1]^.Int,Mem[ INT[Q]+2]^.Int,Mem[Q]^.Hh.B1,Mem[P]^.Hh .B1];DestX_CurX-CurY;DestY_CurY; END; Del1_Mem[ INT[P]+5]^.Int-Mem[ INT[P]+1]^.Int;Del2_Mem[ INT[Q]+3]^.Int-Mem[ INT[P]+5]^.Int; Del3_DestX-Mem[ INT[Q]+3]^.Int--:421--;--408: IF Del1#0 THEN Del_Del1 ELSE IF Del2#0 THEN Del_Del2 ELSE Del_Del3; IF Del#0 THEN BEGIN Dmax_ABS[Del1]; IF ABS[Del2]>Dmax THEN Dmax_ABS[Del2]; IF ABS[Del3]>Dmax THEN Dmax_ABS[Del3]; WHILE Dmax<134217728 DO BEGIN Dmax_Dmax+Dmax;Del1_Del1+Del1; Del2_Del2+Del2;Del3_Del3+Del3; END ENDLOOP ; END--:408--; IF Del#0 THEN BEGIN IF Del<0 THEN--423: BEGIN Mem[ INT[P]+2]^.Int_Mem[ INT[P]+1]^.Int+Mem[ INT[P]+2]^.Int; Mem[ INT[P]+1]^.Int_-Mem[ INT[P]+1]^.Int;Mem[ INT[P]+6]^.Int_Mem[ INT[P]+5]^.Int+Mem[ INT[P]+6]^.Int; Mem[ INT[P]+5]^.Int_-Mem[ INT[P]+5]^.Int;Mem[ INT[Q]+4]^.Int_Mem[ INT[Q]+3]^.Int+Mem[ INT[Q]+4]^.Int; Mem[ INT[Q]+3]^.Int_-Mem[ INT[Q]+3]^.Int;Del1_-Del1;Del2_-Del2;Del3_-Del3; DestY_DestX+DestY;DestX_-DestX;Mem[P]^.Hh.B1_Mem[P]^.Hh.B1+4; END--:423--;T_CrossingPoint[Del1,Del2,Del3];IF T<268435456 THEN--424: BEGIN SplitCubic[P,T,DestX,DestY];R_Mem[P]^.Hh.Rh; IF INT[Mem[R]^.Hh.B1]>4 THEN Mem[R]^.Hh.B1_Mem[R]^.Hh.B1-4 ELSE Mem[R]^.Hh.B1_ Mem[R]^.Hh.B1+4; IF Mem[ INT[R]+2]^.Int>DestY THEN Mem[ INT[R]+2]^.Int_DestY ELSE IF Mem[ INT[R]+2]^.Int0 THEN Del2_0; T_CrossingPoint[0,-Del2,-Del3];IF T<268435456 THEN--425: BEGIN SplitCubic[R,T,DestX,DestY];S_Mem[R]^.Hh.Rh; IF Mem[ INT[S]+2]^.Int>DestY THEN Mem[ INT[S]+2]^.Int_DestY ELSE IF Mem[ INT[S]+2]^.IntDestX THEN Mem[ INT[R]+1]^.Int_DestX ; END--:424 ; END--:420--;P_Q; IF P=CurSpec THEN EXIT; ENDLOOP; END;--:419----426:-- END.