flame.c revision 1233
/*
* Copyright (c) 1988-91 by Patrick J. Naughton.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation for any purpose and without fee is hereby granted,
* provided that the above copyright notice appear in all copies and that
* both that copyright notice and this permission notice appear in
* supporting documentation.
*
* This file is provided AS IS with no warranties of any kind. The author
* shall have no liability with respect to the infringement of copyrights,
* trade secrets or any patents by this file or any part thereof. In no
* event will the author be liable for any lost revenue or profits or
* other special, indirect and consequential damages.
*/
/*
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice (including the next
* paragraph) shall be included in all copies or substantial portions of the
* Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/
/*-
* flame.c - recursive fractal cosmic dust.
*
* Copyright (c) 1991 by Patrick J. Naughton.
*
* See xlock.c for copying information.
*
* Revision History:
* 24-Jun-91: fixed portability problem with integer mod (%).
* 06-Jun-91: Written. (received from Spot, spot@cs.cmu.edu).
*/
#include "xlock.h"
#include <math.h>
#define MAXTOTAL 10000
#define MAXBATCH 10
typedef struct {
double f[2][3][20]; /* three non-homogeneous transforms */
int max_levels;
int cur_level;
int SNUM;
int ANUM;
int num_points;
int total_points;
int pixcol;
} flamestruct;
static short
int mv;
{
static short lasthalf = 0;
unsigned long r;
if (lasthalf) {
r = lasthalf;
lasthalf = 0;
} else {
r = random();
lasthalf = r >> 16;
}
return r % mv;
}
void
{
} else {
}
}
static Bool
register double x, y;
register int l;
{
if (l == fs->max_levels) {
fs->total_points++;
return False;
if (x > -1.0 && x < 1.0 && y > -1.0 && y < 1.0) {
* (x + 1.0));
* (y + 1.0));
fs->num_points++;
fs->num_points = 0;
}
}
} else {
}
return False;
}
}
return True;
}
void
{
int i, j, k;
static int alt = 0;
} else {
}
}
/* number of functions */
/* how many of them are of alternate form */
if (alt)
else
/* 6 coefs per function */
for (i = 0; i < 2; i++)
for (j = 0; j < 3; j++)
}
fs->num_points = 0;
fs->total_points = 0;
}