DIRECTORY Draw2d, Imager, Rope, Matrix3d, Spline3d, Vector3d; Draw3d: CEDAR DEFINITIONS ~ BEGIN Context: TYPE ~ Imager.Context; Triple: TYPE ~ Vector3d.Triple; Matrix: TYPE ~ Matrix3d.Matrix; Mark: PROC [p: Triple, context: Context, m: Matrix, type: Draw2d.MarkType _ cross, label: Rope.ROPE _ NIL]; PP: PROC [p0, p1: Triple, c: Context, m: Matrix, type: Draw2d.DrawType _ solid]; PV: PUBLIC PROC [p, v: Triple, label: Rope.ROPE _ NIL, context: Context, m: Matrix, mark: Draw2d.MarkType _ none, scale: REAL _ 0.2]; V: PROC [v: Triple, name: Rope.ROPE _ NIL, context: Context, m: Matrix]; Axes: PROC [context: Context, m: Matrix]; DrawCurve: PROC [c: Spline3d.Coeffs, context: Context, m: Matrix _ NIL]; DotCurve: PROC [c: Spline3d.Coeffs, context: Context, m: Matrix _ NIL]; DrawBezierPolygon: PROC [b: Spline3d.Bezier, context: Context, m: Matrix _ NIL, type: Draw2d.DrawType _ solid, close: BOOL _ FALSE]; END. ÞDraw3d.mesa Copyright c 1985 by Xerox Corporation. All rights reserved. Bloomenthal, April 9, 1986 2:54:44 pm PST In the following procedures, if the matrix is found to have perspective the transformed points are clipped against the viewing frustum. Mark transformed p, with optional label; type is one of {cross, x, asterisk, dot, none}. Draw segment p0p1; type is one of {solid, dash, dot}. Draw and label vector v based at point p. Mark point p with specified type (one of {cross, x, asterisk, dot, none}.. Draw and label triple. Draw the coordinate axes. The following procedures are for drawing three-dimensional splines. Draw the curve on the given context, first transforming the curve if m is non-nil; the number of curve segments is determined by Lane's formula. Draw the curve on the given context as above but as a series of dots. Draw the traditional three sides of the Bezier polygon; if close is true, draw the fourth side. type is one of {solid, dash, dot}. ÊŸ˜šœ ™ Jšœ Ïmœ1™