Я тестирую библиотеку CGAL на машине с Linux. В рамках тестирования я хотел построить простую поверхностную сетку куба.
Это мой тест Catch2:
#include
#include
#include
#include
#include
#include
using Kernel = CGAL::Exact_predicates_inexact_constructions_kernel;
using Mesh = CGAL::Surface_mesh;
// Function to create an approximate parametric sphere
Mesh create_mesh(double size) {
Mesh mesh;
// Cube.
// Define the 8 vertices of the cube
auto v0 = mesh.add_vertex(Kernel::Point_3(0, 0, 0));
auto v1 = mesh.add_vertex(Kernel::Point_3(size, 0, 0));
auto v2 = mesh.add_vertex(Kernel::Point_3(size, size, 0));
auto v3 = mesh.add_vertex(Kernel::Point_3(0, size, 0));
auto v4 = mesh.add_vertex(Kernel::Point_3(0, 0, size));
auto v5 = mesh.add_vertex(Kernel::Point_3(size, 0, size));
auto v6 = mesh.add_vertex(Kernel::Point_3(size, size, size));
auto v7 = mesh.add_vertex(Kernel::Point_3(0, size, size));
// Define the 6 faces of the cube (each face is a quadrilateral made of 2 triangles)
mesh.add_face(v0, v1, v2, v3); // Bottom
mesh.add_face(v4, v5, v6, v7); // Top
mesh.add_face(v0, v4, v7, v3); // Left
mesh.add_face(v1, v5, v6, v2); // Right
mesh.add_face(v0, v4, v5, v1); // Front
mesh.add_face(v3, v7, v6, v2); // Back
return mesh;
}
TEST_CASE("OBJ Export of Cube") {
const std::string filename = "test_output.obj";
// Remove file if it exists, to start fresh
std::remove(filename.c_str());
auto mesh = create_mesh(1);
// Use CGAL to save the combined mesh to OBJ format
CGAL::IO::write_OBJ(filename, mesh);
REQUIRE(std::ifstream(filename).good());
}
Проблема
К моему удивлению, куб не завершен. В OBJ-файл куба записано только две грани. Я этого не понимаю. Что я делаю не так?
Это файл test_output.obj:
# file written from a CGAL tool in Wavefront obj format
# 8 vertices
# 16 halfedges
# 2 facets
# 8 vertices
# ------------------------------------------
v 0 0 0
v 1 0 0
v 1 1 0
v 0 1 0
v 0 0 1
v 1 0 1
v 1 1 1
v 0 1 1
# 2 facets
# ------------------------------------------
f 1 2 3 4
f 5 6 7 8
# End of Wavefront obj format #
Подробнее здесь: https://stackoverflow.com/questions/791 ... s-2-facets
Написание простой сетки поверхности с помощью CGAL выводит только 2 грани. ⇐ C++
Программы на C++. Форум разработчиков
1729803482
Anonymous
Я тестирую библиотеку CGAL на машине с Linux. В рамках тестирования я хотел построить простую поверхностную сетку куба.
Это мой тест Catch2:
#include
#include
#include
#include
#include
#include
using Kernel = CGAL::Exact_predicates_inexact_constructions_kernel;
using Mesh = CGAL::Surface_mesh;
// Function to create an approximate parametric sphere
Mesh create_mesh(double size) {
Mesh mesh;
// Cube.
// Define the 8 vertices of the cube
auto v0 = mesh.add_vertex(Kernel::Point_3(0, 0, 0));
auto v1 = mesh.add_vertex(Kernel::Point_3(size, 0, 0));
auto v2 = mesh.add_vertex(Kernel::Point_3(size, size, 0));
auto v3 = mesh.add_vertex(Kernel::Point_3(0, size, 0));
auto v4 = mesh.add_vertex(Kernel::Point_3(0, 0, size));
auto v5 = mesh.add_vertex(Kernel::Point_3(size, 0, size));
auto v6 = mesh.add_vertex(Kernel::Point_3(size, size, size));
auto v7 = mesh.add_vertex(Kernel::Point_3(0, size, size));
// Define the 6 faces of the cube (each face is a quadrilateral made of 2 triangles)
mesh.add_face(v0, v1, v2, v3); // Bottom
mesh.add_face(v4, v5, v6, v7); // Top
mesh.add_face(v0, v4, v7, v3); // Left
mesh.add_face(v1, v5, v6, v2); // Right
mesh.add_face(v0, v4, v5, v1); // Front
mesh.add_face(v3, v7, v6, v2); // Back
return mesh;
}
TEST_CASE("OBJ Export of Cube") {
const std::string filename = "test_output.obj";
// Remove file if it exists, to start fresh
std::remove(filename.c_str());
auto mesh = create_mesh(1);
// Use CGAL to save the combined mesh to OBJ format
CGAL::IO::write_OBJ(filename, mesh);
REQUIRE(std::ifstream(filename).good());
}
Проблема
К моему удивлению, куб не завершен. В OBJ-файл куба записано только две грани. Я этого не понимаю. Что я делаю не так?
Это файл test_output.obj:
# file written from a CGAL tool in Wavefront obj format
# 8 vertices
# 16 halfedges
# 2 facets
# 8 vertices
# ------------------------------------------
v 0 0 0
v 1 0 0
v 1 1 0
v 0 1 0
v 0 0 1
v 1 0 1
v 1 1 1
v 0 1 1
# 2 facets
# ------------------------------------------
f 1 2 3 4
f 5 6 7 8
# End of Wavefront obj format #
Подробнее здесь: [url]https://stackoverflow.com/questions/79122782/writing-simple-surface-mesh-with-cgal-only-outputs-2-facets[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия