首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ClipperLib剪辑矩形的多个正方形产生一个结果

ClipperLib剪辑矩形的多个正方形产生一个结果
EN

Stack Overflow用户
提问于 2017-09-15 08:35:31
回答 2查看 621关注 0票数 2

我使用的是C#版本的ClipperLib的v6.4.2。我有很多正方形在做鱼网。我还有一个长方形。我想得到一个结果,其中只有矩形内的正方形被返回,部分重叠被剪裁。实验对象是绿色的,剪辑是红色的:

我得到的结果是棕色/灰色的矩形,它只有一个多边形:

我希望有15个完整的方块和13个剪裁的方块作为结果。

这是我使用的代码:

代码语言:javascript
复制
var startX = 100;
var startY = 250;
const int numPolygons = 10;

var subj = new Polygons(numPolygons * numPolygons);
for (var i = 0; i < numPolygons; i++)
{
    for (var j = 0; j < numPolygons; j++)
    {
        var square = new Polygon(4)
        {
            new IntPoint(startX, startY),
            new IntPoint(startX + 10, startY),
            new IntPoint(startX + 10, startY - 10),
            new IntPoint(startX, startY - 10)
        };
        subj.Add(square);
        // Moving to the right
        startX = startX + 10;
    }
    // Moving down
    startY = startY - 10;
    startX = 100;
}

var clip = new Polygons(1);
clip.Add(new Polygon(4));
clip[0].Add(new IntPoint(165, 215));
clip[0].Add(new IntPoint(255, 215));
clip[0].Add(new IntPoint(255, 155));
clip[0].Add(new IntPoint(165, 155));

var solution = new Polygons();
var c = new Clipper.Clipper();
c.AddPaths(subj, PolyType.ptSubject, true);
c.AddPaths(clip, PolyType.ptClip, true);
c.Execute(ClipType.ctIntersection, solution, PolyFillType.pftEvenOdd, PolyFillType.pftEvenOdd);
Debug.WriteLine("solution.Count: " + solution.Count);

当运行上面的代码时,大约需要0.5秒。因为结果看起来像剪辑和主题都切换了,所以我已经切换了它们。结果是一样的,但现在只需要0.1秒。所以做些额外的事情。我认为这是结果方块的合并。

我不想结果合并。我怎么才能防止这种情况?或者我的代码有问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-09-16 09:46:38

根据剪刀文档Execute方法:

关于返回的解决方案路径,需要注意以下几点: ..。多边形可能很少有共同的边缘(虽然这在版本6中是非常罕见的)。

我认为这意味着在执行任何裁剪操作时,路径会被合并。

我试着用不同的聚苯硫醚做同样的事情,但也没有成功。

您可能想试着在每个平方上分别运行Execute方法(subject),在每次迭代中针对裁剪区域运行该方法,但是性能可能会因此而受到影响。

票数 2
EN

Stack Overflow用户

发布于 2017-09-15 12:29:32

在这种精确的情况下,您可以轻松地手工计算结果,而不需要裁剪库。

所有矩形都是轴对齐物体这一事实使得加快计算成为可能,因此它甚至可以更快地自己执行操作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46235176

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档