DIRECTORY Controls, Imager, IO, Matrix3d, Menus, Rope, Spline3d, TubeDefs, Vector3d; TubeStructure: CEDAR DEFINITIONS ~ BEGIN OPEN TubeDefs; PropagateCircleRes: PUBLIC PROC [tube: Tube, circleRes: NAT]; PropagateFrames: PROC [ tube: Tube, scale, epsilon: REAL _ 1.0, taper: REAL _ 0.0, view: Matrix _ NIL]; MakeFrames: PROC [tube: Tube, scale0, scale1, epsilon: REAL _ 1.0, view: Matrix _ NIL]; TubeResInfo: PUBLIC PROC [tube: Tube] RETURNS [nPoints, nPolys, minCres, maxCres: INTEGER]; GetCircle: PUBLIC PROC [res: NAT] RETURNS [PairSequence]; Basis: PROC [v, vv, rv: Triple] RETURNS [n, b: Triple]; RefMatrix: PROC [p, x, y, z: Triple, s, t: REAL, out: Matrix _ NIL] RETURNS [Matrix]; ScreenPick: PROC [tube: Tube, mouse: Mouse, view: Matrix, pick: Pick]; FindPick: PROC [tube: Tube, mouse: Mouse, view: Matrix, pick: Pick]; PointPick: PROC [pick: Pick]; SplinePick: PROC [mouse: Mouse, pick: Pick]; DivideSpline: PROC [pick: Pick]; NewSplits: PROC [pick: Pick]; ChangeTangent: PROC [tube: Tube, pick: Pick, tangent: Triple]; ChangePosition: PROC [tube: Tube, pick: Pick, change: Triple]; NumberSplines: PROC [tube: Tube] RETURNS [n: NAT _ 0]; NumberPicked: PROC [pick: Pick] RETURNS [n: NAT _ 0]; BeforePicked: PROC [pick: Pick] RETURNS [n: NAT _ 0]; AfterPicked: PROC [pick: Pick] RETURNS [n: NAT _ 0]; END. €TubeStructure.mesa Copyright c 1985 by Xerox Corporation. All rights reserved. Bloomenthal, May 20, 1986 10:52:56 am PDT Change circular resolution to circleRes for tube. MakeFrames for each of the spline segments in tube. Epsilon controls the subdivision. If view is nil, the tube is considered only in object space and epsilon is the same discriminator as in Spline3d.FlatBezier; if view is non-nil, epsilon is the number of pixels the straight line approximation is permitted to deviate from the curve as transformed to screen-space. Create sequence of frames for the entire limb. See PropagateFrames for an explanation of epsilon and view. Return the total number of points and polygons in a tube. Get a planar circle for subsequent tubular constructions. Given tangent v along a curve, previous tangent vv, and reference vector rv, compute vectors n and b; v, n, and b form a new set of axes; the transformation of the x, y, and z axes to v, n, and b accomodates the twist in the curve; n and b are unitized Return matrix which transforms origin to p, xaxis to x, yaxis to y and zaxis to z; twist around z by t degrees and scale by s. Called from a Controls.GraphicsProc; given a sequence of splines, the current mouse, and the current view, set the PickData. Given a sequence of splines, the mouse and the current view, set pd.t and pd.s. Given pd.s, set pd.sPick0 and pd.sPick1, as well as the selected field in all pd.s. Given a pd.t and pd.s, set pd.dividePending, pick.sPt0, pick.sPt1, pick.ptPicked, pick.tangent; set pick.sPick0 and pick.sPick1 to NIL. Divide selected spline at point selected. Compute newly divided splines. Change tangent at selected point. Change location of selected point. Return number of splines sequenced after "splines." Return number of picked splines. Return number of splines prior to picked sequence. Return number of splines following picked sequence. Κœ˜šœ™Jšœ Οmœ1™J™!J˜—š œžœ*˜>J™"J˜—š  œžœžœžœ˜6K™3K™—š  œžœžœžœ˜5K™ K™—š  œžœžœžœ˜5K™2K™—š  œžœžœžœ˜4™3K™——Jšžœ˜J˜——…—*F