HerculesBody.mesa (ex JunoBody.mesa)
Procedures for creating a symbolic procedure out of the current image.
Last Edited by: Gnelson, January 13, 1983 10:16 pm
Last Edited by: Stolfi, February 22, 1984 5:50 am
DIRECTORY
HerculesAlgebra USING [Se, PointPtr, Frame];
HerculesBody: DEFINITIONS =
BEGIN OPEN Alg: HerculesAlgebra;
Nest: PROC [list: LIST OF Alg.Se, op, zero: ATOM] RETURNS [Alg.Se];
-- Returns a juno expression of the form (<op> <x1> (<op> <x2> (... (<op> <xn-1> <xn)...))),
-- where the <xi> are the elements of the given list. If the list is empty, returns zero instead.
NestAtoms: PROC [list: LIST OF ATOM, op, zero: ATOM] RETURNS [Alg.Se];
-- Same except that input is LIST OF ATOM.
EraseAllNames: PROC;
-- Erases the names of all points in the current image.
NamePoint: PROC [p: Alg.PointPtr, i: INT] RETURNS [nam: ATOM];
-- Assigns the ith standard name to the point p, and returns the chosen name.
MakeBody: PROC[frame: Alg.Frame, nParms: INT] RETURNS [body: Alg.Se];
-- Creates a procedure body describing all points in the current image list
-- with nonzero winding numbers, plus associated constraints and actions.
-- Assumes
nParms of those points are parameters, whose name field has already been set.
-- The remaining points are local variables. The hints for each of these will be its
-- current position, relative to the frame determined by the given frame.

END.
Edited on January 24, 1984 3:25 am, by Stolfi
-- Added Tioga formatting.
-- Extended MakeDefBody for more than two arguments.
-- Cleaned up matrix operations in preparation for relative constraints.
changes to: Matrix (new), GetFrameMatrix (new), InvertMatrix (new), MultiplyMatrix (new), EraseAllNames (new), NamePoint (new), MakeBody (new - replaces MakeDefBody), MakeDefBody (deleted), ComputeTransform (parameter change), TransformPoints (replaces PerformTransform), PerformTransform (replaced by TransformPoints), ComputeSomeTransform (replaces a piece of JunoTop.MoveStep), TransformPoint (new)
Edited on January 28, 1984 2:40 am, by Stolfi
changes to: TransformPoint (takes and returns x, y: REAL instead of p: PointPtr), Matrix, GetFrameMatrix, InvertMatrix, MultiplyMatrix, ComputeTransform, ComputeSomeTransform, TransformPoint (moved to JunoStorage)
Edited on February 7, 1984 2:40 am, by Stolfi
changes to: Delete, TransformPoint, Copy, copiedPoints, Identify (moved to HerculesImage), FindSelectedPoint, SortPoints (moved to HerculesTop) MakeBody (parameter is Frame, result is Se)
Edited on February 10, 1984 4:10 am, by Stolfi
changes to: UnEval, UnEvalList (replace PointNames, PointOrValueNames),