(islam) .dup .where (.pop .pop) (100 .dict .def) .ifelse .cvx .exec islam .begin (stararray1) ((starrad) .exch .def .pushdc 100 0 .translate starline -100 100 3 .5 .exp .mul .translate starline .popdc) .cvx .def (starline)(.pushdc 12 (starpattern 200 0 .translate) .cvx .rept .popdc ) .cvx .def (stararray)(.pushdc (!str) .exch .def !str stararray1 0 200 3 .5 .exp .mul .translate !str stararray1 .popdc).cvx .def (starpattern)(12 4 starrad stargen).cvx .def (outlinestar) (minit white .color 0 .texture .startpath -8.5 72 .mul 11 72 .mul .enterpoint 8.5 72 .mul 11 72 .mul .enterpoint 8.5 72 .mul -11 72 .mul .enterpoint -8.5 72 .mul -11 72 .mul .enterpoint .drawarea 12 3dxrotate -15 3dyrotate m11 m12 m13 m21 m22 m23 m31 m32 m33 .entermatrix replace .paint (pass 1) = -1 .texture black .color 116 stararray (pass 2) = 0 .texture white .color 106 stararray (pass 3) = -1 .texture black .color 94 stararray (pass 4) = 0 .texture white .color 84 stararray).cvx .def (stargen) (stargen takes 3 parameters: No. of points, skip Number, radius) (.pushdc (!nr) .exch .def (!ni) .exch .def (!np) .exch .def (!nc) 1 .def !np !ni .cvr .div !np !ni .div .cvr .eq ((!na) 360 !np .cvr .div .def (!np) .dup .load !ni .div .store (!nc) !ni .store (!ni) 1 .store).cvx .if 360 !ni .mul !np .cvr .div (!nd) .exch .def !na .neg !nc(!na .add .dup (!flfrst) .true .def .startpath !np (!nd .add .dup .dup .cos !nr .mul .exch .sin !nr .mul linepts) .cvx .rept .pop linelast .drawarea ).cvx .rept .pop .popdc)/xdef (linepts) (!flfrst ((!flfy) .exch .def (!flfx) .exch .def (!flnx) !flfx .def (!flny) !flfy .def (!flfrst) .false .def) ((!floy) !flny .def (!flox) !flnx .def (!flny) .exch .def (!flnx) .exch .def (!fldx) !flnx !flox .sub !flnc .div .def (!fldy) !flny !floy .sub !flnc .div .def !flox !floy !flnc .cvi ( 2 .copy transform .enterpoint !fldx !fldy v2add).cvx .rept .pop .pop)/ifelse).cvx .def (linelast) ((!floy) !flny .def (!flox) !flnx .def (!fldx) !flfx !flox .sub !flnc .div .def (!fldy) !flfy !floy .sub !flnc .div .def !flox !floy !flnc .cvi ( 2 .copy transform .enterpoint !fldx !fldy v2add).cvx .rept .pop .pop).cvx .def (!flnc) 7. .def (white)(0 0 255) .cvx .def (black)(0 0 0) .cvx .def (centerstar) ( (!strdel) .exch 100 .sub .def .startpath 0 strpnt 4 strpnt 8 strpnt .drawarea .startpath 1 strpnt 5 strpnt 9 strpnt .drawarea .startpath 2 strpnt 6 strpnt 10 strpnt .drawarea .startpath 3 strpnt 7 strpnt 11 strpnt .drawarea).cvx .def (strpnt)(200 .mul !hght !strdel .sub transform .enterpoint).cvx .def (.translate)((!ty) .exch !ty .add .def (!tx) .exch !tx .add .def).cvx .def (.pushdc)(!stk !ix .aget .dup 0 !tx .aput 1 !ty .aput (!ix) !ix 1 .add .def !stk !ix .aget .dup 0 !tx .aput 1 !ty .aput).cvx .def (.popdc)( (!ix) !ix 1 .sub .def !stk !ix .aget .cvx .exec (!ty) .exch .def (!tx) .exch .def).cvx .def (transform)((!yy) .exch !ty .add .def (!xx) .exch !tx .add .def !sr !xx !sclx .mul .sin !yy !scly .mul .cos .mul .mul !sr !xx !sclx .mul .cos !yy !scly .mul .cos .mul .mul !sr !yy !scly .mul .sin .mul .tdtransform .tdpersp).cvx .def (islaminit)((!ix) 0 .def (!hght) 300 3 .5 .exp .mul 100 .add .def (!stk) .dup .where (.pop .pop) ( [ [ 0 0 ] [ 0 0 ] [ 0 0 ] [ 0 0 ] [ 0 0 ] [ 0 0 ] [ 0 0 ] [ 0 0 ] [ 0 0 ] [ 0 0 ] ] .def) .ifelse .cvx .exec (!sclx) 360 2400. .div .def (!scly) 80 1000. .div .def (!sr) 300 .def (!tx) 0 .def (!ty) 300 .def ).cvx .def islaminit .end