Получение координат без вращения из матрицы - PullRequest
0 голосов
/ 10 октября 2018

Я выполняю приведенные ниже переводы в мою матрицу

fun updateMatrix() {
    // init matrix to E - identity matrix
    matrix.reset()

    // calculate params
    var rotationInDegree = layer.rotationInDegrees
    var scaleX = layer.scale
    val scaleY = layer.scale
    if (layer.isFlipped) {
        // flip (by X-coordinate) if needed
        rotationInDegree *= -1.0f
        scaleX *= -1.0f
    }

    // applying transformations : L = S * R * T

    // scale
    matrix.preScale(scaleX, scaleY, absoluteCenterX(), absoluteCenterY())

    // rotate
    matrix.preRotate(rotationInDegree, absoluteCenterX(), absoluteCenterY())

    // translate
    matrix.preTranslate(getTopLeftX(), getTopLeftY())

    // applying holy scale - S`, the result will be : L = S * R * T * S`
    matrix.preScale(holyScale, holyScale)
}

И затем сохраняю эту матрицу в моей базе данных.Я хочу получить координаты своего растрового изображения без поворота.Пока что я указал следующий код

float[] values = new float[9];
        tempMatrix.getValues(values);

        int rotation = (int) Math.round((-Math.atan2(values[Matrix.MSKEW_X], values[Matrix.MSCALE_X]) * (180 / Math.PI)));

        if (rotation != 0) {
            tempMatrix.preRotate(-rotation);
            tempMatrix.getValues(values);
        }

final float panX = values[Matrix.MTRANS_X];
final float panY = values[Matrix.MTRANS_Y];

Однако panX и panY не верны и всегда одинаковы, даже если я не выполняю tempMatrix.preRotate(-rotation);.Есть ли что-то еще, что я могу сделать, чтобы получить эти правильные координаты?

...