⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 miscovl.c

📁 frasr200的win 版本源码(18.21),使用make文件,使用的vc版本较低,在我的环境下编译有问题! 很不错的分形程序代码!
💻 C
📖 第 1 页 / 共 5 页
字号:
         /* these rarely change */
         if(originfp != 8 || heightfp != 7 || widthfp != 10 || distfp != 24
                          || depthfp != 8 || zdots != 128)
            put_parm(" %s=%d/%g/%g/%g/%g/%g",s_julibrot3d,
                zdots, originfp, depthfp, heightfp, widthfp,distfp);
         if(eyesfp != 0)
            put_parm(" %s=%g",s_julibroteyes,eyesfp);
         if(neworbittype != JULIA)
         {
            char *name;
            name = fractalspecific[neworbittype].name;
            if(*name=='*')
               name++;
            put_parm(s_seqs,s_orbitname,name);
         }
         if(juli3Dmode !=0)
            put_parm(s_seqs,s_3dmode,juli3Doptions[juli3Dmode]);
      }
      if (fractype == FORMULA || fractype == FFORMULA)
      {
	 put_parm( s_seqs,s_formulafile,FormFileName);
	 put_parm( s_seqs,s_formulaname,FormName);
      }
      if (fractype == LSYSTEM)
      {
	 put_parm( s_seqs,s_lfile,LFileName);
	 put_parm( s_seqs,s_lname,LName);
      }
      if (fractype == IFS || fractype == IFS3D)
      {
	 put_parm( s_seqs,s_ifsfile,IFSFileName);
	 put_parm( s_seqs,s_ifs,IFSName);
      }
      if (fractype == INVERSEJULIA || fractype == INVERSEJULIAFP)
      {
	 extern int major_method, minor_method;
	 put_parm( " %s=%s/%s",s_miim,major[major_method], minor[minor_method]);
      }

      showtrig(buf); /* this function is in miscres.c */
      if (buf[0])
	 put_parm(buf);

      if (usr_stdcalcmode != 'g')
	 put_parm(" %s=%c",s_passes,usr_stdcalcmode);

      if (usemag && cvtcentermag(&Xctr, &Yctr, &Magnification)) {
	 put_parm(" %s=",s_centermag);
	 put_parm((delmin > 1000) ? "%g/%g/%g"
				  : "%+20.17lf/%+20.17lf/%+20.17lf",
		  Xctr,Yctr,Magnification);
	 }
      else {
	 int xdigits,ydigits;
	 put_parm( " %s=",s_corners);
	 xdigits = getprec(xxmin,xxmax,xx3rd);
	 ydigits = getprec(yymin,yymax,yy3rd);
	 put_float(0,xxmin,xdigits);
	 put_float(1,xxmax,xdigits);
	 put_float(1,yymin,ydigits);
	 put_float(1,yymax,ydigits);
	 if (xx3rd != xxmin || yy3rd != yymin) {
	    put_float(1,xx3rd,xdigits);
	    put_float(1,yy3rd,ydigits);
	    }
	 }

      for (i = (MAXPARAMS-1); i >= 0; --i)
	 if (param[i] != 0.0) break;
      if (i >= 0) {
        if (fractype == CELLULAR)
          put_parm(" %s=%.1f",s_params,param[0]);
        else
#ifndef XFRACT
	 put_parm(" %s=%.17Lg",s_params,(long double)param[0]);
#else
       put_parm(" %s=%.17g",s_params,(double)param[0]);
#endif
	 for (j = 1; j <= i; ++j)
        if (fractype == CELLULAR)
          put_parm("/%.1f",param[j]);
        else
#ifndef XFRACT
	    put_parm("/%.17Lg",(long double)param[j]);
#else
          put_parm("/%.17g",(double)param[j]);
#endif
	 }

      if(useinitorbit == 2)
	 put_parm( " %s=pixel",s_initorbit);
      else if(useinitorbit == 1)
	 put_parm( " %s=%.15g/%.15g",s_initorbit,initorbit.x,initorbit.y);

      if (floatflag)
	 put_parm( " %s=y",s_float);

      if (maxit != 150)
	 put_parm(s_seqd,s_maxiter,maxit);

      if(bailout && (potflag == 0 || potparam[2] == 0.0))
	 put_parm( s_seqd,s_bailout,bailout);
      if(fillcolor != -1) {
  	 put_parm(" %s=",s_fillcolor);
	put_parm( "%d",fillcolor);
      }
      if (inside != 1) {
	 put_parm(" %s=",s_inside);
	 if (inside == -1)
	    put_parm( s_maxiter);
	 else if (inside == -59)
	    put_parm(s_zmag);
	 else if (inside == -60)
	    put_parm(s_bof60);
	 else if (inside == -61)
	    put_parm(s_bof61);
	 else if (inside == -100)
	    put_parm(s_epscross);
	 else if (inside == -101)
	    put_parm(s_startrail);
	 else if (inside == -102)
	    put_parm(s_period);
	 else
	    put_parm( "%d",inside);
	 }
      if (outside != -1)
      {
	 put_parm(" %s=",s_outside);
	 if (outside == -2)
	    put_parm(s_real);
	 else if (outside == -3)
	    put_parm(s_imag);
	 else if (outside == -4)
	    put_parm(s_mult);
	 else if (outside == -5)
	    put_parm(s_sum);
	 else
	    put_parm( "%d",outside);
	  }

      if(LogFlag) {
	 put_parm( " %s=",s_logmap);
	 if(LogFlag == -1)
	    put_parm( "old");
	 else if(LogFlag == 1)
	    put_parm( "yes");
	 else
	    put_parm( "%d", LogFlag);
	 }

      if (potflag) {
       put_parm( " %s=%d/%g/%d",s_potential,
           (int)potparam[0],potparam[1],(int)potparam[2]);
       if(pot16bit)
	    put_parm( "/%s",s_16bit);
	 }
      if (invert)
	 put_parm( " %s=%g/%g/%g",s_invert,
	     inversion[0], inversion[1], inversion[2]);
      if (decomp[0])
	 put_parm( s_seqd,s_decomp, decomp[0]);
      if (distest)
	 put_parm( s_seqdd,s_distest, distest, distestwidth);
      if (usr_biomorph != -1)
	 put_parm( s_seqd,s_biomorph, usr_biomorph);
      if (finattract)
	 put_parm(" %s=y",s_finattract);

      if (forcesymmetry != 999) {
         static char far msg[] = 
            {"Regenerate before <b> to get correct symmetry"};
         if(forcesymmetry == 1000)
            stopmsg(0,msg);
	 put_parm( " %s=",s_symmetry);
	 if (forcesymmetry==XAXIS)
	    put_parm(s_xaxis);
	 else if(forcesymmetry==YAXIS)
	    put_parm(s_yaxis);
	 else if(forcesymmetry==XYAXIS)
	    put_parm(s_xyaxis);
	 else if(forcesymmetry==ORIGIN)
	    put_parm(s_origin);
	 else if(forcesymmetry==PI_SYM)
	    put_parm(s_pi);
	 else
	    put_parm(s_none);
	 }

      if (periodicitycheck != 1)
	 put_parm( s_seqd,s_periodicity,periodicitycheck);

      if (rflag)
	 put_parm( s_seqd,s_rseed,rseed);

      if (rangeslen) {
	 put_parm(" %s=",s_ranges);
	 i = 0;
	 while (i < rangeslen) {
	    if (i)
	       put_parm("/");
	    if (ranges[i] == -1) {
	       put_parm("-%d/",ranges[++i]);
	       ++i;
	       }
	    put_parm("%d",ranges[i++]);
	    }
	 }
      }

   if (display3d >= 1) {
      /***** 3d transform only parameters in this section *****/
      if(display3d == 2)
         put_parm( s_seqs,s_3d,s_overlay);
      else
      put_parm( s_seqs,s_3d,s_yes);
      if (loaded3d == 0)
	 put_filename(s_filename,readname);
      if (SPHERE) {
	 put_parm( " %s=y",s_sphere);
	 put_parm( s_seqdd,s_latitude, THETA1, THETA2);
	 put_parm( s_seqdd,s_longitude, PHI1, PHI2);
	 put_parm( s_seqd,s_radius, RADIUS);
	 }
      put_parm( s_seqdd,s_scalexyz, XSCALE, YSCALE);
      put_parm( s_seqd,s_roughness, ROUGH);
      put_parm( s_seqd,s_waterline, WATERLINE);
      if (FILLTYPE)
	 put_parm( s_seqd,s_filltype, FILLTYPE);
      if (transparent[0] || transparent[1])
	 put_parm( s_seqdd,s_transparent, transparent[0],transparent[1]);
      if (preview) {
	 put_parm( s_seqs,s_preview,s_yes);
	 if (showbox)
	    put_parm( s_seqs,s_showbox,s_yes);
	 put_parm( s_seqd,s_coarse,previewfactor);
	 }
      if (RAY) {
	 put_parm( s_seqd,s_ray,RAY);
	 if (BRIEF)
	    put_parm(" %s=y",s_brief);
	 }
      if (FILLTYPE > 4) {
	 put_parm( s_seqddd,s_lightsource, XLIGHT, YLIGHT, ZLIGHT);
	 if (LIGHTAVG)
	    put_parm( " %=%d",s_smoothing, LIGHTAVG);
	 }
      if (RANDOMIZE)
	 put_parm( s_seqd,s_randomize,RANDOMIZE);

      if (Targa_Out)
	 put_parm( " %s=y",s_fullcolor);
      if (Ambient)
	 put_parm( s_seqd,s_ambient,Ambient);
      if (haze)
	 put_parm( s_seqd,s_haze,haze);
      }

   if (display3d) {		/* universal 3d */
      /***** common (fractal & transform) 3d parameters in this section *****/
      if (!SPHERE || display3d < 0)
	 put_parm( s_seqddd,s_rotation, XROT, YROT, ZROT);
      put_parm( s_seqd,s_perspective, ZVIEWER);
      put_parm( s_seqdd,s_xyshift, XSHIFT, YSHIFT);
      if(xtrans || ytrans)
	 put_parm( s_seqdd,s_xyadjust,xtrans,ytrans);
      if(glassestype) {
	 put_parm( s_seqd,s_stereo,glassestype);
	 put_parm( s_seqd,s_interocular,eyeseparation);
	 put_parm( s_seqd,s_converge,xadjust);
	 put_parm( " %s=%d/%d/%d/%d",s_crop,
	     red_crop_left,red_crop_right,blue_crop_left,blue_crop_right);
	 put_parm( s_seqdd,s_bright,
	     red_bright,blue_bright);
	 }
      }

   /***** universal parameters in this section *****/

   if(viewwindow == 1)
   {
      put_parm(" %s=%g/%g",s_viewwindows,viewreduction,finalaspectratio);
      if(viewcrop)
         put_parm("/%s",s_yes);
      else
         put_parm("/%s",s_no);
      put_parm("/%d/%d",viewxdots,viewydots);
   }
   if (*colorinf != 'n') {
      put_parm(" %s=",s_colors);
      if (*colorinf == '@')
	 put_parm(colorinf);
      else {
	 int curc,scanc,force,diffmag;
	 int delta,diff1[4][3],diff2[4][3];
	 curc = force = 0;
	 while (1) {
	    /* emit color in rgb 3 char encoded form */
	    for (j = 0; j < 3; ++j) {
	       if ((k = dacbox[curc][j]) < 10) k += '0';
	       else if (k < 36) 	       k += ('A' - 10);
	       else			       k += ('_' - 36);
	       buf[j] = k;
	       }
	    buf[3] = 0;
	    put_parm(buf);
	    if (++curc >= maxcolor)	 /* quit if done last color */
	       break;
	    /* Next a P Branderhorst special, a tricky scan for smooth-shaded
	       ranges which can be written as <nn> to compress .par file entry.
	       Method used is to check net change in each color value over
	       spans of 2 to 5 color numbers.  First time for each span size
	       the value change is noted.  After first time the change is
	       checked against noted change.  First time it differs, a
	       a difference of 1 is tolerated and noted as an alternate
	       acceptable change.  When change is not one of the tolerated
	       values, loop exits. */
	    if (force) {
	       --force;
	       continue;
	       }
	    scanc = curc;
	    while (scanc < maxcolor) {	 /* scan while same diff to next */
	       if ((i = scanc - curc) > 3) /* check spans up to 4 steps */
		  i = 3;
	       for (k = 0; k <= i; ++k) {
		  for (j = 0; j < 3; ++j) { /* check pattern of chg per color */
		     delta = (int)dacbox[scanc][j] - (int)dacbox[scanc-k-1][j];
		     if (k == scanc - curc)
			diff1[k][j] = diff2[k][j] = delta;
		     else
			if (delta != diff1[k][j] && delta != diff2[k][j]) {
			   diffmag = abs(delta - diff1[k][j]);
			   if (diff1[k][j] != diff2[k][j] || diffmag != 1)
			      break;
			   diff2[k][j] = delta;
			   }
		     }
		  if (j < 3) break; /* must've exited from inner loop above */
		  }
	       if (k <= i) break;   /* must've exited from inner loop above */
	       ++scanc;
	       }
	    /* now scanc-1 is next color which must be written explicitly */
	    if (scanc - curc > 2) { /* good, we have a shaded range */
	       if (scanc != maxcolor) {
		  if (diffmag < 3) {  /* not a sharp slope change? */
		     force = 2;       /* force more between ranges, to stop  */
		     --scanc;	      /* "drift" when load/store/load/store/ */
		     }
		  if (k) {	      /* more of the same		     */
		     force += k;
		     --scanc;
		     }
		  }
	       if (--scanc - curc > 1) {
		  put_parm("<%d>",scanc-curc);
		  curc = scanc;
		  }
	       else		   /* changed our mind */
		  force = 0;
	       }
	    }
	 }
      }

   if (rotate_lo != 1 || rotate_hi != 255)
      put_parm( s_seqdd,s_cyclerange,rotate_lo,rotate_hi);

   while (wbdata->len) /* flush the buffer */
      put_parm_line();
}

static void put_filename(char *keyword,char *fname)
{
   char *p;
   if (*fname && !endswithslash(fname)) {
      if ((p = strrchr(fname, SLASHC)))
	 if (*(fname = p+1) == 0) return;
      put_parm(s_seqs,keyword,fname);
      }
}

#ifndef XFRACT
static void put_parm(char *parm,...)
#else
static void put_parm(va_alist)
va_dcl
#endif
{
   char *bufptr;
   va_list args;

#ifndef XFRACT
   va_start(args,parm);
#else
   char * parm;

   va_start(args);
   parm = va_arg(args,char *);
#endif
   if (*parm == ' '             /* starting a new parm */
     && wbdata->len == 0)	/* skip leading space */
      ++parm;
   bufptr = wbdata->buf + wbdata->len;
   vsprintf(bufptr,parm,args);
   while (*(bufptr++))
      ++wbdata->len;
   while (wbdata->len > 200)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -