旋转矩阵疑问

已知的旋转公式

x’ = x * cos -y * sin
y’ = x * sin + y * cos

以图片为例,会计算图片四个角的点然后旋转

fillBuffers (sprite, renderer) {
        let  matrix = node._worldMatrix,
            a = matrix.m00, b = matrix.m01, c = matrix.m04, d = matrix.m05,
            tx = matrix.m12, ty = matrix.m13;

        // buffer data may be realloc, need get reference after request.
        let vbuf = buffer._vData;

        let data0 = data[0], data3 = data[3],
            vl = data0.x, vr = data3.x,
            vb = data0.y, vt = data3.y;

        let al = a * vl, ar = a * vr,
            bl = b * vl, br = b * vr,
            cb = c * vb, ct = c * vt,
            db = d * vb, dt = d * vt;

        // left bottom
        vbuf[vertexOffset] = al + cb + tx;
        vbuf[vertexOffset + 1] = bl + db + ty;
        // right bottom
        vbuf[vertexOffset + 5] = ar + cb + tx;
        vbuf[vertexOffset + 6] = br + db + ty;
        // left top
        vbuf[vertexOffset + 10] = al + ct + tx;
        vbuf[vertexOffset + 11] = bl + dt + ty;
        // right top
        vbuf[vertexOffset + 15] = ar + ct + tx;
        vbuf[vertexOffset + 16] = br + dt + ty;
    }

m00 = cos, m01 = -sin, m04 = sin, m05 = cos
左下角点旋转后的坐标为:
vbuf[vertexOffset] = al + cb + tx = a * vl + c * vb + tx = m00 * vl + m04 * vb + tx = cos * x + sin * y + ty;
vbuf[vertexOffset + 1] = bl + db + ty = b * vl + d * vb + ty = m02 * vl + m05 * vb + ty = -sin * x + cos * y + ty;
明显和公式对不上。

是我那里没考虑到,求大佬解惑。

有点抽象,可以简单说下你想要做什么样的效果吗

我不想要什么效果,我只是想知道cc底层对点的旋转的计算为什么是这样的。

虽然代码没看懂…
但是一般都是用旋转矩阵来的…
你的这个三角函数公式怎么转出来的?
而且cocos在笛卡尔坐标系下旋转方向和数学里的方向是相反的。所以反了吧。

三角函数是常用的2d旋转公式。
我这里是反推的,即使cocos的笛卡尔坐标系和数学的坐标系是相反的,反推出来的也应该符合旋转公式。

有矩阵旋转接口的,自己查查文档