У меня проблема с SAT. js Поворот плагина внутри холста SVG.
Когда я вращаю предмет, столкновение происходит неправильно. Например:
В этом случае правый прямоугольник фактически имеет эту позицию столкновения. Некоторый код:
// 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
Но я застрял с этим (