Я использую d3 для анимации некоторых кругов, представляющих некоторые инструменты, которые вы можете перетаскивать. Я хотел бы иметь возможность создать функцию, которая обнаруживает, когда два элемента circle / g сталкиваются друг с другом.
У меня уже есть много кода, но это интересующий код, который я хотел бы изменить. Я действительно просто пытаюсь определить, есть ли способ обнаружить, когда элемент circle / g сталкивается или перекрывает любой другой
function circCollide(g) {
node = g;
nodeBox = g.getBBox();
nodeLeft = nodeBox.x;
nodeRight = nodeBox.x + nodeBox.width;
nodeTop = nodeBox.y;
nodeBottom = nodeBox.y + nodeBox.height;
d3.selectAll(g)
.attr("fill", function() {
if (this !== node) {
otherBox = this.getBBox();
otherLeft = otherBox.x;
otherRight = otherBox.x + otherBox.width;
otherTop = otherBox.y;
otherBottom = otherBox.y + otherBox.height;
collideHoriz = nodeLeft < otherRight && nodeRight > otherLeft;
collideVert = nodeTop < otherBottom && nodeBottom > otherTop;
if ( collideHoriz && collideVert) {
return "tomato";
} else {
return "none"
}
} else {
return "none";
}
});
}
}
Прямо сейчас я получаю следующую ошибку ("Uncaught TypeError: g.getBBox - это не функция ") Как я могу это исправить и заставить мою систему обнаружения столкновений работать