Name of Library | Tasks |
---|---|
bool | Boolean operations on polygonal models. |
cagd | Low level freeform curves and surfaces. |
geom | General geometry functions. |
misc | memory allocation, configuration files, attributes, etc. |
prsr | input and output for file/sockets of objects of IRIT. |
symb | Symbolic manipulation of curves and surfaces. |
trim | Trimmed surfaces support. |
triv | Freeform trivariate functions. |
xtra | Public domain code that is not part of IRIT. |
BoolOperType | Meaning |
---|---|
BOOL_OPER_OR | Union of two geometrical objects |
BOOL_OPER_AND | Intersection of two geometrical objects |
BOOL_OPER_SUB | The difference of two geometrical objects |
BOOL_OPER_NEG | Unary Inside-out of one geometrical object |
BOOL_OPER_CUT | Boundary of one object outside the other |
BOOL_OPER_MERGE | Simple merge without any computation |
typedef struct CagdCrvStruct { struct CagdCrvStruct *Pnext; struct IPAttributeStruct *Attr; CagdGeomType GType; CagdPointType PType; int Length; /* Number of control points (== order in Bezier). */ int Order; /* Order of curve (only for Bspline, ignored in Bezier). */ CagdBType Periodic; /* Valid only for Bspline curves. */ CagdRType *Points[CAGD_MAX_PT_SIZE]; /* Pointer on each axis vector. */ CagdRType *KnotVector; } CagdCrvStruct; typedef struct CagdSrfStruct { struct CagdSrfStruct *Pnext; struct IPAttributeStruct *Attr; CagdGeomType GType; CagdPointType PType; int ULength, VLength; /* Mesh size in the tensor product surface. */ int UOrder, VOrder; /* Order in tensor product surface (Bspline only). */ CagdBType UPeriodic, VPeriodic; /* Valid only for Bspline surfaces. */ CagdRType *Points[CAGD_MAX_PT_SIZE]; /* Pointer on each axis vector. */ CagdRType *UKnotVector, *VKnotVector; } CagdSrfStruct;Curves and surfaces have a geometric type GType to prescribe the type of entity (such as CAGD_SBEZIER_TYPE for Bezier surface) and a point type PType to prescribe the point type of the entity (such as CAGD_PT_E3_TYPE for three dimensional Euclidean control points). Length and Order slots are used to hold the number of control points in the mesh and or control polygon and the order(s) of the basis functions. Periodic flag(s) are used to denote periodic end conditions. In addition, KnotVector slot(s) are used if the entity exploits Bspline basis functions, or NULL otherwise. The control polygon and/or mesh itself is organized in the Points slot as a vector of size CAGD_MAX_PT_SIZE of vectors of CagdRType s. For surfaces, the mesh is ordered U first and the macros of CAGD_NEXT_U CAGD_NEXT_V , and CAGD_MESH_UV can be used to determine indices in the mesh. All structures in the cagd library can be allocated using New constrcutures (i.e. CagdUVNew or CagdCrfNew , freed using Free destructores (i.e. CagdSrfFree or {CagdBBoxFree}, linked list free using FreeList destructores (i.e. CagdPolylineFreeList ), and copied using copy constructores {i.e. CagdPtCopy or CagdCtlPtCopyList ). This library has its own error handler, which by default prints an error message and exit the program called CagdFatalError . Most globals in this library have a prefix of Cagd for general cagd routines. Prefix of Bzr is used for Bezier routines, prefix of Bsp for Bspline specific routines, prefix of Cnvrt for conversion routines, and Afd for adaptive forward differencing routines.
Header (include/*.h) | Functionality |
---|---|
bbox.h | Bounding boxes related functions |
convex.h | Convexity of polygons and convex polygon decomposition |
geomat3d.h | General three dimensional geometry queries |
geomvals.h | Area, Volume, and Size queries on polygonal objects |
intrnrml.h | Internal normal interpolation for polygonal models |
ln_sweep.h | A line sweep implemetation |
poly_cln.h | Clean up degenerated polygons/polylines |
primitiv.h | Constructors of polygonal BOXes, CYLINDERs, etc. |
Header (include/*.h) | Functionality |
---|---|
config.h | Manipulation of configuration files (*.cfg files) |
dist_pts.h | Enegry based distribution of points. |
gen_mat.h | Homogeneous matrices manipulation |
getarg.h | Command line parsing for application tools |
imalloc.h | Low level dynamic memory functions for IRIT |
miscattr.h | Low level attribute related functions |
priorque.h | An implementation of a priority queue |
xgeneral.h | Low level, machine specific, routines |
Header (include/*.h) | Functionality |
---|---|
allocate.h | High level dynamic allocation of objects |
attribut.h | High level attributes for objects |
ip_cnvrt.h | Freeform to polygon and polyline high level conversion |
iritprsr.h | Main interface to reading and writing data |
irit_soc.h | Socket communication for data exchange |
IRIT_DIR = /usr/local/irit include $(IRIT_DIR)/makeflag.unx OBJS = program.o program: $(OBJS) $(CC) $(CFLAGS) -o program $(OBJS) $(LIBS) -lm $(MORELIBS)The simplicity of this makefile is drawn from the complexity of makeflag.unx. The file makeflag.unx sets the CC, CFLAGS, LIBS, and MORELIBS for the machined using among other things. Furthermore, makeflag.unx also sets the default compilation rules from C sources to object files. The file makeflag.unx had to be modified once, when IRIT was installed on this system. If the used system is not a unix environment, then the file makefile.unx will have to be replaced with the proper makeflag file. In an OS2 environment, using the emx gcc compiler, the makefile is even simpler since the linking rule is also defined in makeflag.os2:
IRIT_DIR = usrlocalirit include $(IRIT_DIR)makeflag.os2 OBJS = program.o program.exe: $(OBJS)Finally, here is a proper makefile for Windows NT:
IRIT_DIR = usrlocalirit include $(IRIT_DIR)makeflag.wnt OBJS = program.obj program.exe: $(OBJS) $(IRITCONLINK) -out:program.exe $(OBJS) $(LIBS) $(W32CONLIBS)