我正在计算几千点的2D delaunay三角剖分.每个点都有超过x和y坐标的更多数据.因此,我想知道是否有可能检索每个点的索引,以便我可以在另一个向量中访问我自己的点结构.
目前,当我从Face_handle访问顶点时,它返回一个点(即x,y坐标)如何通过其ID(索引)而不是其x,y坐标返回每个顶点?谢谢.
#include <vector>
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Delaunay_triangulation_2.h>
typedef CGAL::Exact_predicates_inexact_constructions_kernel Kernel;
typedef CGAL::Delaunay_triangulation_2<Kernel> Delaunay;
typedef Kernel::Point_2 Point;
void example() {
std::vector<Point> points;
points.push_back(Point(1,1)); //index 0
points.push_back(Point(1,2)); //index 1
points.push_back(Point(1,3)); //index 2
points.push_back(Point(2,1)); //index 3
points.push_back(Point(2,2)); //index 4
points.push_back(Point(2,3)); //index 5
Delaunay triangulation;
triangulation.insert(points.begin(),points.end());
for(Delaunay::Finite_faces_iterator fit = triangulation.finite_faces_begin();
fit != triangulation.finite_faces_end(); ++fit) {
Delaunay::Face_handle face = fit;
std::cout << "Triangle:\t" << triangulation.triangle(face) << std::endl;
std::cout << "Vertex 0:\t" << triangulation.triangle(face)[0] << std::endl;
}
}
Run Code Online (Sandbox Code Playgroud)
输出(x,y坐标):
Triangle: 1 3 1 2 …Run Code Online (Sandbox Code Playgroud) 我希望将常量从度数转换为弧度(在编译时),所以我选择使用constexpr.但是,我的程序不会编译,因此我尝试通过一些测试来调试问题.这些测试在编译期间继续产生错误.
当涉及许多有效数字时,该问题似乎与浮点算法相关.
我尝试了一个快速的谷歌搜索,我在Stroustrup的书中阅读了10.4节(常量表达式).任何帮助将不胜感激.我一定错过了一些明显的东西.
测试代码:
void testConstantExpressions() {
constexpr double x0 = 1.0;
constexpr double y0 = 2.0;
constexpr double z0 = 4.0;
constexpr double w0 = x0 / (y0 / z0);
std::cout << w0 << std::endl;
constexpr double x1 = 1.0;
constexpr double y1 = 2.2;
constexpr double z1 = 4.0;
constexpr double w1 = x1 / (y1 / z1);
std::cout << w1 << std::endl;
constexpr double x2 = 1.0;
constexpr double y2 = 4.0;
constexpr double z2 …Run Code Online (Sandbox Code Playgroud)