Я пытаюсь разместить точки (сделанные через fabric.Circle
) по углам fabric.Polygon
. Многоугольник может перемещаться, масштабироваться или поворачиваться пользователем. Однако после каждой модификации я хочу, чтобы новые координаты полигона размещали мои круги.Как преобразующие точки с transformMatrix работают в fabricJS?
В процессе углубления в эту тему я нашел this отличное объяснение трансформационных матриц. Я думал, что это идеальное решение для того, чего я хочу достичь. Но, как вы можете видеть в Fiddle, мои очки всегда удаляются от моего полигона.
Поскольку я не уверен в геометрической трансформации и т. Д. Я надеюсь, что кто-то найдет мою ошибку и скажет мне, что мне не хватает :) Спасибо.
var canvas = new fabric.Canvas("c", {selection: false});
var polygon = new fabric.Polygon([
new fabric.Point(200, 50),
new fabric.Point(250, 150),
new fabric.Point(150, 150)
]);
polygon.on("modified", function() {
var matrix = this.calcTransformMatrix();
var transformedPoints = this.get("points").map(function(p){
return fabric.util.transformPoint(p, matrix);
});
var circles = transformedPoints.map(function(p){
return new fabric.Circle({
left: p.x,
top: p.y,
radius: 3,
fill: "red",
originX: "center",
originY: "center",
hasControls: false,
hasBorders: false,
selectable: false
});
});
this.canvas.clear().add(this).add.apply(this.canvas, circles).setActiveObject(this).renderAll();
});
canvas.add(polygon).renderAll();
canvas {
border: 1px solid;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.6.3/fabric.js"></script>
<p>
Move, scale and rotate the polygon. The three red dots should match with the corners of the polygon after each modification.
</p>
<canvas id="c" width="600" height="400"></canvas>
Вопросы, относящиеся к SO:
- How to get polygon points in Fabric.js
- Truly rotate center of equilateral triangle in Fabric.js
- How do I transform a particular point which has been modified and update the points array of polygon?
- FabricJs and Polygon transformed coordinates
- How to multiply each point with object's transform matrix?
- How do i get point coordinates after object modified?
Привет Андреа, спасибо за ответ :) Она работает идеально. Я должен подождать 22 часа, прежде чем мне разрешу присудить награду. Тем временем: Возьми мой верх;) – Fidel90