Initial commit with correct .gitignore
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
# DotsToSirface (Qt 5.11)
|
||||
|
||||
Демонстрационная программа на Qt 5.11 C++, которая:
|
||||
- принимает массив 3D-точек `QVector<Point3f>`;
|
||||
- строит массив треугольников `QVector<Triangle>`;
|
||||
- визуализирует точки и полученную треугольную поверхность.
|
||||
|
||||
## Вход/выход API
|
||||
|
||||
`src/geometry/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 и т.п.).
|
||||
|
||||
## Сборка
|
||||
|
||||
Пример для Qt 5.11:
|
||||
|
||||
```bash
|
||||
qmake DotsToSirface.pro
|
||||
make
|
||||
```
|
||||
|
||||
Для Windows/MSVC используйте соответствующий `nmake`/`jom`.
|
||||
|
||||
## Демо
|
||||
|
||||
При запуске приложение:
|
||||
- генерирует тестовое облако точек (приближенная сфера с небольшим шумом);
|
||||
- строит триангуляцию;
|
||||
- показывает статистику: количество точек, количество треугольников и время построения;
|
||||
- отображает сцену в `QOpenGLWidget` (ЛКМ - вращение, колесо - зум).
|
||||
Reference in New Issue
Block a user