DIRECTORY Controls, Imager, Matrix3d, Rope, Vector3d; Controls3d: CEDAR DEFINITIONS ~ BEGIN ROPE: TYPE ~ Rope.ROPE; Triple: TYPE ~ Vector3d.Triple; Matrix: TYPE ~ Matrix3d.Matrix; Context: TYPE ~ Imager.Context; ControlData: TYPE ~ Controls.ControlData; ControlProc: TYPE ~ Controls.ControlProc; CoordType: TYPE ~ {lng, lat, mag, x, y, z}; ViewPort: TYPE ~ RECORD [xo, yo: INTEGER, xs, ys: REAL]; Camera: TYPE ~ REF CameraRec; CameraRec: TYPE ~ RECORD [pan, tilt, roll, dx, dy, dz, zoom, fov: ControlData _ NIL]; Hold: TYPE ~ REF HoldRec; HoldRec: TYPE ~ RECORD [lng, lat, mag, dx, dy, dz: ControlData _ NIL]; VecData: TYPE ~ REF VecDataRec; VecDataRec: TYPE ~ RECORD [ name: ROPE _ NIL, lng, lat, mag: REAL _ 0.0, v: Triple _ [0.0, 0.0, 0.0], viewer: Controls.Viewer _ NIL, lngC, latC, magC, xC, yC, zC: ControlData _ NIL ]; VecList: TYPE ~ LIST OF VecData; ScalData: TYPE ~ REF ScalDataRec; ScalDataRec: TYPE ~ RECORD[ name: ROPE _ NIL, val: REAL _ 0.0, viewer: Controls.Viewer _ NIL, C: ControlData _ NIL ]; ScalList: TYPE ~ LIST OF ScalData; InitCamera: PROC [pan, tilt, roll: REAL _ 0.0, zoom: REAL _ 1.0, dx, dy, dz: REAL _ 0.0, fov: REAL _ 40.0, proc: ControlProc _ NIL, data: REF ANY _ NIL, cam: Camera _ NIL] RETURNS [Camera]; GetCamera: PUBLIC PROC RETURNS [Matrix]; GetCameraNoFOV: PUBLIC PROC [pan, tilt, roll, dx, dy, dz: REAL _ 0.0, zoom: REAL _ 1.0] RETURNS [m: Matrix]; SetCamera: PROC [c: Camera]; SetCameraVals: PROC [pan, tilt, roll: REAL _ 0., zoom: REAL _ 1., dx, dy, dz, fov: REAL _ 0.]; InitHold: PROC [proc: ControlProc _ NIL, data: REF ANY _ NIL, hold: Hold _ NIL] RETURNS [Hold]; FocusHold: PROC [tan: Triple, hold: Controls3d.Hold]; GetView: PROC [w, h: INTEGER, in: Matrix _ NIL] RETURNS [Matrix]; InitPix: PROC [context: Context, w, h: INTEGER, in: Matrix _ NIL] RETURNS [Matrix]; GetViewPort: PROC [w, h: INTEGER] RETURNS [ViewPort]; ShowVec: PROC [vec: VecData, context: Context, view: Matrix]; InitScal: PROC [name: ROPE _ NIL, type: Controls.ControlType, trunc: BOOL _ FALSE, min, max, init: REAL] RETURNS [ScalData]; ComputeVec: PROC [vec: VecData, x, y, z: REAL, polar: BOOL _ FALSE]; InitVec: PROC [name: ROPE _ NIL, v: Triple _ [0.0, 0.0, 0.0], polar, cartesian: BOOL _ TRUE, min: REAL _ -5.0, max: REAL _ 5.0] RETURNS [VecData]; SetVec: PROC [vec: VecData, x, y, z: REAL, polar: BOOL _ FALSE, c: ControlData _ NIL, val: REAL]; PaintControls: PROC [c1, c2, c3, c4, c5, c6: ControlData _ NIL]; ReviseVec: PROC [vec: VecData, val: REAL, type: CoordType]; ResetVec: PROC [vec: Controls3d.VecData, p: Triple, polar: BOOL _ FALSE]; END. LControls3d.mesa Copyright c 1985 by Xerox Corporation. All rights reserved. Bloomenthal, May 21, 1986 11:26:04 pm PDT Return a set of camera controls and intialize the camera matrix; return cam if non-nil. Return the current object camera matrix. Return a viewing transformation without perspective. Set view matrix. Set view matrix. Return set of six controls for position and tangency; return hold if non-nil. Set lng, lat and mag controls to be tan vector; set ptx, pty, ptz to zero. Return viewport concatenated with camera matrix; use in if non-nil. Clear context and return viewport concatenated with camera matrix. Return viewport origin and scale; use in if non-nil. Draw and label vector using given viewport. Allocate a ScalData and set its .name, .val and .C. Compute vec.v if polar values, else compute vec.lng, vec.lat, and vec.mag. Allocate VecData, set name and lng, lat, mag and set polar and/or cartesian controls. Compute vec and update control; repaint c if non-nil. Repaint arguments if non-nil. Updates vec and repaints its controls. Reset vec to x, y, z. Κq˜šœ™Jšœ Οmœ1™