完全在另一个对象内检测对象

时间:2015-07-21 19:29:58

标签: javascript collision-detection fabricjs intersection bounding-box

大家好日子,

我想知道是否有办法检测布料对象是否完全在另一个对象中?

我在文档中查看了object.intersectsWithObject(object2),但不幸的是,只要对象完全位于object2中,该函数就不会再回复为true,而是伪造。

有其他人有这个问题吗?我根本不知道如何做到这一点。 我在fabric.js中搜索过该函数。有人可以帮忙吗?

    intersectsWithObject: function(other) {
  // extracts coords
  function getCoords(oCoords) {
    return {
      tl: new fabric.Point(oCoords.tl.x, oCoords.tl.y),
      tr: new fabric.Point(oCoords.tr.x, oCoords.tr.y),
      bl: new fabric.Point(oCoords.bl.x, oCoords.bl.y),
      br: new fabric.Point(oCoords.br.x, oCoords.br.y)
    };
  }
  var thisCoords = getCoords(this.oCoords),
      otherCoords = getCoords(other.oCoords),
      intersection = fabric.Intersection.intersectPolygonPolygon(
        [thisCoords.tl, thisCoords.tr, thisCoords.br, thisCoords.bl],
        [otherCoords.tl, otherCoords.tr, otherCoords.br, otherCoords.bl]
      );

  return intersection.status === 'Intersection';
}

谢谢你的帮助 塞巴斯蒂安

1 个答案:

答案 0 :(得分:3)

如果你想知道abject是否完全在另一个对象中,你应该使用isContainedWithinObject

  

isContainedWithinObject(other)→{布尔}

     

§检查对象是否完整   包含在另一个对象的区域内

     

参数:

     

名称:其他
  输入:对象

     

说明:要测试的对象

     

来源:fabric.js,   第12300行

     

返回:如果对象完全包含在区域内,则返回true   另一个对象

     

输入:布尔值

这是来源:

isContainedWithinObject: function(other) {
      var boundingRect = other.getBoundingRect(),
          point1 = new fabric.Point(boundingRect.left, boundingRect.top),
          point2 = new fabric.Point(boundingRect.left + boundingRect.width, boundingRect.top + boundingRect.height);

      return this.isContainedWithinRect(point1, point2);
    }

它使用您要测试的对象的边界框。