Algorithm 联合;包含bezier曲线的相邻多段线;
具体示例:以欧洲国家地图和指向“代表欧盟国家的路径”的指针列表为例,输出单个“代表欧盟的路径” e、 g.如果我有三个输入路径:红色、绿色和蓝色Algorithm 联合;包含bezier曲线的相邻多段线;,algorithm,core-graphics,computational-geometry,Algorithm,Core Graphics,Computational Geometry,具体示例:以欧洲国家地图和指向“代表欧盟国家的路径”的指针列表为例,输出单个“代表欧盟的路径” e、 g.如果我有三个输入路径:红色、绿色和蓝色 红色仅由直线段组成 绿色由线段和贝塞尔曲线组成 蓝色仅由贝塞尔制成 …然后我需要创建一条带有beziers的输出多段线,这是三个对象的并集 此外,我需要处理输入数据中的一些误差-c.f。下面的图像在输入形状之间有一些非常小的“间隙”。在图像中,下图(红色)是所需的输出 这很容易就会出现可怕的错误,我需要数周的时间才能让它正常工作。我正试图找到一种相对
最后…目标平台是iPhone-因此我可以访问所有苹果的Quartz/QuartzCore/CoreAnimation/等,这些都提供了一些实用方法-但请注意:即使是苹果的官方基础实现,如“路径A是否与路径B相交?”在很多情况下都严重损坏/不正确-因此它不是非常可靠:(.关于如何实现这一点的想法(也许)-但我也不知道如何实现这一点: 也许……相反,计算“内部线”,并删除它们,留给我一个几乎正确的东西,即“描述联盟的路径” 我的示例蓝色对象可能有很大的错误,交叉点可能会给出一条严重错误的曲线,但可能已经足够好了 为此,我在想,也许:
?首先,你需要知道如何合并多边形形状。我想你知道,如果不知道,你必须先学习 现在,您可以对曲线进行镶嵌,找到多边形并集,并将原始曲线的各个部分重新拟合到并集中。您必须稍微调整交点,从直线交点到曲线交点,但调整量很小,您可以使用简单的迭代近似算法找到它们 若要处理错误,请在并集之前将多边形偏移一个初始值,并在拟合曲线片段之前将结果偏移一个负值
很抱歉,无法在此手机上键入更多内容:-(凸面外壳在这个问题的上下文中没有意义。偏移多边形?这是如何工作的?您的意思可能是“沿直线从原点到线段中点偏移每个线段”?缩放它们可以作为一个第一近似值-如果你有纯凸多边形-但在凹多边形上失败。设置基本上是一个带圆盘的Minkowski和,这是一个相当标准的操作,查找“多边形偏移”。它通常是这样实现的:在垂直于线段本身的方向上移动每个线段,移动相同的距离,然后重新计算交点。有些库具有此操作。缩放确实不起作用。“多边形偏移”-大多数点击是针对OpenGL的,正如我所期望的那样定义它(单个平移应用于所有点),但我找到了一些“向内/向外多边形偏移”的匹配项,它完成了轨迹,谢谢