Gargoyle3dModelerDirectory.tioga (Eric Bier) Scant documentation. Gargoyle3dModelerDoc categorizes a few of the more interesting interfaces. This is the Gargoyle3D modeling layer. These modules are intended to independent of user interface, but some of them directly support a particular tool in the Gargoyle3D package. Interfaces: SV2d: definitions of 2d types Point2d: TYPE = ARRAY[1..2] OF REAL; Vector2d: TYPE = ARRAY[1..2] OF REAL; Matrix3by3: TYPE = ARRAY [1..3] OF ARRAY [1..3] OF REAL; PolygonObj: TYPE = RECORD [len: NAT, seq: SEQUENCE maxVerts: NAT OF Point2d]; PathObj: TYPE = RECORD [len: NAT, seq: SEQUENCE maxVerts: NAT OF Point2d]; TrigPolygonObj: TYPE = RECORD [ len: NAT, seq: SEQUENCE maxVerts: NAT OF TrigLineSeg]; LineSegObj:TYPE = RECORD [p1, p2: Point2d, slope: REAL, xInt, yInt: REAL, isVert: BOOL]; TrigLineSegObj: TYPE = RECORD [ line: TrigLine, pLo, pHi: Point2d, pLoIsFirst: BOOL]; TrigLineObj: TYPE = RECORD [ c: REAL, -- cos(theta) s: REAL, -- sin(theta) theta: REAL, -- angle in (-pi..pi] d: REAL, -- distance from line to origin slope: REAL, -- slope and yInt are redundant information but they come almost for free. yInt: REAL ]; Ray2dObj: TYPE = RECORD [p: Point2d, d: Vector2d]; SVArtwork: application oriented, texture mapping book-keeping. SVAssembly: application oriented. The main interface for performing generic functions on Gargoyle3D shape primitives, including creating them, drawing them, drawing their feedback, transforming them, describing which of their parts are selected, gravity hit testing, and changing style properties. This interface is analogous to GGSliceOps in Gargoyle (2D). SVBasicTypes: definitions of bounding polyhedra. SVBoundBox: generic bounding polyhedra operations. SVCastRays: application oriented. Implements ray-tracing both of single rays (for user interface use) and of multiple rays (for rendering). SVCoordSys: some generic coordinate system manipulation. Builds a hierarchy of coordinate systems. I now consider the idea of separating coordinate systems from the scene hierarchy a mistake. This package will be withdrawn. SVCoordSys2d: generic 2d coordinate system manipulation. An implementation of the same mistake in two dimensions. SVCoordSysType: definition of 3D coordinate system. SVDraw: generic routines to draw some commonly-needed 2D shapes such as cross hairs, and black-white-black lines (which are visible on both black and white backgrounds). SVDraw3d: some generic 3d drawing operations, including routines to draw coordinate frames, vectors, bounding boxes, spheres, and 2D Imager shapes embedded in 3D. SVDrawMonitor: application oriented. Synchronizes refresh of multiple viewers on the same scene. SVFileOut: application oriented. Writes out Gargoyle3D scene files. SVFiles: application oriented. Reads Gargoyle3D scene files. SVGraphics: generic drawing procedures. A three-dimensional version of Cedar Graphics (yes Cedar Graphics, not the Imager), including routines to draw infinite lines (ending at a vanishing point) and infinite planes (ending at a horizon line). SVHalfSpaces: application oriented. Implements the Half-Space (plane) Gargoyle3D master object class. SVImage: generic operations for creating and drawing 4 AIS files at once (red, green, blue, and black). SVLines2d: generic heavy-weight 2d geometric operations. Builds a fairly large, computationally expensive data structure to represent lines and line segments, in order to provide rapid implementation of closest-point and closest-line tests for these geometric entities. SVLines3d: generic 3d geometric operations, including distance between points, lines, and edges. SVMappings: generic geometric mappings. Creates solid textures from planar images. SVMasterObject: Creates Gargoyle3D master objects of various classes and implements NoOp routines for master object class procs. SVMasterObjectTypes: definitions for cylinders, tori, faces, spheres. SVMatrix2d: generic homogeneous 3x3 matrix transformations SVMatrix3d: generic homogeneous 4x4 matrix transformations SVMatrixOps: Some very generic 4x4 matrix transformations, that position coordinate frames in specified relationships to other coordinate frames (recall Bier's 1986 UNC Workshop paper on Skitter and Jacks). SVModelTypes: Defines data structures for 2D coordinate frames, mapping types, texture patterns, light sources, and the camera parameters. SVPadGraphics: scratchpad rendering, some generic draw procedures for drawing a line and a mirrored version of the line at the same time. Supports the Gargoyle3D Scratchpad. SVParseIn: generic input of matrices, points, planes, colors, surfaces, etc. SVParseOut: generic output of matrices, points, planes, colors, surfaces, etc. SVPolygon2d: generic 2d polygon manipulation and analysis. Allows polygons to be concatenated and extended. Computes area and orientation. SVPreprocess3d: application oriented, preprocessing for ray tracing. SVScene: application oriented. Routines for building the scene hierarchy, positioning the camera, positioning light sources, and walking scene data structures. SVScenePrivate: application oriented, object book-keeping within a scene. SVSceneTypes: application oriented. Defines data structures to represent the scene hierarchy, elements of the gravity database, the camera, the skitter, the selected objects, the geometric primitives, the ray tracing tree, and the master object class structure including procedure definitions. SVSelect: application oriented. Keeps track of which vertices, edges, and entire objects are selected, hot, or both. SVSpheres: generic geometric operations on a sphere, including intersections of sphere with sphere, sphere with line, sphere with plane, and distance of various objects from a sphere. SVStoragePools: generic allocate and free storage. Hopefully, this will become a stand-alone CedarChest package some day. Synchronizes the allocation of storage from pools for multi-processing. SVSweepGeometry: generic surfaces of revolution and extrusion shapes. Routines for defining them and drawing them in a variety of styles. All of the original Solidviews primitives were drawn using these routines (spheres, cones, cylinders, blocks, extrusions and solids of revoluion). SVToolObject: application oriented. Implements an object class for an object that is ignored during ray tracing. It is more or less obsolete. SVTransforms: some generic camera and object transformations, based on SVMatrixOps. When SVCoordSys goes away, this will too. SVUtility: application oriented, miscellany SVVector2d: generic, simple 2d vector operations. Vector addition, vector from angle, dot product... SVVector3d: generic 3d vector operations. ¶Line equation of the form: y*cos(theta) - x*sin(theta) -d = 0, where theta is the angle which the line makes with the x axis and d is the distance from the line to the origin. Ê_˜IblockšÏb œ ˜,Kšœ•˜•šÏi ˜ šœ˜Iitemš œ ÏkœŸœŸœŸœ˜$Lš œ ŸœŸœŸœŸœ˜%Lš œ ŸœŸœŸœŸœŸœŸœ˜8Lš œ ŸœŸœŸœŸœ ŸœŸœ ˜MLš œ ŸœŸœŸœŸœ ŸœŸœ ˜JšœŸœŸœ˜Lš œŸœŸœ ŸœŸœ˜6—Lš œ ŸœŸœŸœŸœ Ÿœ˜XšœŸœŸœ˜Lšœ˜Lšœ˜Lšœ Ÿœ˜—šœ ŸœŸœ˜Lšœ>™>Lšœp™pLšœŸœÏc ˜LšœŸœ  ˜LšœŸœ ˜"LšœŸœ ˜(LšœŸœ J˜WLšœŸ˜ Lšœ˜—Lšœ ŸœŸœ˜2—Kš œ5˜>Kš œÝ˜çKš œ$˜0Kš œ(˜2Kš œ‚˜ŒKš œØ˜âKš œf˜rKšœ%˜3Kšœ£˜©Kšœš˜¢Kš œT˜aKš œ;˜DKšœ6˜=Kš œê˜ôKš œZ˜fKšœ`˜gKš œ…˜ŽKš œW˜`Kš œI˜SKšœr˜€Kšœ2˜EKš œ0˜:Kš œ0˜:Kš œÃ˜ÎKš œ~˜ŠKš œ¡˜®Kš œC˜LKš œD˜NKš œ˜ŒKšœ6˜DKšœ™˜ Kšœ;˜IKš œš˜¦Kšœm˜uKš œ®˜·Kšœµ˜ÃKšœ˜žKš œƒ˜Kš œr˜~Kš œ"˜+Kš œ[˜eKš œ˜)—J˜—…—@U