INTERFACE SPBasis; IMPORT SPBezierPWFunction, SPBezPolyPWFunction, SPTriang; TYPE NAT = CARDINAL; BOOL = BOOLEAN; LONG = LONGREAL; PROCEDURE BuildHBasis( deg: NAT; (* Degree of polynomials *) cont: [0..1]; (* Continuity. *) tri: REF SPTriang.T; (* Triangulation. *) ortho: BOOL; (* TRUE to quasi-orthogonalize the basis. *) ): REF SPBezierPWFunction.Basis; (* Builds the ANS basis for the space of homogeneous spherical polynomial splines of degree "deg" and continuity "cont", for the given triangulation, in the Bezier representations. If "ortho" is true, applies the quasi-orthogonalization heuristic to the result. At present, the degree must be 2 or 3 for continuity 0, and 5 or 6 for continuity 1. *) PROCEDURE BuildNHBasis( deg: CARDINAL; cont: CARDINAL; tri: REF SPTriang.T; ortho: BOOLEAN; ): REF SPBezPolyPWFunction.Basis; (* Builds a basis for the space of non-homogeneous spherical splines on triangulation "tri", of degree "deg" with specified continuity. If "ortho" is true, applies the quasi-orthogonalization heuristic to each homogeneous layer ("deg" and "deg-1") --- but does not try to orthogonalize the layers with respect to each other. At present, the degree must be 3 for continuity 0, and 6 for continuity 1. *) PROCEDURE SpaceDimension(deg: NAT; cont: [0..1]; NT: NAT): NAT; (* Dimension of the homogeneous spline space of degree "deg" and continuity "cont", in a triangulation with "NT" triangles without degeneracies (two coplanar edges incident to the same vertex). *) PROCEDURE NumCoeffs(deg: NAT): NAT; (* Number of Bezier coefficients per triangle in a homogeneous polynomial spline of degree "deg". *) END SPBasis.