Используя Fabric.js, у меня возникают проблемы с истинным поворотом треугольника вокруг его центральной точки или, по крайней мере, то, что, по моему мнению, должно быть центральной точкой. Я создал jsFiddle, который демонстрирует. Треугольник прост, и я использовал originX: 'center'
и то же самое для originY, однако по мере поворота треугольника все еще незначительное движение в направлениях x и y. Как я могу убедиться, что треугольник никогда не перемещается?Поверните вращение центра равностороннего треугольника в Fabric.js
Я нашел этот ответ и задавался вопросом, правильно ли это сделать? how to rotate around one specified point in fabric.js?
EDIT: Новые усилия включают в себя выполнение ответа из вышеуказанного связанного вопроса. Вот код:
function createTriangle(x, y, angle)
{
var t = new fabric.Triangle(
{
width: 350,
height: 300,
selectable: false,
fill: 'rgba(0,0,0,0)',
stroke: 'white',
strokeWidth: 2,
left: x,
top: y,
angle: angle
});
var rotation_origin = new fabric.Point(t.getCenterPoint().x, t.getCenterPoint().y);
var angle_randians = fabric.util.degreesToRadians(angle);
var rotatePoint = fabric.util.rotatePoint(new fabric.Point(rotation_origin.x, rotation_origin.y), rotation_origin, angle_randians);
t.originX = rotatePoint.x;
t.originY = rotatePoint.y;
return t;`
}
Это, однако, не работает для меня. Треугольник все еще немного перемещается во время вращения.
EDIT: Я попытался установить указанные точки вращения из связанного вопроса выше. Это не сработало для меня. Треугольник вращается точно так же.
EDIT2: Поскольку я больше погружаюсь в это, я начинаю верить, что это больше, чем вопрос Fabric.js. Похоже, что больше webGL, но не проблема, просто преобразуются формы. Я вижу, что существует разница между поворотом прямоугольника и треугольником. Используя центральное происхождение, прямоугольники всегда никогда не перемещаются. Я не нашел ответа, но я включил webGL в качестве тега, чтобы надеяться на помощь. Кто-нибудь когда-нибудь сталкивался с этим?
Большое спасибо за детали! Я просто нашел что-то интересное. Кажется, что увеличение угла приводит к тому, что треугольник вращается вокруг точки, а не центрируется и вращается. Я попробовал тест и в своей функции '' 'requestAnimationFrame'', я решил удалить треугольник и создать его снова, используя увеличивающийся угол. Таким образом, он остался на своем месте. Любая идея, почему это было бы? Почему '' 'triangle.angle - = 0.2''' не равна ' '' угол + = 1; canvas.remove (треугольник); треугольник = createTriangle (300, 300, угол); canvas.add (треугольник); '' '? –
Хотел добавить обновленную [скрипку] (http://jsfiddle.net/UW8Be/5/), чтобы показать изменения для тех, кто нуждается в ней для справки. –