世界坐标转化注解

updateWorldVerts(comp) {
    let local = this._local;
    let verts = this._renderData.vDatas[0];

    let matrix = comp.node._worldMatrix;
    /** 
     * @四维矩阵
        [
            a, c, 0, 0,
            b, d, 0, 0,
            0, 0, 1, 0,
            tx, ty, tz, 1
        ]
     */

    let matrixm = matrix.m,
        /**@abcd控制旋转缩放倾斜 */
        a = matrixm[0], b = matrixm[1], c = matrixm[4], d = matrixm[5],
        /**@tx对应世界坐标x偏移量 @ty对应世界坐标的y偏移量 */
        tx = matrixm[12], ty = matrixm[13];

    /**@vl本地坐标的left @vr本地坐标的right @vb本地坐标的bottom @vt本地坐标的top */
    let vl = local[0], vr = local[2],
        vb = local[1], vt = local[3];

    let floatsPerVert = this.floatsPerVert;
    let vertexOffset = 0;
    /**@是否只是平移 */
    let justTranslate = a === 1 && b === 0 && c === 0 && d === 1;

    /**
     * @世界坐标平移公式
     * @x = a*px + c*py + tx
     * @y = b*px + d*py + ty
     */

    if (justTranslate) {
        /**@只有平移的世界坐标算法 */
        /** @左下角顶点坐标 */
        verts[vertexOffset] = vl + tx;
        verts[vertexOffset + 1] = vb + ty;
        vertexOffset += floatsPerVert;
        /** @bottom 右下角顶点坐标 */
        verts[vertexOffset] = vr + tx;
        verts[vertexOffset + 1] = vb + ty;
        vertexOffset += floatsPerVert;
        /** @左上角顶点坐标 */
        verts[vertexOffset] = vl + tx;
        verts[vertexOffset + 1] = vt + ty;
        vertexOffset += floatsPerVert;
        /** @右上角顶点坐标 */
        verts[vertexOffset] = vr + tx;
        verts[vertexOffset + 1] = vt + ty;
    } else {
        /**@存在 @旋转 @缩放 @倾斜 */
        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;

        /** @左下角顶点坐标 */
        verts[vertexOffset] = al + cb + tx;
        verts[vertexOffset + 1] = bl + db + ty;
        vertexOffset += floatsPerVert;
        /** @右下角顶点坐标 */
        verts[vertexOffset] = ar + cb + tx;
        verts[vertexOffset + 1] = br + db + ty;
        vertexOffset += floatsPerVert;
        /** @左上角顶点坐标 */
        verts[vertexOffset] = al + ct + tx;
        verts[vertexOffset + 1] = bl + dt + ty;
        vertexOffset += floatsPerVert;
        /** @右上角顶点坐标 */
        verts[vertexOffset] = ar + ct + tx;
        verts[vertexOffset + 1] = br + dt + ty;
    }
}

所以,啥问题?

没啥问题,就是分享下代码的理解,希望有理解不到位的大佬们帮忙看下