home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Computerworld 1996 March
/
Computerworld_1996-03_cd.bin
/
idg_cd3
/
grafika
/
fraktaly
/
frasr192
/
lsys.h
< prev
next >
Wrap
C/C++ Source or Header
|
1994-09-24
|
3KB
|
84 lines
/* lsys.h
* Header file for L-system code.
* Nicholas Wilt, 6/26/93.
*/
#define size ssize
/* Needed for use of asm -- helps decide which pointer to function
* to put into the struct lsys_cmds.
*/
/* Macro to take an FP number and turn it into a
* 16/16-bit fixed-point number.
*/
#define FIXEDMUL 524288L
#define FIXEDPT(x) ((long) (FIXEDMUL * (x)))
/* The number by which to multiply sines, cosines and other
* values with magnitudes less than or equal to 1.
* sins and coss are a 3/29 bit fixed-point scheme (so the
* range is +/- 2, with good accuracy. The range is to
* avoid overflowing when the aspect ratio is taken into
* account.
*/
#define FIXEDLT1 536870912.0
#define ANGLE2DOUBLE (2.0*PI / 4294967296.0)
#define MAXRULES 27 /* this limits rules to 25 */
struct lsys_turtlestatei {
char counter, angle, reverse, stackoflow;
/* dmaxangle is maxangle - 1 */
char maxangle, dmaxangle, curcolor, dummy; /* dummy ensures longword alignment */
long size;
long realangle;
long xpos, ypos; /* xpos and ypos are long, not fixed point */
long xmin, ymin, xmax, ymax; /* as are these */
long aspect; /* aspect ratio of each pixel, ysize/xsize */
long num;
};
struct lsys_turtlestatef {
char counter, angle, reverse, stackoflow;
/* dmaxangle is maxangle - 1 */
char maxangle, dmaxangle, curcolor, dummy; /* dummy ensures longword alignment */
LDBL size;
LDBL realangle;
LDBL xpos, ypos;
LDBL xmin, ymin, xmax, ymax;
LDBL aspect; /* aspect ratio of each pixel, ysize/xsize */
union {
long n;
LDBL nf;
} parm;
};
extern char maxangle;
/* routines in lsysa.asm */
#ifdef XFRACT
#define lsysi_doat_386 lsys_doat
#define lsysi_dosizegf_386 lsys_dosizegf
#define lsysi_dodrawg_386 lsys_dodrawg
#else
extern void lsysi_doat_386(struct lsys_turtlestatei *cmd);
extern void lsysi_dosizegf_386(struct lsys_turtlestatei *cmd);
extern void lsysi_dodrawg_386(struct lsys_turtlestatei *cmd);
#endif
/* routines in lsysaf.asm */
extern void lsys_prepfpu(struct lsys_turtlestatef *);
extern void lsys_donefpu(struct lsys_turtlestatef *);
/* routines in lsysf.c */
extern struct lsys_cmd far * _fastcall drawLSysF(struct lsys_cmd far *command,struct lsys_turtlestatef *ts, struct lsys_cmd far **rules,int depth);
extern int _fastcall lsysf_findscale(struct lsys_cmd far *command, struct lsys_turtlestatef *ts, struct lsys_cmd far **rules, int depth);
extern struct lsys_cmd far *LSysFSizeTransform(char far *s, struct lsys_turtlestatef *ts);
extern struct lsys_cmd far *LSysFDrawTransform(char far *s, struct lsys_turtlestatef *ts);
extern void _fastcall lsysf_dosincos(void);