2010-10-28 70 views
2

我有一組段(每個定義了兩個點; 2D),並且想知道每個段x,還有多少個其他段y1,...,yn正在相交x。 CGAL中你如何有效地做到這一點?CGAL新手問題:哪些線段相交?

我對CGAL庫和Computer Geometry根本沒有任何經驗。我只需要一個算法來完成上面提到的東西。因此,我認爲,而不是實現一個定製的功能,使用這個庫會更好/更高效。

CGAL示例sweep_line.cpp向我展示瞭如何獲取一組o段的所有交點。因爲我對積分不感興趣,所以我必須檢查點和線段以獲得每個線段的交點數。但我不知道如何在CGAL中做到這一點。而且我還假設有一個更有效的方法來做到這一點;意思是:避免計算點並用新的檢查遍歷所有的段,如果這個點與任何找到的點相交。

任何提示? 感謝您的輸入!

薩沙

PS:一個更快的新手問題:爲什麼以下打印出帶有負號的結果?

Segment_2 segments[] = {Segment_2 (Point_2 (1, 5), Point_2 (8, 5)), 
           Segment_2 (Point_2 (1, 1), Point_2 (8, 8)), 
           Segment_2 (Point_2 (3, 1), Point_2 (3, 8)), 
           Segment_2 (Point_2 (8, 5), Point_2 (8, 8))}; 

     std::vector<Point_2>  pts; 

     CGAL::compute_intersection_points (segments, segments + 4, 
             std::back_inserter (pts)); 

找到3交點: -21/-7 -21/-7 -3/-1 -5/-1 -35/-7 -35/-7

PS2 :我認識到我的頭銜並不是描述同樣的問題。我不需要知道哪些片段正確x,但只需要片段的數量,就像正文中所描述的那樣。

回答