DEMO.DESIGN
Frequently Asked Questions
 
оглавление | demo party в ex-СССР | infused bytes e-mag | новости от ib/news | другие проекты | письмо | win koi lat

следующий фpагмент (2)
From: ahg@k.cc.purdue.edu (Allen Braunsdorf) Subject: (Source and test data for) IFS Explorer 1.0 Since my posting, I have received about fifty requests for the source to my program. I also received a few notes from people looking for compression software. Unfortunately, I do not yet have such a program done. Below is the source to the latest version of my decompression program. It is a wonderful way to try out transforms just to see what they do. It's a little rough, and the documentation is a hack job, but I am sure many of you will find it interesting or useful. Also included are the data files from the Byte article (normalized to work in my system) and a few of my own. I can post information on how to make your own data files if there is a demand. If any of you make some neat ones, be sure to post them or send them to me! # This is a shell archive. # Remove everything above and including the cut line. # Then run the rest of the file through sh. #----cut here-----cut here-----cut here-----cut here----# #!/bin/sh # shar: Shell Archiver # Run the following text with /bin/sh to create: # README # Makefile # dev.h # ifs.h # rnd.h # ifs.c # a.ifs # archimedes.ifs # box.ifs # boxes.ifs # circle.ifs # cross.ifs # dragon.ifs # fern.ifs # ring.ifs # sierpinski.ifs # square.ifs # star.ifs # tree.ifs # triangle.ifs # This archive created: Sun Jan 24 14:45:24 1988 # By: Allen Braunsdorf (3-D Computer Graphics From Hell) echo shar: extracting README '(6933 characters)' cat << \SHAR_EOF > README IFS Explorer 1.0 (C)1988 by Allen Braunsdorf (ahg@k.cc.purdue.edu) This program and its documentation may be freely copied and distributed for nonprofit uses. I. Introduction This program decodes iterated function systems (IFSs) into pictures by using the UNIX(trademark of AT&T Bell Laboratories) device independent plot libraries. It is designed to be simple to install and use, yet be powerful and interesting enough introduce the user to this fascinating new branch of mathematics. II. Installation If you do not have the plot library available, you will need to rewrite the graphic parts of the program. If this can be done gracefully (ie: without disturbing a large portion of the code), I would be interested in your patches, as they would likely be of use to many people. If you do have the plot library, look through the include file dev.h for your output device, or one similar. If you don't find it, either make up a definition and add it to dev.h, or set "DEV = GENERIC" in the Makefile. If you do find it (or decide to roll your own), place the appropriate name on the "DEV = " line of the Makefile. To make your own device definition, set as many of these as you know: XMIN, YMIN Left, bottom pixel XMAX, YMAX Right, top pixel These are usually unimportant to the program if you are using the plot library. Specification of these is mainly a convenience. XRES or YRES will be derived from these if they are given. The default values of these parameters are 0, 2047, 0, and 2047. This will make XRES = YRES = 2048. XRES, YRES Number of dots across, down on the device These are used by the program for scaling. If a value too large is chosen, the image will appear more slowly. If a value too small is chosen, the image will be grainy. If XMIN and XMAX are set, XRES will be set automatically to match their values. The default values of these parameters are 2048 and 2048. This should be large enough for most output devices. XASP, YASP How square the device is NTSC Is the device shaped like a TV? These parameters are real numbers. They are a measure of how wide and tall the output area is. If the graphics screen on your terminal were 10.5" by 8", you could define XASP as 10.5 and YASP as 8.0. If XFAC and YFAC are set, these values will be set to match. The default values for these parameters are 1.0 and 1.0 unless NTSC is defined. Then they are set to 4.0 and 3.0 (or something equivalent). This mimics a television's dimensions and is useful for personal computers. XFAC, YFAC How square a pixel is These tell how wide and tall a pixel is. If your pixels are taller than they are wide, and you don't set these right, everything will appear stretched on your screen. If you don't know what these are, just measure XASP and YASP properly. If XASP, YASP, XRES, and YRES are set, these values are derived. The default values for these parameters are 1.0 and 1.0. ONO Don't offset my screen! IFS Explorer works on a square screen. If your device isn't square, it will only use a part of it. If ONO is not defined, this region should be centered. If this isn't what you want [or it doesn't work!] define ONO. All of these parameters are set in the order that they are listed above. In other words, XRES is set by the time XFAC is decided on whether you did it or not. All of this magic happens in ifs.h. Look there for more details. Next, put the name or link option for your plot library on the "LIB = " line. This might look something like "LIB = -l4014" for a Tektronix 4014 terminal, or "LIB = -lex1000" for an Epson EX-1000 dot matrix printer. Next make sure RND is defined properly. See rnd.h for details. Add the proper definitions in rnd.h and Makefile. Finally, just type "make" and the program should compile. III. Format of input files The files used by this program are similar to the data sets shown in Barnsley, M. F. and Sloan, A. D. "A Better Way to Compress Images." Byte, January 1988, pp. 215-223. Each file consists of one or more transforms. Each transform has seven parameters, referred to as a, b, c, d, e, f, and p. These should be separated by white space, but are otherwise free format. The file should have one transform per line, and no blank lines. After the transforms, there is an additional line containing four numbers describing the scale and origin of the image. Every point in the image has its x coordinate multiplied by the first of these and added to the third before being scaled to the device and plotted. Every point in the image has its y coordinate multiplied by the second of these and added to the fourth before being scaled to the device and plotted. These can be used to zoom in on a particular part of an image for closer examination. These can also be used if the image turns out upside down (YMIN and YMAX should be adjusted first however). NOTE: The normalizing origin and scale parameters in the data file (those given on the last line) are NOT in device coordinates. The virtual screen used by this program has (0, 0) at the lower left and (1, 1) at the upper right. The origin is described in these terms. Also, the sum of all the p parameters (the last column) must be 1.0, or you will get an error. IV. Running IFS Explorer has one argument, the name of a data file to be plotted. If this is left out, you'll get a "Usage" message. Several example files are included with the program. Although all my data files have names that end with ".ifs", that suffix is not necessary (ie: your file could just be called "widget"). The Explorer also has two options. "-n" followed by a number tells it how many points to plot (defaults to XRES*YRES). "-o" followed by a number tells it how many points to skip before it starts plotting points (defaults to ten). V. Future enhancements This program is still in its infancy, and it doesn't yet do everything I want it to. Here are a few things I hope to add soon (and to the Amiga version): Autoprobability If you don't know what to put for the last column, the program will generate something for you. Autoscaling If you don't know what to put for the last line, the program will find out for you. Autostop Will stop when the picture is done. (Boy, this would be nice!) Color Either with several bit planes, or some other trick. Multiple files Would plot several systems on the screen at once. Different input file formats are also being considered. If anyone has any suggestions, comments, questions, or bug reports about this program, please send them to me. Additionally, I am beginning work on an IFS compression program. It is unlikely to be done any time soon. Any additional information on this subject would be greatly appreciated. I hope you enjoy this program. It has been a real eye-opener for me. SHAR_EOF if test 6933 -ne "`wc -c README`" then echo shar: error transmitting README '(should have been 6933 characters)' fi echo shar: extracting Makefile '(453 characters)' cat << \SHAR_EOF > Makefile # # IFS Explorer 1.0 (C)1988 by Allen Braunsdorf (ahg@k.cc.purdue.edu) # # # Makefile Change this rather than the other files, if possible. # # Choose a DEV (and its associated LIB) from dev.h. Fill those in below. # Define a random number generator in rnd.h and note it below. # DEV = GENERIC LIB = -l4014 RND = RANDOM CFLAGS = -s -O -D$(DEV) -D$(RND) all: ifs ifs: ifs.o cc -o ifs ifs.o $(LIB) ifs.o: ifs.c ifs.h dev.h rnd.h new: rm *.o ifs SHAR_EOF if test 453 -ne "`wc -c Makefile`" then echo shar: error transmitting Makefile '(should have been 453 characters)' fi echo shar: extracting dev.h '(915 characters)' cat << \SHAR_EOF > dev.h /* * IFS Explorer 1.0 (C)1988 by Allen Braunsdorf (ahg@k.cc.purdue.edu) * */ /* * dev.h Device list for IFS Explorer 1.0 * * Please add your favorite output device to the list below, or correct any * mistakes you believe exist herein. Mail me the product. * * For details on these parameters, read the documentation. * */ /* Generic settings */ /* Use this if you don't want to recompile when you change output devices */ #ifdef GENERIC #define ONO #endif /* Amiga terminal program (has bugs apparently!) */ #ifdef DBWTEK /* -l4014 */ #define XRES 1028 #define YRES 780 #define XFAC 1.0 #define YFAC 1.0 #define ONO #endif /* Visual 550 terminal */ #ifdef V550 /* -l4014 */ #define XRES 1028 #define YRES 780 #define XFAC 1.0 #define YFAC 1.0 #define ONO #endif /* Epson EX-1000 printer */ #ifdef EX1000 /* -lex1000 */ #define XRES 864 #define YRES 648 #define XFAC 1.0 #define YFAC 1.0 #endif SHAR_EOF if test 915 -ne "`wc -c dev.h`" then echo shar: error transmitting dev.h '(should have been 915 characters)' fi echo shar: extracting ifs.h '(2540 characters)' cat << \SHAR_EOF > ifs.h /* * IFS Explorer 1.0 (C)1988 by Allen Braunsdorf (ahg@k.cc.purdue.edu) * */ /* * ifs.h Intelligent include file for IFS Explorer 1.0 * * Constants herein: * * XMIN Minimum X coordinate on output device * XMAX Maximum X coordinate on output device * YMIN Minimum Y coordinate on output device * YMAX Maximum Y coordinate on output device * XRES >= Number of pixels in X direction * YRES >= Number of pixels in Y direction * XASP Aspect ratio in X direction of whole screen * YASP Aspect ratio in Y direction of whole screen * XFAC Aspect ratio in X direction of pixel * YFAC Aspect ratio in Y direction of pixel * NTSC Device is NTSC (like a TV or most microcomputers) * * This file attempts to find reasonable values for omitted constants. * The safest thing to do is to define XRES, YRES, XFAC, and YFAC correctly. * The least safe (but hopefully OK) thing to do is to define NTSC if that * condition applies (width = height * 4/3), else nothing. * Define things in the Makefile rather than here if possible. Report * any problems to the author. * */ #if (defined(XRES) && !defined(XMIN) && !defined(XMAX)) # define XMAX (XRES-1) # define XMIN 0 #endif #ifndef XMIN # if (defined(XRES) && defined(XMAX)) # define XMIN ((XMAX)-(XRES-1)) # else # define XMIN 0 # endif #endif #ifndef XMAX # ifdef XRES # define XMAX ((XMIN)+(XRES-1)) # else # define XMAX 2047 # endif #endif #ifndef XRES # define XRES ((XMAX)-(XMIN)+1) #endif #if (defined(YRES) && !defined(YMIN) && !defined(YMAX)) # define YMAX (YRES-1) # define YMIN 0 #endif #ifndef YMIN # if (defined(YRES) && defined(YMAX)) # define YMIN ((YMAX)-(YRES-1)) # else # define YMIN 0 # endif #endif #ifndef YMAX # ifdef YRES # define YMAX ((YMIN)+(YRES-1)) # else # define YMAX 2047 # endif #endif #ifndef YRES # define YRES ((YMAX)-(YMIN)+1) #endif #ifndef XASP # ifdef XFAC # define XASP ((XFAC)*(XRES)) # else # ifdef YASP # define XASP YASP # ifdef NTSC # undef XASP # define XASP (4.0*YASP/3.0) # endif # else # define XASP 1.0 # ifdef NTSC # undef XASP # define XASP 4.0 # endif # endif # endif #endif #ifndef YASP # ifdef YFAC # define YASP ((YFAC)*(YRES)) # else # define YASP XASP # ifdef NTSC # undef YASP # define YASP (3.0*XASP/4.0) # endif # endif #endif /* This is only right if ((XASP) > (YASP)), but it's fixed in main() */ #ifndef XFAC # ifndef YFAC # define YFAC 1.0 # endif # define XFAC (((XASP)*(YRES)*(YFAC))/((YASP)*(XRES))) #else # ifndef YFAC # define YFAC 1.0 # endif #endif SHAR_EOF if test 2540 -ne "`wc -c ifs.h`" then echo shar: error transmitting ifs.h '(should have been 2540 characters)' fi echo shar: extracting rnd.h '(610 characters)' cat << \SHAR_EOF > rnd.h /* * IFS Explorer 1.0 (C)1988 by Allen Braunsdorf (ahg@k.cc.purdue.edu) * */ /* * rnd.h How do I get a random number between 0 and 1 inclusive? * * Pick one of these and put it on the "RND = " line in the Makefile. * This list is terribly incomplete, but works on every machine 'round these * parts. If you have an important addition, send it to me. * */ /* For BSD 4.3 */ #ifdef RANDOM extern long random(); #define RND (random()/2147483647.0) #endif /* For SYS V? At least at our house! */ #ifdef ERAND48 extern double erand48(); unsigned short estuff[3]; #define RND erand48(estuff) #endif SHAR_EOF if test 610 -ne "`wc -c rnd.h`" then echo shar: error transmitting rnd.h '(should have been 610 characters)' fi echo shar: extracting ifs.c '(3844 characters)' cat << \SHAR_EOF > ifs.c /* * IFS Explorer 1.0 (C)1988 by Allen Braunsdorf (ahg@k.cc.purdue.edu) * * All rights reserved worldwide. This program may be freely copied and * distributed for nonprofit uses. Any commercial use without express * permission of the author is forbidden, as is removing this notice. * */ /* * ifs.c IFS Decoder by Allen Braunsdorf * based on information found in Byte 1988/01 pp. 215-223 * * Throughout: * m Number of transforms * n Number of iterations * o Number of initial points omitted from plot * a-f IFS matrix coefficients * p[n] Probability of point being in transform n */ #include <stdio.h> #include "dev.h" #include "ifs.h" #include "rnd.h" #define MAXLINE 80 int main(argc, argv) int argc; char **argv; { extern char *calloc(); extern double atof(); extern void exit(); void plot(); char sbW[MAXLINE]; FILE *in; float *a, *b, *c, *d, *e, *f, *p; float xs, ys, xt, yt; float pt = 0.0, pk, x = 0.0, y = 0.0, newx, newy, XFac, YFac, xo, yo; int o = 10, i, k, m = -1, n = XRES*YRES, arg = 1; /* Print version number */ fprintf(stderr, "IFS Explorer 1.0 by Allen Braunsdorf\n"); /* Correction for tall screens */ XFac = XFAC; YFac = YFAC; if ((XASP) > (YASP)) { XFac /= YFac; YFac /= YFac; xo = (XRES*XFac-YRES*YFac)/(2.0*XFac); yo = 0.0; } else { XFac /= XFac; YFac /= XFac; xo = 0.0; yo = (YRES*YFac-XRES*XFac)/(2.0*YFac); } #ifdef ONO /* No offset */ xo = 0.0; yo = 0.0; #endif if (2 > argc) { fprintf(stderr, "Usage: %s -n points -o omitted IFSfile\n", argv[0]); exit(-1); } while (arg < (argc-1)) { if ('-' == argv[arg][0]) { switch (argv[arg][1]) { case 'n': n = atoi(argv[++arg]); break; case 'o': o = atoi(argv[++arg]); break; default: fprintf(stderr, "Error: bad option \'%s\'\n", argv[arg]); exit(-1); } ++arg; } else { fprintf(stderr, "Error: one file only (for now)\n"); exit(-1); } } n += o; fprintf(stderr, "Iterations: %d\n", n); fprintf(stderr, "Omitting: %d\n", o); if (NULL == (in = fopen(argv[arg], "r"))) { fprintf(stderr, "Error: can't open input file\n"); exit(-1); } while (fgets(sbW, MAXLINE, in)) { ++m; } fclose(in); if (-1 == m) { fprintf(stderr, "Error: input file empty?!\n"); exit(-1); } if (0 == m) { fprintf(stderr, "Error: input file invalid\n"); exit(-1); } a = (float *)calloc((unsigned)m, sizeof(float)); b = (float *)calloc((unsigned)m, sizeof(float)); c = (float *)calloc((unsigned)m, sizeof(float)); d = (float *)calloc((unsigned)m, sizeof(float)); e = (float *)calloc((unsigned)m, sizeof(float)); f = (float *)calloc((unsigned)m, sizeof(float)); p = (float *)calloc((unsigned)m, sizeof(float)); if (NULL == (in = fopen(argv[arg], "r"))) { fprintf(stderr, "Error: can't open input file\n"); exit(-1); } fprintf(stderr, "Transforms: %d\n", m); for (i = 0; i < m; ++i) { fscanf(in, "%f %f %f %f %f %f %f", a+i, b+i, c+i, d+i, e+i, f+i, p+i); fprintf(stderr, "\t%f %f %f %f %f %f %f\n", a[i], b[i], c[i], d[i], e[i], f[i], p[i]); pt += p[i]; p[i] = pt; } fscanf(in, "%f %f %f %f", &xs, &ys, &xt, &yt); fprintf(stderr, "Transforming by: %f %f %f %f\n", xs, ys, xt, yt); if ((0.01 < pt-1.0) || (0.01 < 1.0-pt)) { fprintf(stderr, "Error: nonunity probability: %f\n", pt); exit(-1); } fclose(in); space(XMIN, YMIN, XMAX, YMAX); openpl(); erase(); while (n--) { pk = RND; for (i = 0; i < m; ++i) { if (pk <= p[i]) { k = i; break; } } newx = a[k]*x+b[k]*y+e[k]; newy = c[k]*x+d[k]*y+f[k]; x = newx; y = newy; if (o) { --o; } else { plot((int)((x*xs*XFAC+xt)*(XRES-1)+xo)+XMIN, (int)((y*ys*YFAC+yt)*(YRES-1)+yo)+YMIN); } } closepl(); } void plot(x, y) int x, y; { if ((XMIN <= x) && (YMIN <= y) && (XMAX >= x) && (YMAX >= y)) { point(x, y); } } SHAR_EOF if test 3844 -ne "`wc -c ifs.c`" then echo shar: error transmitting ifs.c '(should have been 3844 characters)' fi echo shar: extracting a.ifs '(126 characters)' cat << \SHAR_EOF > a.ifs 0.50 0.00 1.00 0.00 0.00 0.00 0.33 0.50 0.00 -1.00 0.00 0.50 1.00 0.33 0.50 0.00 0.00 0.00 0.25 0.50 0.34 1.00 1.00 0.00 0.00 SHAR_EOF if test 126 -ne "`wc -c a.ifs`" then echo shar: error transmitting a.ifs '(should have been 126 characters)' fi echo shar: extracting archimedes.ifs '(102 characters)' cat << \SHAR_EOF > archimedes.ifs 0.9972772 0.0061192 -0.0061192 0.9972772 0.0 0.0 0.999 0.0 0.0 0.0 0.0 -1.0 0.0 0.001 0.5 0.5 0.5 0.5 SHAR_EOF if test 102 -ne "`wc -c archimedes.ifs`" then echo shar: error transmitting archimedes.ifs '(should have been 102 characters)' fi echo shar: extracting box.ifs '(160 characters)' cat << \SHAR_EOF > box.ifs 0.50 0.50 0.00 0.00 0.00 0.00 0.25 0.50 0.50 0.00 0.00 0.00 1.00 0.25 0.00 0.00 0.50 0.50 0.00 0.00 0.25 0.00 0.00 0.50 0.50 1.00 0.00 0.25 1.00 1.00 0.00 0.00 SHAR_EOF if test 160 -ne "`wc -c box.ifs`" then echo shar: error transmitting box.ifs '(should have been 160 characters)' fi echo shar: extracting boxes.ifs '(200 characters)' cat << \SHAR_EOF > boxes.ifs 0.50 0.50 0.00 0.00 0.00 0.00 0.166 0.50 0.50 0.00 0.00 0.00 1.00 0.166 0.00 0.00 0.50 0.50 0.00 0.00 0.166 0.00 0.00 0.50 0.50 1.00 0.00 0.166 0.50 0.00 0.00 0.50 0.25 0.25 0.336 1.00 1.00 0.00 0.00 SHAR_EOF if test 200 -ne "`wc -c boxes.ifs`" then echo shar: error transmitting boxes.ifs '(should have been 200 characters)' fi echo shar: extracting circle.ifs '(103 characters)' cat << \SHAR_EOF > circle.ifs 0.9999811 -0.00613588 0.00613588 0.9999811 0.0 0.0 0.999 0.0 0.0 0.0 0.0 1.0 0.0 0.001 0.5 0.5 0.5 0.5 SHAR_EOF if test 103 -ne "`wc -c circle.ifs`" then echo shar: error transmitting circle.ifs '(should have been 103 characters)' fi echo shar: extracting cross.ifs '(170 characters)' cat << \SHAR_EOF > cross.ifs -0.50 -0.50 0.00 0.00 0.50 0.00 0.25 -0.50 -0.50 0.00 0.00 -0.50 0.00 0.25 0.00 0.00 -0.50 -0.50 0.00 0.50 0.25 0.00 0.00 -0.50 -0.50 0.00 -0.50 0.25 0.50 0.50 0.50 0.50 SHAR_EOF if test 170 -ne "`wc -c cross.ifs`" then echo shar: error transmitting cross.ifs '(should have been 170 characters)' fi echo shar: extracting dragon.ifs '(81 characters)' cat << \SHAR_EOF > dragon.ifs 0.5 -0.5 0.5 0.5 1.0 0.0 0.5 0.5 -0.5 0.5 0.5 -1.0 0.0 0.5 0.1875 0.1875 0.5 0.5 SHAR_EOF if test 81 -ne "`wc -c dragon.ifs`" then echo shar: error transmitting dragon.ifs '(should have been 81 characters)' fi echo shar: extracting fern.ifs '(163 characters)' cat << \SHAR_EOF > fern.ifs 0.00 0.00 0.00 0.16 0.00 0.00 0.01 0.20 -0.26 0.23 0.22 0.00 1.60 0.07 -0.15 0.28 0.26 0.24 0.00 0.44 0.07 0.85 0.04 -0.04 0.85 0.00 1.60 0.85 0.10 0.10 0.50 0.00 SHAR_EOF if test 163 -ne "`wc -c fern.ifs`" then echo shar: error transmitting fern.ifs '(should have been 163 characters)' fi echo shar: extracting ring.ifs '(75 characters)' cat << \SHAR_EOF > ring.ifs 0.8 0.6 -0.6 0.8 0.0 0.0 0.99 0.0 0.0 0.0 0.0 1.0 0.0 0.01 0.5 0.5 0.5 0.5 SHAR_EOF if test 75 -ne "`wc -c ring.ifs`" then echo shar: error transmitting ring.ifs '(should have been 75 characters)' fi echo shar: extracting sierpinski.ifs '(125 characters)' cat << \SHAR_EOF > sierpinski.ifs 0.50 0.00 0.00 0.50 0.00 0.00 0.33 0.50 0.00 0.00 0.50 1.00 0.00 0.33 0.50 0.00 0.00 0.50 0.50 0.50 0.34 0.50 1.00 0.00 0.00 SHAR_EOF if test 125 -ne "`wc -c sierpinski.ifs`" then echo shar: error transmitting sierpinski.ifs '(should have been 125 characters)' fi echo shar: extracting square.ifs '(160 characters)' cat << \SHAR_EOF > square.ifs 0.50 0.00 0.00 0.50 0.00 0.00 0.25 0.50 0.00 0.00 0.50 0.50 0.00 0.25 0.50 0.00 0.00 0.50 0.00 0.50 0.25 0.50 0.00 0.00 0.50 0.50 0.50 0.25 1.00 1.00 0.00 0.00 SHAR_EOF if test 160 -ne "`wc -c square.ifs`" then echo shar: error transmitting square.ifs '(should have been 160 characters)' fi echo shar: extracting star.ifs '(143 characters)' cat << \SHAR_EOF > star.ifs 0.3090169 -0.9510565 0.9510565 0.3090169 0.0 0.0 0.85 -0.999 0.0 0.0 0.0 0.0 0.3249196 0.10 0.0 0.0 0.0 0.0 1.0 0.3249196 0.05 0.5 0.5 0.5 0.5 SHAR_EOF if test 143 -ne "`wc -c star.ifs`" then echo shar: error transmitting star.ifs '(should have been 143 characters)' fi echo shar: extracting tree.ifs '(162 characters)' cat << \SHAR_EOF > tree.ifs 0.00 0.00 0.00 0.50 0.00 0.00 0.05 0.10 0.00 0.00 0.10 0.00 0.20 0.15 0.42 -0.42 0.42 0.42 0.00 0.20 0.40 0.42 0.42 -0.42 0.42 0.00 0.20 0.40 2.00 2.00 0.50 0.00 SHAR_EOF if test 162 -ne "`wc -c tree.ifs`" then echo shar: error transmitting tree.ifs '(should have been 162 characters)' fi echo shar: extracting triangle.ifs '(103 characters)' cat << \SHAR_EOF > triangle.ifs -1.0 0.0 0.0 0.0 1.0 0.0 0.34 0.5 0.0 0.866 0.0 0.0 0.0 0.33 0.5 0.0 -0.866 0.0 0.5 0.866 0.33 1 1 0 0 SHAR_EOF if test 103 -ne "`wc -c triangle.ifs`" then echo shar: error transmitting triangle.ifs '(should have been 103 characters)' fi # End of shell archive exit 0 Allen Braunsdorf WORK k.cc.purdue.edu!ahg General Consultant SCHOOL ei.ecn.purdue.edu!braunsdo Purdue University Computing Center HOME ee.ecn.purdue.edu!gawk!akb

Всего 1 фpагмент(а/ов) |пpедыдущий фpагмент (1)

Если вы хотите дополнить FAQ - пожалуйста пишите.

design/collection/some content by Frog,
DEMO DESIGN FAQ (C) Realm Of Illusion 1994-2000,
При перепечатке материалов этой страницы пожалуйста ссылайтесь на источник: "DEMO.DESIGN FAQ, http://www.enlight.ru/demo/faq".