Vector Math | |
common.h (Common Definitions) | |
►libbu (Utility Functions) | The two letters "BU" stand for "BRL-CAD" and "Utility". This library provides several layers of low-level utility routines, providing features that make cross-platform coding easier |
Definitions | These are definitions specific to libbu, used throughout the library |
Applications | Routines for application setup and supplying information to user programs |
Subprocess Management | Routines for launching and managing applications as subprocesses |
►Data Containers | Containers for holding various kinds of information |
Attribute/Value Sets | Routines to manage attribute/value sets |
Bit Vectors | Routines for managing efficient high-performance bit vectors of arbitrary length |
Color | Support for storing and manipulating color data |
Hash Tables | An implementation of hash tables. TODO - need much better discussion here. Key points: |
Linked Lists | Support routines for doubly-linked lists |
Structure Parsing | Definitions and data structures needed for routines that assign values to elements of arbitrary data structures, the layout of which is described by tables of "bu_structparse" structures |
Pointer Tables | Support for generalized "pointer tables", kept compactly in a dynamic array |
Red-Black Trees | The data structures and constants for red-black trees |
Variable-length Byte Buffers | The variable length buffer package |
Variable-length Strings | Given a series of input strings and formatting parameters, construct an output version of an input string with contents arranged into multiple columns |
Dynamic Libraries | Wrap platform-specific functionality for managing dynamic library run-time loading, symbol access and unloading |
►Memory Management | Wrappers for memory allocation and release, and mapping |
Magic Numbers | Global registry of recognized magic numbers |
Allocation & Deallocation | Parallel-protected debugging-enhanced wrapper around system malloc() |
Memory-mapped Files | Routines for sharing large read-only data files |
►Input/Output | Support for file and string handling, as well as debugging, path manipulation, logging and vector fonts |
Basic Command-line Option Parsing | Special portable re-entrant version of getopt |
►Generalized Command-line Option Parsing | Generalized option handling |
Pre-Defined Option Parsers | |
Sub-Command Processing | Routine(s) for processing subcommands |
Path Processing | Routines for manipulating path strings |
File Processing | Routines for handling, inspecting, and comparing files and directories |
Logging | BRL-CAD support library, error logging routines |
Tabular Printing | Routines for generally (i.e., non-mathematically) handling numbers, strings, and other data for tabular printing |
Observer | Libbu observer |
Vector Fonts | Provide a machine-independent interface to files containing Berkeley VFONT format vector fonts, stored with VAX byte ordering and word alignment |
Debugging | Debugging definitions |
►Data Management | Routines for command processing, network byte order conversion, sorting algorithms, time, endian support, units, etc |
►Data Conversion | Routines to translate data formats |
Network Data Sizes | |
Conversion Bit Masks | |
Conversion Defines | |
Base64 Encoding and Decoding | |
►Network Byte-order Conversion | |
Network Conversion - Doubles | Convert doubles to host/network format |
Network Conversion - Floats | Convert floats to host/network format |
Network Conversion - Signed Short | Network to Host Signed Short |
Mime Types | Functions generated by the mime.cmake script - see the generated files mime.c and mime_types.h for the resulting C code and mime type declarations |
Histogram Handling | General purpose histogram handling routines |
Sorting Algorithms | Platform-independent re-entrant version of qsort |
Endian Support | Run-time byte order detection |
Time Support | Cross platform wrapper for microsecond accuracy timing functionality |
Strings | Compatibility routines to various string processing functions including strlcat and strlcpy |
Units | Module of libbu to handle units conversion between strings and mm |
►Data Generation | |
Sequential Name Generation | |
Universally Unique IDentifiers (UUIDs) | Routines to generate and work with universally unique identifiers |
►Parallel Processing | Cross platform API for parallel processing, handling issues like threads and semaphores |
Multithreading | |
Single Instruction Multiple Data | Single Instruction Multiple Data support |
Environment Management | Cross platform API for interacting with the operating system environment |
►System Header Management | Convenience headers that manage the correct inclusion of various types of system functionality |
System I/O Header Wrangler | BRL-CAD system compatibility wrapper header that provides declarations for native and standard system INPUT/OUTPUT routines |
System Network Header Wrangler | BRL-CAD system compatibility wrapper header that provides declarations for native and standard system NETWORKING routines |
System Resource Limit Header Wrangler | |
System Socket Header Wrangler | BRL-CAD system compatibility wrapper header that provides declarations for native and standard system select() routines |
Version | Version reporting for LIBBU |
EXPERIMENTAL | In-progress API, not ready for general use |
►libbn (Numerical Functions) | The library provides a broad assortment of numerical algorithms and computational routines, including random number generation, vector math, matrix math, quaternion math, complex math, synthetic division, root finding, etc |
Definitions | |
Animation | Routines useful for moving geometry |
Complex Numbers | Complex numbers |
Fractal Noise | These noise functions provide mostly random noise at the integer lattice points |
Matrix/Vector Math | Matrix and vector functionality |
Quaternion Math | Quaternion math routines |
►(Pseudo) Random Numbers | Routines for generating series of pseudo-random or quasi-random numbers |
Minimal Standard Random Numbers | Minimal Standard RANdom number generator |
Mersenne Twister | Mersenne Twister random number generation as defined by MT19937 |
Random Number Tables | A supply of fast pseudo-random numbers from table in bn/rand.c. The values are in the open interval (i.e. exclusive) of 0.0 to 1.0 range with a period of 4096 |
Sobol quasi-random low-discrepancy sequences of numbers | Generation of the Sobol quasi-random low-discrepancy sequence of numbers |
Accelerated Vector Math | |
Polynomials | Polynomial data type |
Spherical Maps | Sphere data structure and function declarations. Provides spherical data structures for texture mapping |
String Data Encoding/Decoding | LIBBN encode/decode string routines |
Tabulated Data | Routines for processing tables (curves) of data with one independent parameter which is common to many sets of dependent data values |
Tolerances | Support for uniform tolerances |
Wavelets | This is a standard wavelet library that takes a given data buffer of some data type and then performs a wavelet transform on that data |
Version | Report version information about LIBBN |
►libbg (Geometric Algorithms) | BRL-CAD geometry library. This library is intended for generic geometry algorithms, such as point-in-polygon, does a line intersect a sphere, ear clipping triangulation of a polygon, etc |
Definitions | Common definitions for the headers used in bg.h (i.e. the headers found in include/bg) |
Point Generation | |
Vertex binary search tree | |
View related geometric clipping | |
Line Segments | |
Plane/line/point calculations | |
►Triangles | |
Closest Point on Triangle | |
Triangle/Ray Intersection Tests | |
Triangle/Triangle Intersection Tests | |
Triangle Mesh Algorithms | |
Oriented Bounding Rectangles/Rectangular Cuboids | |
Polygons | |
►Axis Aligned Bounding Boxes | |
AABB/Ray Intersection Tests | |
Separating Axis Theorem Tests | |
Convex Hulls | |
►Surface Reconstruction | |
Screened Poisson Surface Reconstruction | |
Level-of-Detail Geometry Generation | |
►libbv (Graphical View Concepts) | |
Definitions | Types and definitions related to display lists, angle distance cursor, and other generic view constructs |
Angle-Distance Cursor | Data types and manipulation routines for the Angle-Distance cursor |
Faceplate | Data types for faceplate objects |
Plotting | The basic UNIX-plot routines |
Vector Fonts | Terminal Independent Graphics Display Package |
Vector Lists | Definitions for handling lists of vectors (really vertices, or points) and polygons in 3-space. Intended for common handling of wireframe display information, in the full resolution that is calculated in |
Utilities | Utility routines for manipulating libbv data structures |
Tcl | Definitions specific to the non-view-obj drawing logic in libtclcad |
►libnmg (Non-Manifold Geometry) | "Non-Manifold Geometry" (NMG) models are BRL-CAD's primary mechanism for storing and manipulating planar mesh geometry. The design is based on work from the 1980s by Kevin J. Weiler |
Definitions | Common definitions for the headers used in nmg.h (i.e. the headers found in include/nmg) |
Global variables | |
Topology | Basic NMG structural hierarchy definitions, including the necessary geometric definitions |
Vertex | Routines for working with NMG Vertices and Vertex Uses |
Edge | Routines for working with NMG Edges and Edge Uses |
Loop | Routines for working with NMG Loops and Loop Uses |
Face | Routines for working with NMG Faces and Face Uses |
Shell | Routines for working with NMG Shells |
Region | Routines for working with NMG Regions |
Model | Routines for working with NMG Models |
Checking | NMG validation routines |
Debugging | NMG debugging definitions |
Input/Output | Serialize and de-serialize NMG models |
Plotting | NMG plotting routines |
Printing | Write out information about NMG data as text |
Non-Uniform Rational BSplines | NMG NURBS support |
Ray/NMG Intersection | Support for intersecting geometric rays with NMG models |
NMG/NMG Intersection | Intersection calculations between elements of NMG models |
Element Indexing | Routines for handling the indexing of NMG structs |
Visit operations | ??? |
Radial operations | ??? |
►libbrep (NURBS B-Reps) | Define surface and curve structures for Non-Uniform Rational B-Spline (NURBS) curves and surfaces. Uses openNURBS library |
Definitions | These are definitions specific to libbrep, used throughout the library |
BRep Utility Routines | Constrained Delaunay Triangulation of brep solids |
OpenNURBS Ray Routines | Implement the concept of a geometry ray in terms of OpenNURBS data types |
Bounding Rectangle Hierarchy Node | Bounding Rectangle Hierarchy Node |
Curve Tree - Hierarchy of Bounding Rectangle Nodes | Curve Tree |
Bounding Box Hierarchy Node | Bounding Box Hierarchy Node |
Surface Tree - Hierarchy of Bounding Box Nodes | Curve Tree |
Find Parametric Surface Coordinates of 3D Point | Point pullback |
Curve and Surface Intersection Routines | Intersection routines for Non-Uniform Rational B-Spline (NURBS) curves and surfaces |
Boolean Operations On B-Reps | Boolean Operations for Non-Uniform Rational B-Spline (NURBS) Boundary Representations |
CSG Hierarchy Reconstruction from B-Reps | Reconstruct CSG Implicit Boolean Hierarchies from Non-Uniform Rational B-Spline (NURBS) Boundary Representations |
libfft (Fast Fourier Transform) | The Fast-Fourier Transform library is a signal processing library for performing FFTs or inverse FFTs efficiently |
►libicv (Image Conversion and Processing) | |
Definitions | Definitions used in the LIBICV image processing library |
Colorspace | Functions to change an image from one color space to another |
Crop Image | Functions for cropping images |
Image Filters | Routines for image filtering |
Image Read/Write | Functions provided by the LIBICV image processing library for reading and writing of images |
Image Operations | |
Image Statistics | |
►libpc (Parametrics and Constraints) | |
Constraint Solution | |
EBNF Parser | |
Database Input/Output/Updation | |
libwdb (Database Writing) | Interface structures and routines for libwdb |
►librt (Geometry I/O, Raytracing) | |
Definitions | |
Debugging | Librt debugging information |
►Geometry Primitives | Functions and details of the internal forms used by the LIBRT geometry routines for the different solids |
Annotation | |
Arbitrary Polyhedron (4 to 8 defining points) | |
Arbitrary Polyhedron (Convex) | |
Arbitrary Faceted Solid | |
Bag Of Triangles | |
Boundary Representation (NURBS) | |
CLINE | |
Displacement Map | |
Extruded Bitmap | |
Elliptical Hyperboloid | |
Ellipsoid | |
Elliptical Paraboloid | |
Elliptical Torus | |
Extruded Sketch | |
Grip | |
Half Plane | |
HF | |
►Heart | |
Rt_script | |
Elliptical Hyperboloid of One Sheet | |
Joint | |
Metaball | |
Non-Uniform Rational B-Spline | |
Particle | |
POLY | |
Pipe | |
Point Cloud | |
Revolved Sketch | |
Right Hyberbolic Cylinder | |
Right Parabolic Cylinder | |
Sketch | |
Submodel | |
Super Ellipsoid | |
Truncated General Cone | |
Torus | |
Volume | |
►Geometry Database | Definitions and functions supporting the reading, writing and working with BRL-CAD geometry database format |
Full Paths | Structures and routines for collecting and manipulating paths through the database tree |
Database Version 4 | Routines supporting reading and writing version 4 of the BRL-CAD geometry database |
Database Version 5 | Routines supporting reading and writing version 5 of the BRL-CAD geometry database |
Database Searching | Routines that find and report on the objects within BRL-CAD geometry databases |
►Raytracing | Definitions and functions supporting raytracing BRL-CAD geometry |
The Solids Table | The LIBRT Solids Table |
The Function Table | Object-oriented interface to BRL-CAD geometry |
Generate Rays via Pattern Templates | Functionality for generating patterns of rays |
►Shoot Rays | Ray Tracing program shot coordinator. This is the heart of LIBRT's ray-tracing capability |
The Application Structure | This structure is the only parameter to rt_shootray() and holds information about how the ray-casting should be performed |
The Raytracing Instance | The "raytrace instance" structure contains definitions for librt which are specific to the particular model being processed |
The Resource Structure | Per-CPU statistics and resources |
The Ray Structure | All necessary information about a ray |
The Hit Structure | Information about where a ray hits the surface |
The Segment Structure | Intersection segment |
The Partition Structure | Partitions of a ray |
Booleweave | Boolean weaving of raytracing segments |
Timer | |
Object API | Primitive manipulation functions from former functab callback table |
Solids Structure | |
librt Specific Tolerances | Librt specific tolerance information |
liboptical (Optical) | Debugging logic for the BRL-CAD Optical Library, LIBOPTICAL |
libgcv (Geometry Conversion) | |
libanalyze (Geometry Analysis) | Debugging definitions |
►libged (Geometry Editing and Commands) | |
Definitions | |
Plugins | |
Database | |
Database Objects | |
►View Manipulation | |
Angle-Distance Cursor | |
View Matrix/Quaternion | |
Object Selection | |
State (Objects displayed, refresh, etc.) | |
Framebuffer | |
Geometry Analysis | |
Debugging | |
Raytracing | |
Miscellaneous | |
libdm (Display Management) | |
libtclcad (BRL-CAD Tcl Functionality) | |
libpkg (Network Communications) | |
libtermio (Terminal I/O) | Externs for the BRL-CAD library LIBTERMIO |