Specifications for Three-dimensional PostScript (PreScript) Since our interpreter is no longer a preprocessor, maybe a new name! A three-dimensional path will be specified as a double-array in the form: [ [x1 y1 z1 /command1] [x2 y2 z2 /command2] ...] where x,y, and z are point specifications for various commands and /command can be moveto, lineto, rmoveto, and rlineto. 3-Dimensional Path Operators newpath3 - begins a new 3D path. Clears any current path. reversepath3 - reverses the direction of a 3D path. closepath3 - Makes a set of closed 2D objects from the path. currentpoint3 - Returns the x y z coordinate of the current point x y z moveto3 - Moves to an new x y z coordinate, starting a new subpath x y z rmoveto3 - Moves to a new x y z delta, starting a new subpath x y z lineto3 - Extends the path along the line to the point x y z x y z rlineto3 - Extends the path along the delta line x y z pathbbox3 - Returns three points for the three opposite corners of a cube bounding the path pathforall3 - Moves through the 3D path and executes operators much like the 2D pathforall n lastplace3 - Grabs data from a stack of last currentpoints x y z translate3 - Translates the viewpoint by x y z deltas x y z scale3 - Scales the viewpoint by x y z ratios x1 y1 z1 x2 y2 z2 angle rotppa3 - Rotate based on point point angle, meaning - That the two points specify a line and - The angle starts at zero with a plane - intersecting the origin. [a b c d e f g h i j k l] (CTM) matrix,initmatrix,identmatrix,defaultmatrix,currentmatrix,setmatrix,concat concatmetrix,transform,dtransform,itransform,idtransform,invertmatrix - Matrix transformations There is a new variable called "plane" represented internally as (Ax+By+Cz+D=0) But it can be defined in several ways: 3pts xyz intercepts point and normal axis and angle from origin old plane and translate in direction of normal old plane and rotate around axis transform old plane with matrix Can do things in planes Manipulate planes Finally there is an object prism3 which takes a plane with an image and moves this plane to a new 3D location, and then does a one-to-one mapping of all vertices in the two drawings, connecting the lines and the quadrilaterals the lines forms, so that the lines can be stroked or can be filled in. Somehow handling of 3D volumetric filling and clipping? Somehow handling of 3D opaqueness so that objects "behind" have their line segments either entirely or partially hidden?