簡體   English   中英

CGAL :: Delaunay_triangulation_3期間的無限循環

[英]Infinite loop during CGAL::Delaunay_triangulation_3

我正在使用CGAL庫對3D點雲進行三角剖分。 有時應用程序可以正常運行,但大多數情況下都會卡住。 在三角剖分中插入新的3D點時,它會進入無限循環。 我僅在Windows上遇到此問題,在Linux上始終可以正常工作。 我在Windows 8.1 x64 上將 Visual Studio 2012/2015與內核Exact_predicates_inexact_constructions_kernel一起使用CGAL 4.6 x64,在Ubuntu 14.04 x64上使用GCC。

關於如何在Windows版本上解決此問題的任何建議?

更新:單擊此鏈接可找到重現該問題的最小代碼和一個示例數據集: https : //drive.google.com/file/d/0B8bb0qT4PvT8V2hqUEt0RUstLTg問題似乎出在搜索最近點的優化過程中並插入一個新點(編譯之前確定的兩段代碼是等效的,但是第二段代碼以兩種方式進行了優化:僅使用一個locate()而不是兩個,並且不為每個點分配/使用std :: vector ) 。

我認為該錯誤位於您的struct adjacent_vertex_back_inserter_t operator=應該如下:

    inline void operator=(const vertex_handle_t& w) {
      assert(! delaunay.is_infinite(v))
        if ( !delaunay.is_infinite(w) && (delaunay.geom_traits().compare_distance_3_object()(p, w->point(), v->point()) == CGAL::SMALLER)){
          v = w;
      }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM