notes on esherish.inc

1.  Installation:  copy "escherish.inc" to your povray include directory -- that's it.
2.  Use:
	a.  In your scene file, include "escherish.inc".
	
	b.  Put the following lines in your scene file:
                #declare wideness=[a];
                #declare radiuss=[b];
                #declare sides=[c];
                #declare thicknesss=[d];
                #declare heightt=[e];
                #declare flat_border=[f];

            --->replace [a] with a real positive number, it controls the width of the "sides".
            --->replace [b] with a real positive number, it controls the length of the "sides".
	    --->replace [c] with an integer greater than or equal to 3.  this number gives
		   the number of "sides" of the figure.
            --->replace [d] with a real positive number, it controls the thickness of outlining lines.   
	    --->replace [e] with a real positive number, if you are using flat_borders,
	           it controls the height of the outline lines.
	    --->replace [f] with "on" or "off".  With the "on" option, the lines outlining the "sides" are made up
	           of boxes and cylinders, which looks kind of like a wall.  With the "off" option, the outlining
	           lines are made up of cylinders and spheres, which kind of looks like pipes instead. 	                   
		  
	c.  If you do not want to define the textures of each of the "sides" of your figure, then
	    put the following line in your scene file:
		  #declare seedish = [xxxx];
		-->replace [xxxx] with any integer; this causes the main macro to randomly assign
			textures to each of the "sides" of the figure.
			
	d.  If you do wish to define the textures for the "sides", you must declare them all.
	    AFTER the wideness, radiuss, sides, etc. declarations, declare the textures like the following:
	        #declare texture_defs = array[sides]
	        #declare textures_defs[0] = texture{TEXTURE CODE};
                #declare textures_defs[1] = texture{MORE TEXTURE CODE};
                        ....and so on until....
                #declare textures_defs[sides-1] = texture{LAST SIDE TEXTURE CODE};
            You MUST use the name "textures_defs" for this array of textures.
            If you are going to use more than one differently defined escher-like impossible figure in a scene,
            then you should undefine the texture_defs array after calling the figure creation macro (Create_Figure()).
            To do this include the following line:
                #undef textures_def
            Before calling the figure creation macro again, if you wish to define textures for the new figure,
            simply declare them as described above.
                
        e.  If you want to change the default texture of the outline lines put the following in your scene file.
                #declare outline_tex_def=texture{SOME KIND OF TEXTURE CODE}
            If you are going to use more than one differently defined escher-like impossible figure in a scene,
            then you should undefine outline_tex_def after calling the figure creation macro (Create_Figure()).
            To do this include the following line:
                #undef outline_tex_def
            Before calling the figure creation macro again, if you wish to define an outline texture for the new figure,
            simply declare it as described above.
                
        i.  Now put the following line in your scene file:
                Create_Figure(wideness,radiuss,sides,thicknesss,heightt,flat_border)
            This line defines an object with the name of "figure".  This object is your impossible figure.
            For all practical purposes, unless you have used some really off the wall numbers, this is a mostly flat
            figure that lies perpendicular to the Z axis, in the XY plane.  To have this figure render, put a line
            like the following in your scene file:
                object{figure}
            You can put in rotation, translation and other usual object things in the {}'s along with the figure,
            just like any other object{} statement.  Then aim the camera at your figure, throw in a light source,
            and you have your scene.
            
            If you wish to use differently defined figures in a scene, #undef and redifine textures_def and 
            outline_tex_def as described above, and with whatever new values you want redeclare any of the following:
                wideness, radiuss, sides, thicknesss, heightt, flat_border, and seedish.
            Then call the Create_Figure() macro.
            
            There are some example scenes in the zip file containing this readme.
            Use them, distort them, whatever.  Keep in mind the code does not have error checking in it...if you enter
            strange enough numbers, you may get results that do not look like an Escher impossible figure at all.
            The example scenes were rendered on my machine using resolutions found in the square.ini file found in the
            zip file containing this readme.
            
            ...enjoy    
                            
