📅  最后修改于: 2023-12-03 15:00:41.445000             🧑  作者: Mango
_calcRotateMatrix()
是 Fabric.js 中 ActiveSelection
对象的一个方法,它用来计算选中对象的旋转变换矩阵。在 Fabric.js 中,矩阵是一个用来描述变换的数学对象,它可以用来表示平移、旋转、缩放等变换操作。
_calcRotateMatrix(sin, cos, ignoreOrigin)
sin
: 旋转变换的正弦值cos
: 旋转变换的余弦值ignoreOrigin
: 是否忽略原点进行旋转变换,可选,默认为 false
返回一个 3x3 的矩阵,用来描述选中对象的旋转变换。
_calcRotateMatrix: function(sin, cos, ignoreOrigin) {
if (typeof ignoreOrigin === 'undefined') {
ignoreOrigin = false;
}
var center = ignoreOrigin ? { x: 0, y: 0 } : this.getCenterPoint();
var theta = degreesToRadians(this.angle);
var options = fabric.util.qrDecompose(this.calcTransformMatrix());
options.angle = theta;
var translateMatrix = fabric.util.createMatrix(options.translateX, options.translateY);
var rotateMatrix = fabric.util.createMatrix(cos, sin, -sin, cos);
var centerMatrix = fabric.util.createMatrix(1, 0, 0, 1, center.x, center.y);
var centerTranslateMatrix = fabric.util.createMatrix(1, 0, 0, 1, -center.x, -center.y);
return centerMatrix.multiply(rotateMatrix).multiply(centerTranslateMatrix).multiply(translateMatrix);
}
var activeSelection = new fabric.ActiveSelection(objects, options);
var sin = Math.sin(degreesToRadians(angle));
var cos = Math.cos(degreesToRadians(angle));
var transformMatrix = activeSelection._calcRotateMatrix(sin, cos, ignoreOrigin);
activeSelection.transform(transformMatrix);
本方法常用于旋转选中对象,可通过设置 sin
和 cos
分别表示旋转变换的正弦值和余弦值。如果需要忽略中心点进行旋转,则需要将 ignoreOrigin
设置为 true
。最后,将计算出的变换矩阵应用到选中对象上即可。