Files
DotsToSirface/README.md
T

78 lines
3.8 KiB
Markdown

# DotsToSirface (Qt 5.11)
Демонстрационная программа на Qt 5.11 C++, которая:
- принимает массив 3D-точек `QVector<Point3f>`;
- выполняет stage-based pipeline (preprocess -> transform -> registration -> reconstruction);
- визуализирует точки и полученную треугольную поверхность.
## Вход/выход API
`src/algorithms/reconstruction/surface_reconstruction.h`:
- `struct Point3f { float x, y, z; };`
- `struct Triangle { int i0, i1, i2; };`
- `QVector<Triangle> buildSurfaceTriangles(const QVector<Point3f>& points);`
`Triangle` хранит индексы вершин в исходном массиве `points`.
## Как это работает
Реализация использует инкрементальный `Convex Hull 3D`:
- удаление дубликатов точек (epsilon-сравнение);
- поиск стартового тетраэдра;
- поочередное добавление точек с пересчетом видимых граней и горизонта;
- поддержание ориентированных наружу треугольников.
## Ограничения
Текущая реализация строит **выпуклую оболочку** облака точек.
Для невыпуклых объектов и детальной реконструкции произвольной поверхности нужны более сложные алгоритмы (например, alpha-shapes, Poisson reconstruction и т.п.).
## Архитектурный каркас под robotics pipeline
- `core`: контракты (`PointCloudFrame`, `PipelineContext`, `PipelineStats`, stage-интерфейсы, plugin registry).
- `adapters`: мосты к источникам и внешним транспортам (`FilePointCloudSource`, `Ros2PointCloudSource`, `PointCloud2`/`tf2` adapters).
- `strategies`: конкретные стадии пайплайна (preprocess, transform, registration, reconstruction).
- `factories`: сборка `PipelineExecutor` из plugin-id и профиля.
### Профили выполнения
- `desktop_debug`: дефолтный профиль для GUI/отладки.
- `rpi4_runtime`: профиль для Raspberry Pi 4 (жестче downsampling, лимит точек, reconstruction реже, async-friendly настройки).
Выбор профиля:
- `factories::pipeline::createPipelineExecutorForProfile("desktop_debug")`
- `factories::pipeline::createPipelineExecutorForProfile("rpi4_runtime")`
## Сборка
Пример для Qt 5.11:
```bash
qmake DotsToSirface.pro
make
```
Для Windows/MSVC используйте соответствующий `nmake`/`jom`.
## Smoke tests (отдельный runner)
Для быстрой проверки пайплайна без GUI добавлен отдельный консольный таргет:
`DotsToSirfaceTests.pro`.
```bash
qmake DotsToSirfaceTests.pro
make
./release/DotsToSirfaceTests.exe
```
При успешном запуске runner печатает `Smoke tests passed.` и завершаетcя с кодом `0`.
## Демо
При запуске приложение:
- генерирует тестовое облако точек (приближенная сфера с небольшим шумом);
- строит триангуляцию;
- показывает статистику: количество точек, количество треугольников и время построения;
- отображает сцену в `QOpenGLWidget` (ЛКМ - вращение, колесо - зум).