相关疑难解决方法(0)

Bezier剪辑

我正在尝试找到/制作一个算法来计算两个任意填充的2D对象的交集(一个新的填充对象).使用线或立方贝塞尔定义对象,并且可以具有孔或自相交.我知道几个现有的算法对多边形做了同样的事情,在这里列出.但是,我想支持beziers而不将它们细分为多边形,并且输出应该与没有交叉点的区域中的输入具有大致相同的控制点.

这是一个交互式程序来做一些CSG,但剪辑不需要是实时的.我已经搜索了一段时间,但没有找到好的起点.

graphics geometry bezier 2d csg

14
推荐指数
2
解决办法
8019
查看次数

斯威夫特:有没有一种简单的方法来绘制形状并检测它们是否相交?

有没有一种简单的方法可以在Swift中绘制形状(最好使用Sprite-Kit),然后检测它们是否相交以及它们相交的位置?就像这里是一个相交的形状:

在此输入图像描述

intersection ios sprite-kit swift

6
推荐指数
1
解决办法
2435
查看次数

2 条 SVG 路径的交集

我需要检查两个 SVG Path 元素是否相交。检查边界框与 的交集.getBBox()太不准确。我目前正在做的是迭代两条路径,.getTotalLength()然后检查两个点.getPointAtLength()是否相等。

下面是一个片段,但正如您所看到的,这非常慢并且会阻止浏览器选项卡。必须有一种更有效的方法来检查两条路径之间的交叉点。

var path1 = document.getElementById("p1");
var path2 = document.getElementById("p2");
var time = document.getElementById("time");
var btn = document.getElementById("start");
btn.addEventListener("click", getIntersection);

function getIntersection() {
var start = Date.now();
  for (var i = 0; i < path1.getTotalLength(); i++) {
    for (var j = 0; j < path2.getTotalLength(); j++) {
      var point1 = path1.getPointAtLength(i);
      var point2 = path2.getPointAtLength(j);

      if (pointIntersect(point1, point2)) {
        var end = Date.now();
        time.innerHTML = (end - start) / 1000 …
Run Code Online (Sandbox Code Playgroud)

javascript svg intersection

3
推荐指数
2
解决办法
5410
查看次数

标签 统计

intersection ×2

2d ×1

bezier ×1

csg ×1

geometry ×1

graphics ×1

ios ×1

javascript ×1

sprite-kit ×1

svg ×1

swift ×1