SAT. js (проблема обнаружения столкновений) повернуть элемент SVG по центру - PullRequest
0 голосов
/ 25 марта 2020

У меня проблема с SAT. js Поворот плагина внутри холста SVG.

Когда я вращаю предмет, столкновение происходит неправильно. Например:

enter image description here

В этом случае правый прямоугольник фактически имеет эту позицию столкновения. Некоторый код:

// Set translate
this.data.el.setAttribute("transform", `translate(${this.data.x} ${this.data.y}) rotate(${this.data.angle} ${this.data.w / 2} ${this.data.h / 2})`);

......

// Calculate angle
_getMousePosition(el, evt) {
    const CTM = el.getScreenCTM();

    if (evt.touches) {
        evt = evt.touches[0];
    }

    return {
        x: (evt.clientX - CTM.e) / CTM.a,
        y: (evt.clientY - CTM.f) / CTM.d
    };
}


let rotateAngle = context._getMousePosition($el, evt),
radians = Math.atan2(entity[0].data.y - rotateAngle.y, entity[0].data.x - rotateAngle.x);

entity[0].data.angle = (radians * (180 / Math.PI)) + 180;
entity[0].display.rotate(entity[0].data.angle * (Math.PI / 180));

Я думаю, что необходимо установить некоторое значение компенсации для лица [0] .display.pos.x и лица [ 0] .display.pos.x и entity [0] .display.angle

Но я застрял с этим (

...