剪切库差异问题
问题描述:
我开始使用剪切库从本网站:http://sourceforge.net/projects/polyclipping/剪切库差异问题
我在Unity(C#)中工作。
一切都很好,工会,十字路口,区别...是的,区别,有一个案例,我不知道如果我做错了什么或算法无法处理的权利。
我想获得差异A-B,它应该看起来像图2中的那个),不幸的是,输出是网格A和网格B,如图1)。
我做什么:
Clipper c = new Clipper();
c.AddPath(here goes the vertices of mesh A, polyType.Subject, true);
c.AddPath(here goes the vertices of mesh B, polyType.Clip, true);
c.Execute(ClipType.ctDIfference, a list of lists for my output, PolyFillType.NonZero, PolyFillType.NonZero);
我已经试图改变PolyFillTypes但什么也没有改变。在这里,我是,要求你的建议:)
编辑: 我想得到的(如图中的“预期结果”)是一个有洞的网格。 我实际上得到的是2元素列表List,它与我给出的输入完全相同,所以当我从这些顶点创建网格时,没有一个网格带有一个孔,而是一个网格覆盖另一个网格并与Z-Fighting相交。应该有一些功能,我可以用一个洞创建Mesh,但我无法找到它。正如我在GUIDEMO中看到的这个库的C#版本的工作原理,我看到了地图(可能是澳大利亚)的中间有一个切孔。输入:顶点A(作为主题):(0,0),(0,10),(10,10),(10,0)。 (2,8),(6,8),(6,2),(2,2)。 输出完全相同: List<List<IntPoint>>
即2元素,并包含这两个列表您可以在上面看到。
答
裁剪解决方案,我得到的是:
(((10, 10),(0, 10),(0, 0),(10, 0)), ((2, 2),(2, 8),(6, 8),(6, 2)))
注2条路径的不同取向。这表明内部路径是具有非零或偶数填充规则的外部路径(多边形)的孔。
如果您显示结果**坐标**,您将从裁剪操作中获得,然后获得您期望的坐标,这将有所帮助。 –
我编辑了我的文章,以便更清楚地看到这一点。感谢您的时间:) – Power
我有这个相同的问题(团结3d c#),你有没有找到解决方案? clipperlib是实现“C”顶点的正确工具吗? – Dodgson86