У меня есть многогранник, гранями которого являются треугольники. Я знаю, что в CGAL класс Triangle_3 предлагает метод squared_area, через который мы можем вычислить площадь треугольника. Есть ли способ применить это к многогранным граням? Или какие-либо идеи относительно того, как рассчитать площадь каждой грани?CGAL: Как эффективно рассчитать площадь граней многогранника?
1
A
ответ
7
Вот пример:
#include <CGAL/Simple_cartesian.h>
#include <CGAL/Polyhedron_3.h>
#include <numeric>
#include <functional>
#include <boost/iterator/transform_iterator.hpp>
typedef CGAL::Simple_cartesian<double> K;
typedef CGAL::Polyhedron_3<K> Polyhedron;
struct Compute_area:
public std::unary_function<const Polyhedron::Facet, double>
{
double operator()(const Polyhedron::Facet& f) const{
return K::Compute_area_3()(
f.halfedge()->vertex()->point(),
f.halfedge()->next()->vertex()->point(),
f.halfedge()->opposite()->vertex()->point());
}
};
int main()
{
Polyhedron p;
p.make_tetrahedron(
K::Point_3(0,0,0),
K::Point_3(0,1,0),
K::Point_3(1,1,0),
K::Point_3(1,1,3)
);
CGAL_assertion(p.is_pure_triangle());
Compute_area ca;
std::cout <<
std::accumulate(
boost::make_transform_iterator(p.facets_begin(), ca),
boost::make_transform_iterator(p.facets_end(), ca),
0.)
<< std::endl;
}
+0
Спасибо !!! Это именно то, что я хотел ... –
Смежные вопросы
- 1. CGAL - найти точки внутри многогранника
- 2. Вершины конечных точек CGAL трехмерного многогранника
- 3. Как рассчитать площадь java.awt.geom.Area?
- 4. как рассчитать площадь ловушки?
- 5. как рассчитать площадь окрашенной области?
- 6. Как рассчитать площадь взрыва бомбы?
- 7. Как рассчитать площадь органической формы?
- 8. Как рассчитать площадь нескольких полигонов?
- 9. Рассчитать площадь четырехугольника
- 10. Рассчитать площадь отображаемой карты
- 11. Рассчитать объем 3D-многогранника с Python?
- 12. Рассчитать площадь ячейки Вороного
- 13. Рассчитать площадь треугольника рекурсивно
- 14. Общие полигоны CGAL: жесткие движения и площадь
- 15. Рассчитать площадь баллов
- 16. Вычислить площадь пересечения двух полигонов cgal
- 17. Рассчитать площадь круга, используя метод
- 18. Рассчитать площадь поверхности 3D-сетки
- 19. Как рассчитать площадь эллипса, нарисованную ggplot2?
- 20. Как рассчитать площадь под кривой в Spotfire?
- 21. Как рассчитать площадь пути SVG C#
- 22. как рассчитать площадь многоугольника в картах iOS
- 23. Как рассчитать площадь самопересекающихся многоугольников на Земле
- 24. как рассчитать площадь прямоугольных промежутков по окружности
- 25. Как рассчитать площадь нескольких перекрывающихся прямоугольных многоугольников?
- 26. Центроид выпуклого многогранника
- 27. Создание и пересечение гексаэдров с CGAL
- 28. Рассчитать площадь объекта внутри ROI в OpenCV
- 29. Площадь поверхности выпуклого корпуса в 3D
- 30. Как рассчитать пересечение отрезка и круга с CGAL
Не знаком с CGAL, но одно из преимуществ треугольников является то, что можно быть уверенными, что они плоские, и, следовательно, они имеют довольно очевидную и хорошо определенную область. Как только у вас будет более 3 углов, плоскость может быть проблемой. Если вы уверены, что они плоские, вы можете использовать что-то вроде [link] (http://www.mathopenref.com/coordpolygonarea.html), чтобы найти область – Arunas
Я просто перечитал это - вы имеете в виду «многогранные грани» или «полигональные грани»? – Arunas
Полиэдральные грани. В любом случае я получил правильный ответ. Спасибо, что пытался помочь мне .. :) –