Skip to content

VaitkusM/libcdgbs

Repository files navigation

libcdgbs

libcdgbs is a cross-platform C++ library implementing Curved Domain Generalized B-Spline (CD-GBS) patches. It is built using CMake and supports external libraries including:

✨ Features

  • Usable via libgeom-based API & file import.
  • Export into OpenMesh format.

🧰 Requirements

  • C++17 or newer
  • CMake 3.15+
  • GCC / Clang / MSVC
  • Git (for cloning submodules)

🧱 Build Instructions

1. Clone the repository with submodules

git clone --recurse-submodules https://github.com/YOUR_USERNAME/libcdgbs.git
cd libcdgbs

If you forgot --recurse-submodules, run:

git submodule update --init --recursive

2. Build with CMake

On Linux/macOS:

mkdir build
cd build
cmake ..
cmake --build .

On Windows (MinGW):

mkdir build
cd build
cmake .. -G "MinGW Makefiles"
cmake --build .

3. Run the test

./libcdgbs_test

🧩 Project Structure

libcdgbs/
├── include/           # Public headers
├── src/               # Source files
├── tests/             # Test executables
├── external/          # Submodules: Triangle, Eigen, OpenMesh, libgeom
├── examples/          # Test example files
├── docs/              # Documentation
├── CMakeLists.txt     # Main build config
└── README.md

📝 To-Do

  • Patch types:
    • Generalized Bézier (GB)
    • Generalized B-spline (GBS)
    • Displacement GBS
    • Corner GBS
    • Hybrid GBS
  • Multi-loop
    • Bézier
    • Clamped B-spline
    • Periodic B-spline
  • Support filetypes:
    • MGBS
    • NGBS
    • CGB
    • GBS
    • MLP
    • GBP
  • Interior control point
  • Ribbon control points
  • MAT-based interior control
  • Control vectors
  • Domain types:
    • Curved
    • Polygonal
    • Regular
  • mu types
    • Corner
    • Degree elevated
    • Middle-1

📜 License

MIT License. See LICENSE for full details.

📚 References

@article{vaitkus2021multisided,
  author = {M{\'a}rton Vaitkus and Tam{\'a}s V{\'a}rady and P{\'e}ter Salvi and {\'A}goston Sipos},
  title = {Multi-sided B-spline surfaces over curved, multi-connected domains},
  journal = {Computer Aided Geometric Design},
  volume = {89},
  pages = {102019},
  year = {2021},
  publisher = {Elsevier},
  doi = {10.1016/j.cagd.2021.102019},
  url = {https://doi.org/10.1016/j.cagd.2021.102019}
}

@misc{libcdgbs,
  title = {libcdgbs: Cross-platform C++ library for Curved Domain Generalized B-Spline (CD-GBS) patches},
  howpublished = {\\url{https://github.com/VaitkusM/libcdgbs}},
  author={M{\'a}rton Vaitkus},
  year = {2025}
}

About

Library for evaluating Curve Domain Generalized B-spline patches

Topics

Resources

Stars

Watchers

Forks