Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 如何从一组曲线计算精确的边界和内循环_Algorithm_Math_Computational Geometry - Fatal编程技术网

Algorithm 如何从一组曲线计算精确的边界和内循环

Algorithm 如何从一组曲线计算精确的边界和内循环,algorithm,math,computational-geometry,Algorithm,Math,Computational Geometry,给定一些曲线(包括线段和圆弧),如何找到精确的边界和所有内部循环 这幅图简单地展示了它的含义:如何找到内部循环(以绿色绘制)和边界(以红色绘制) 像CGAL这样的库不是一个好的选择,我需要一些轻量且易于使用的库 任何想法,代码片段,进一步阅读,第三方代码将不胜感激 顺便问一下,ACIS中是否有一些API可以使用?因为我在这个图书馆有一些经验 我没有一个明确的答案,但我正在考虑像图形一样解决它 首先在每个交点处拆分直线/圆弧,使每条直线/圆弧仅通过其端点(图形的顶点)连接 移除两端未连接的任何线/

给定一些曲线(包括线段和圆弧),如何找到精确的边界和所有内部循环

这幅图简单地展示了它的含义:如何找到内部循环(以绿色绘制)和边界(以红色绘制)

像CGAL这样的库不是一个好的选择,我需要一些轻量且易于使用的库

任何想法,代码片段,进一步阅读,第三方代码将不胜感激

顺便问一下,ACIS中是否有一些API可以使用?因为我在这个图书馆有一些经验


我没有一个明确的答案,但我正在考虑像图形一样解决它

  • 首先在每个交点处拆分直线/圆弧,使每条直线/圆弧仅通过其端点(图形的顶点)连接

  • 移除两端未连接的任何线/弧。它们不构成内部循环/边界

  • 要创建图形,请将每条直线/圆弧的连接点用作顶点,并将每条直线/圆弧用作加权边。边权重应为基本体长度

  • 边界是不访问同一顶点两次的最长路径(除了“开始/结束”关闭它)

    至于内部循环,这可能有点棘手。我会考虑跟随你的边,在你穿过的每个顶点总是向右旋转


    希望这有助于从您描述的图中创建有向图,以便每个egde在两个方向上设置两条边。看看这个,谢谢。这个想法有点像我的第一个版本的实现,我担心这会起作用,但并不有效——1200条线段和400条圆弧将运行很长时间。切片曲线可能需要很长时间,我发现在google代码上实现balaban算法非常有用。但总运行时间仍然很长。关于优化还有其他想法吗?