Types
Ray: TYPE ~ G3dBasic.Ray;
NatSequence: TYPE ~ G3dRender.NatSequence;
NatSequenceRep: TYPE ~ G3dBasic.NatSequenceRep;
Pair: TYPE ~ G3dRender.Pair;
Triple: TYPE ~ G3dRender.Triple;
TripleSequence: TYPE ~ G3dRender.TripleSequence;
TripleSequenceRep: TYPE ~ G3dBasic.TripleSequenceRep;
RGB: TYPE ~ G3dRender.RGB;
RealSequence: TYPE ~ G3dRender.RealSequence;
RealSequenceRep: TYPE ~ G3dBasic.RealSequenceRep;
Context: TYPE ~ G3dRender.Context;
SixSides: TYPE ~ G3dRender.SixSides;
Matrix: TYPE ~ G3dRender.Matrix;
Shape: TYPE ~ G3dRender.Shape;
Vertex: TYPE ~ G3dShape.Vertex;
Patch: TYPE ~ G3dRender.Patch;
PatchSequence: TYPE ~ G3dRender.PatchSequence;
PatchSequenceRep: TYPE ~ G3dRender.PatchSequenceRep;
FaceRep: TYPE ~ G3dShape.FaceRep;
FaceSequenceRep: TYPE ~ G3dShape.FaceSequenceRep;
PatchProc: TYPE ~ G3dRender.PatchProc;
CtlPoint: TYPE ~ G3dRender.CtlPoint;
CtlPtInfo:
TYPE ~ G3dRender.CtlPtInfo;
RECORD[coord: CtlPoint, shade: Shading, vtxPtr: NAT, data: REF];
CtlPtInfoSequence: TYPE ~ G3dRender.CtlPtInfoSequence;
CtlPtInfoProc: TYPE ~ G3dRender.CtlPtInfoProc;
Shading: TYPE ~ G3dRender.Shading;
ShadingClass: TYPE ~ G3dRender.ShadingClass;
RenderStyle: TYPE ~ G3dRender.RenderStyle;
RenderData: TYPE ~ G3dRender.RenderData;
ShapeClass: TYPE ~ G3dRender.ShapeClass;
ShapeProc: TYPE ~ G3dRender.ShapeProc;
ClipState: TYPE ~ G3dRender.ClipState;
OutCode: TYPE ~ G3dRender.OutCode;
AllOut: OutCode ~ G3dRender.AllOut;
NoneOut: OutCode ~ G3dRender.NoneOut;
FacingDir: TYPE ~ G3dRender.FacingDir;
LORA: TYPE = LIST OF REF ANY;
MidPtProc: TYPE ~ PROC[v0, v1: REF CtlPtInfo] RETURNS[REF CtlPtInfo];
nullTriple: Triple ~ [0.0, 0.0, 0.0];
Corner:
TYPE ~
RECORD [ inVtx, outVtx:
NAT ← 0,
inDir, outDir, normal, interiorKnot: Triple ← nullTriple,
concave:
BOOLEAN ←
FALSE ];
Represents a corner of a polygon,
- inVtx is the vertex at the other end of the incoming edge (previous vertex in order),
- outVtx is other vertex on outgoing edge,
- inDir, outDir are the corresponding outward direction vectors,
- normal is the carefully determined normal vector
- concave = TRUE indicates corner is concave vertex needing reversed cross product.
CornerSeq: TYPE ~ RECORD [ length: NAT ← 0, s: SEQUENCE maxLength: NAT OF Corner ];
CornerSeqSeq: TYPE ~ RECORD [ length: NAT ← 0,
s: SEQUENCE maxLength: NAT OF REF CornerSeq ];
TangentSet:
TYPE ~
RECORD [t0, et0, t1, et1: Triple ← nullTriple];
Represents the tangents at the endpoints of an edge (in object space and eyespace), the edge is ordered in the vertex order of the polygon (t0 at leading endpoint, t1 at trailing endpoint)
TangentSeq: TYPE ~ RECORD [length: NAT ← 0, s: SEQUENCE maxLength: NAT OF TangentSet];
TangentTriple: TYPE ~ ARRAY [0..3) OF TangentSet;
TangentQuad: TYPE ~ ARRAY [0..4) OF TangentSet;
TangentSeqSeq:
TYPE ~
RECORD [
length: NAT ← 0, s: SEQUENCE maxLength: NAT OF REF TangentSeq];
Triangle: TYPE ~ RECORD [ v: ARRAY[0..3) OF CtlPtInfo, t: ARRAY[0..3) OF TangentSet ];
NatSequenceSequence: TYPE ~ RECORD [
length: NAT ← 0, s: SEQUENCE maxLength: NAT OF NatSequence ];
BoolSequence: TYPE ~ RECORD [length: NAT ← 0, s: SEQUENCE maxLength: NAT OF BOOLEAN];
Renamed Procedures
Add: PROC[v1, v2: Triple] RETURNS[Triple] ~ G3dVector.Add;
Mul: PROC[v: Triple, s: REAL] RETURNS[Triple] ~ G3dVector.Mul;
Cross: PROC[v1, v2: Triple] RETURNS[Triple] ~ G3dVector.Cross;
Div: PROC[v: Triple, s: REAL] RETURNS[Triple] ~ G3dVector.Div;
Dot: PROC[v1, v2: Triple] RETURNS[REAL] ~ G3dVector.Dot;
Length: PROC[v: Triple] RETURNS[REAL] ~ G3dVector.Length;
Negate: PROC[v: Triple] RETURNS[Triple] ~ G3dVector.Negate;
Nmlize: PROC[v: Triple] RETURNS[Triple] ~ G3dVector.Normalize;
Sub3: PROC[v1, v2: Triple] RETURNS[Triple] ~ G3dVector.Sub;
ReleasePatch: PROC [p: REF Patch] ~ G3dClipXfmShade.ReleasePatch;
GetPatch: PROC [size: NAT] RETURNS [REF Patch] ~ G3dClipXfmShade.GetPatch;
GetProp: PROC [propList: Atom.PropList, prop: REF ANY] RETURNS [REF ANY] ~
Atom.GetPropFromList;
PutProp: PROC [propList: Atom.PropList, prop: REF ANY, val: REF ANY]
RETURNS [Atom.PropList] ~ Atom.PutPropOnList;