Note: This documentation was generated with the assistance of Cline AI to establish initial project direction.
SHAP is a prototypical C++ library for modeling and manipulating parametric surfaces in 3D space, with a focus on 3D printing applications. The project leverages concepts from Riemannian geometry to handle surface representations and their interactions.
The library represents surfaces using parametric equations of the form S(u,v) → ℝ³, where:
- (u,v) are parameters typically defined on a bounded domain [a,b] × [c,d]
- Each point on the surface is defined by a position vector in 3D space
- The surface inherits a natural Riemannian metric from its embedding in ℝ³
Surfaces are connected along shared parametric edges, where:
- Edges are defined as curves in the parameter space of each surface
- Continuity conditions ensure smooth transitions between adjacent surfaces
- The shared edge parameterization allows for consistent surface joining
The implementation will consider essential geometric properties:
- First fundamental form (metric tensor)
- Surface normal vectors
- Principal curvatures
- Geodesic curvature of boundary curves
- Parametric surface representation and evaluation
- Edge-based surface connection handling
- Basic differential geometry computations
- Simple export format for 3D printing
- Written in modern C++ (C++17 or later)
- Focus on mathematical correctness over performance optimization
- Minimal external dependencies
- Prototypical implementation (not production-ready)
- Limited to simple surface types initially
- Basic topology handling
- No complex surface intersection computation
- Simplified 3D printing considerations
The primary application is in prototyping geometric modeling workflows for 3D printing, where:
- Surfaces need to be properly connected
- Geometric properties affect print quality
- Surface parameterization influences material deposition
This project is in its initial planning phase. The implementation will focus on establishing core mathematical foundations before adding practical features for 3D printing applications. The design and architecture are intentionally fluid, allowing for adjustments and improvements as development progresses and new insights are gained. The outlined approach serves as a starting point rather than a rigid specification.