1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
 typedef SAF_Basis SAF_BasisConstants;
 #define SAF_UNITY               saf_find_basis_unity()          /* The basis set with a single basis vector; {1} */
 #define SAF_CARTESIAN           saf_find_basis_cartesian()      /* The basis set with /N/ basis vectors; {e0, e1, ..., eN} */
 #define SAF_SPHERICAL           saf_find_basis_spherical()      /* The basis set with 3 basis vectors {r, theta, phi} */
 #define SAF_CYLINDRICAL         saf_find_basis_cylindrical()    /* The basis set with 3 basis vectors {r, theta, h} */
 #define SAF_UPPERTRI            saf_find_basis_uppertri()       /* The basis set of a symmetric tensor. Why do we need this if
                                                                  * the algebraic type already captures it? */
 #define SAF_VARIYING            saf_find_basis_variable()       /* For a basis that is varying over the base space. Often needed
                                                                  * if the basis is derived from local surface behavior such as
                                                                  * surface normals. Although, shouldn't we use something like
                                                                  * SAF_SURFACE_NORMAL for that? */
 #define SAF_ANY_BASIS           NULL                            /* Wildcard for searching. */