The Analytical Computational Geometry Library A Computational Geometry Library for Engineers and Scientists
ACGL is a groundbreaking computational-geometry software-library implementing a new branch of computational-geometry that seamlessly integrates the constructive or compositional elements of combinatorial computational-geometry with the curved shapes and analytical elements of analytical-geometry as well as the more recent geometric-modeling techniques of numerical computational-geometry. This computational geometry library gives engineers and scientists the ability to use their powerful, well understood and widely used analytical tools and methods to directly, accurately, efficiently and intuitively design and analyze complex and dynamic geometric-systems. That is, systems composed of sets of geometrically interacting shapes.
Complex and dynamic geometric-systems are routinely encountered as important components of larger systems. Unfortunately, the tools and methods of combinatorial computational-geometry, analytical geometry and numerical computational-geometry are not well suited for the analysis and design of these systems in an analytical environment. That is, in an environment where the analysis and design of a system are performed in terms of the system’s characteristic functions and their derivatives. In particular, while combinatorial computational-geometry tools are well suited for constructing complex geometric-systems, they are based on combinatorial algorithms. These algorithms are, at best, difficult to integrate into analytical methods. Additionally, these algorithms work primarily with polygon shapes and do not provide any significant capabilities to work with the wide variety of curved shapes encountered in industrial applications. Conversely, while the methods of analytical geometry and numerical computational-geometry work well in an analytical environment and support curved shapes, they lack the compositional tools needed to construct complex systems.
ACGL is a C++ class-library that starts to substantially eliminate these fundamental limitations. Using an innovative new mathematical foundation, ACGL naturally and efficiently implements core compositional-elements of combinatorial computational-geometry as analytical operations. This transforms compositional computational-geometry from a disconnected collection of algorithms into a mathematical-discipline composed of a unified set of objects and operators. These analytical composition-operations enable the construction of complex geometric-systems, composed of a wide range of curved and polygon shapes, in a form which can now be naturally and efficiently incorporated into an analytical design and analysis environment.
To construct geometric-systems, ACGL provides an extensive set of fundamental shapes, both curved and polygon, along with a set of composition operations (such as convex-hull, relaxed convex-hull and boundary-surface of closest-approach) and transformation operations (such as rotation, scaling, and offset). Larger systems are constructed using a simple and flexible nested-instantiation syntax which has been designed to be a natural and intuitive extension of C++ native syntax. The shapes and operations are designed to work at a high level of abstraction. This abstraction eliminates the need to keep track of the myriad low-level details and interactions, which would otherwise make the construction of a complex geometric-system and its use in an analytical environment tedious, alarmingly error prone, and prohibitively time consuming.
ACGL provides extensive automated parameterization capabilities allowing for selective parameterization of the shapes, compositions, and transformations used in system construction. The parameterization process is further augmented by binding each parameter to a C++ variable during the system’s construction. Selective parameterization and parameter binding make for simple and intuitive construction of dynamic geometric-systems which can, among other things, automatically calculate the derivatives with respect to their selected parameters. In turn, these derivatives can be easily retrieved using a natural and intuitive extension of the C++ array syntax.
While ACGL is a fully object-oriented C++ class-library, only a modest amount of C++ knowledge is necessary to begin working effectively with it allowing ACGL to accommodate the broad range of software-development proficiency in the scientific and engineering communities.
For a more detailed introduction to ACGL please click the Video Overview button below.