--- ray/src/cv/mgflib/mgfdoc.tr 1997/03/18 11:43:22 1.16 +++ ray/src/cv/mgflib/mgfdoc.tr 1997/10/16 11:42:25 1.19 @@ -279,14 +279,14 @@ Context Cntl. Entity Default Value Field Entities Affe = = = = = Object o - - - Transform xf - - T{ -f, sph, cyl, cone, +f, fh, sph, cyl, cone, ring, torus, prism T} Material m 2-sided black T{ sides, rd, td, ed, rs, ts, ir T} T{ -f, sph, cyl, cone, +f, fh, sph, cyl, cone, ring, torus, prism T} Color c neutral grey T{ @@ -298,7 +298,7 @@ Vertex v T{ (0,0,0), no normal T} p, n T{ -f, sph, cyl, cone, +f, fh, sph, cyl, cone, ring, torus, prism T} .TE @@ -817,6 +817,7 @@ Geometry .TS lw(.75i) lw(1.75i) lw(3i). f v1 v2 v3 ... polygon using current material, spec. vertices +fh v1 v2 v3 - ... face with explicit holes sph vc radius sphere cyl v1 radius v2 truncated right cylinder (open-ended) cone v1 rad1 v2 rad2 truncated right cone (open-ended) @@ -1902,6 +1903,8 @@ and require a normal direction. An .UL f +or +.UL fh entity will interpolate vertex normals if given, and use the polygon plane normal otherwise. See the @@ -1941,6 +1944,7 @@ SEE ALSO .UL cone, .UL cyl, .UL f, +.UL fh, .UL n, .UL p, .UL prism, @@ -1985,6 +1989,7 @@ SEE ALSO .UL cone, .UL cyl, .UL f, +.UL fh, .UL n, .UL prism, .UL ring, @@ -2031,6 +2036,7 @@ xf SEE ALSO .LP .UL f, +.UL fh, .UL p, .UL prism, .UL ring, @@ -2173,6 +2179,10 @@ either all normals or no normals, and to stick with tr when normals are used. Also, specified normals should point in the general direction of the surface for best results. +.LP +Vertices should not be shared between any two contours. +I.e., a hole should not share a vertex or edge with the perimeter or +another hole, or incorrect rendering may result. .SH EXAMPLE .DS @@ -2240,6 +2250,7 @@ SEE ALSO .UL cone, .UL cyl, .UL f, +.UL fh, .UL m, .UL prism, .UL ring, @@ -2297,6 +2308,7 @@ SEE ALSO .LP .UL cone, .UL f, +.UL fh, .UL m, .UL prism, .UL ring, @@ -2369,6 +2381,7 @@ SEE ALSO .LP .UL cyl, .UL f, +.UL fh, .UL m, .UL prism, .UL ring, @@ -2435,6 +2448,7 @@ SEE ALSO .UL cyl, .UL cone, .UL f, +.UL fh, .UL m, .UL ring, .UL sph, @@ -2491,6 +2505,7 @@ SEE ALSO .UL cyl, .UL cone, .UL f, +.UL fh, .UL m, .UL prism, .UL sph, @@ -2551,6 +2566,7 @@ SEE ALSO .UL cyl, .UL cone, .UL f, +.UL fh, .UL m, .UL prism, .UL ring, @@ -3911,6 +3927,7 @@ typedef FLOAT FVECT[3]; /* a 3-d real vector */ typedef struct { int clock; /* incremented each change -- resettable */ + char *client_data; /* pointer to private client data */ FVECT p, n; /* point and normal */ } C_VERTEX; /* vertex context */ .DE @@ -3932,8 +3949,14 @@ handler. (See the .I xf_handler page.)\0 +The +.I client_data +pointer may be used to index private application data for vertex +linking, etc. +This pointer is initialized to NULL when the context is created, +and otherwise ignored by the parser library. .LP -It is possible but not recommended to alter the contents of the +It is possible but not recommended to alter the shared contents of the vertex structure returned by .I c_getvert. Normally it is read during the @@ -4054,6 +4077,7 @@ structure, defined in "parser.h" as: typedef struct { int clock; /* incremented each change */ + char *client_data; /* pointer to private client data */ short flags; /* what's been set */ short ssamp[C_CNSS]; /* spectral samples, min wl to max */ long ssum; /* straight sum of spectral values */ @@ -4069,6 +4093,11 @@ desired. This is a convenient way to keep track of whether or not a color has changed since its last use. The +.I client_data +pointer may be used to index private application data. +This pointer is initialized to NULL when the context is created, +and otherwise ignored by the parser library. +The .I flags member indicates which color representations have been assigned, and is an inclusive OR of one or more of the following: @@ -4213,6 +4242,7 @@ structure, defined in "parser.h" as: typedef struct { int clock; /* incremented each change -- resettable */ + char *client_data; /* pointer to private client data */ int sided; /* 1 if surface is 1-sided, 0 for 2-sided */ float nr, ni; /* index of refraction, real and imaginary */ float rd; /* diffuse reflectance */ @@ -4236,6 +4266,11 @@ material field entity, and may be reset by the calling desired. This is a convenient way to keep track of whether or not a material has changed since its last use. +The +.I client_data +pointer may be used to index private application data. +This pointer is initialized to NULL when the context is created, +and otherwise ignored by the parser library. .LP All reflectance and transmittance values correspond to normal incidence, and may vary as a function of angle depending on the