我正在使用CGAL 4.7(64位,在Windows上)的排列包为研究项目制作贝塞尔曲线的二维排列。不幸的是,在插入贝塞尔曲线时,我不断遇到一些(通常(接近)退化的输入崩溃。
作为一个简单的例子,我添加了两个数据文件的内容,这些文件可以被CGAL 4.7提供的Bezier_curve示例项目读取(在.../CGAL-4.7/examples/Arrangement_on_surface_2中找到)。
如果我输入两个文件中的任何一个,该示例会为我崩溃。
如果我使用随附的 Bezier.dat 文件以及我尝试过的其他一些测试用例,该示例对我来说可以正常工作。
Bezier_crash1.dat -(非常简单的测试用例)
1
4 0 100 100 0 100 200 0 100
Bezier_crash2.dat - (在我自己的实验中遇到并记录)
6
4 2581853/262144 174874249452033/4398046511104 5673646619833933/35184372088832 2756888783932123/70368744177664 6296137/131072 15962699/131072 105/2 5687589/65536
4 105/2 5687589/65536 7466423/131072 6787657/131072 4884829/32768 1213073/16384 120 13200823/131072
4 120 13200823/131072 13772385/131072 14995659/131072 8262217/131072 13388069/131072 105/2 5687589/65536
4 105/2 5687589/65536 5500343/131072 9362287/131072 5544234768323137/35184372088832 5711427009345511/140737488355328 2581853/262144 183625004300137/2199023255552
4 696761914568827/4398046511104 3007857/16384 1156274078886441/17592186044416 301767055302015/8796093022208 4173567/65536 1173535/8192 97589/1024 428833/4096
4 97589/1024 428833/4096 8317825/65536 541797/8192 10142101/131072 1505657/16384 9752923/131072 1168223/16384
我不知道我是否应该(并且被允许)发布 CGAL 示例的代码,如果需要,请告诉我。我还有比这两个更多的崩溃测试用例,但我希望这些崩溃是我个人 CGAL 设置的问题,其余的将在我修复它时神奇地得到解决:)
我们已经修复了最有可能导致此问题的错误。在处理贝塞尔曲线的CGAL组件中,即Arr_Bezier_curve_traits_2.h。