gpt4 book ai didi

Javascript/jQuery 如何从矩阵值中获取比例值

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:19:48 29 4
gpt4 key购买 nike

首先获取一个矩阵。

this.getMatrix = function(obj)
{
var matrix = obj.css("-webkit-transform") ||
obj.css("-moz-transform") ||
obj.css("-ms-transform") ||
obj.css("-o-transform") ||
obj.css("transform");
return matrix;
};

并获取一个标度的值。

this.getScaleDegrees = function(obj)
{
var matrix = this.getMatrix(obj),
matrixRegex = /matrix\((-?\d*\.?\d+),\s*0,\s*0,\s*(-?\d*\.?\d+),\s*0,\s*0\)/,
matches = matrix.match(matrixRegex);
return matches;
};

并且获取到一个rotate的值。

this.getRotationDegrees = function(obj)
{
var matrix = this.getMatrix(obj),
angle = 0;

if(matrix !== 'none') {
var values = matrix.split('(')[1].split(')')[0].split(','),
a = values[0],
b = values[1];
angle = Math.round(Math.atan2(b, a) * (180/Math.PI));
}

return angle;
};

现在,我遇到了一个问题。
当元素同时存在旋转和缩放时,函数“getScaleDegrees”失败。
由于“getRotationDegrees”函数正常运行,
我认为我将在函数“getRotationDegrees”的过程的帮助下编辑函数“getScaleDegrees”。

因此,问题是如何获取比例的值。

有什么好的思路或者计算方法吗?


编辑:

有一个函数可以改变缩放和旋转,每次缩放和旋转的值都不同。函数“getMatrix”返回的值变成这样。

none [no rotate & no scale]  
matrix(1.2, 0, 0, 1.2, 0, 0) [edit scale]
matrix(0.965926, -0.258819, 0.258819, 0.965926, 0, 0) [edit rotate]
matrix(1.3523, -0.362347, 0.362347, 1.3523, 0, 0) [edit rotate & edit scale]

最佳答案

解决方案之一。

将矩阵转换为数组(thanx eicto)

this.parseMatrix = function(_str)
{
return _str.replace(/^matrix(3d)?\((.*)\)$/,'$2').split(/, /);
};

获取比例的值

this.getScaleDegrees = function(obj)
{
var matrix = this.parseMatrix(this.getMatrix(obj)),
scale = 1;

if(matrix[0] !== 'none') {
var a = matrix[0],
b = matrix[1],
d = 10;
scale = Math.round( Math.sqrt( a*a + b*b ) * d ) / d;
}

return scale;
};

'Math.sqrt( a*a + b*b )' 引用 CSS-TRICKS .

关于Javascript/jQuery 如何从矩阵值中获取比例值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13524092/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com