Мне нужна помощь в преобразовании выбранной точки в повернутом виде обратно в соответствующую точку на исходном изображении. Так, например, если я щелкнул в левом верхнем углу (0,0) в повернутом виде, он должен соответствовать (0,1280) в исходном изображении.
Дополнительные баллы за решение, которое работает независимо от ротации.
Original Image ( 1920 x 1280 ) Rotated View ( for display on phone )
+----------------------------+ +-----------------+
|(0,0) | |(0,0) | ( 1280 x 1920 )
| | | |
| | | x |
| x | | ( click ) |
| ( what is this point ) | | |
| | | |
| | | |
+----------------------------+ | |
(1920,1280) | |
| |
| |
| |
| |
| |
| |
| |
+-----------------+
(1280,1920)
ОБНОВЛЕНО
/*
This is how I build the matrix used to perform the initial rotation from the original to the rotated image. This matrix also includes scaling
Code base: Android/Java
bitmap ( bitmap i'm scaling/rotating )
canvas ( the canvas being drawn to )
Note: bitmap is in landscape mode / canvas is in portrait
*/
Matrix matrix = new Matrix();
float centerX = canvas.getWidth() >> 1;
float centerY = canvas.getHeight() >> 1;
rAngle = 90;
scaleH = ((float) canvas.getHeight()) / bitmap.getWidth();
scaleW = ((float) canvas.getWidth()) / bitmap.getHeight();
scaler.preScale(scaleH, scaleW);
scaler.postRotate(rAngle, centerY, centerX);
float nx = (canvas.getHeight() - canvas.getWidth()) / 2;
scaler.postTranslate(-nx, nx);
canvas.drawBitmap(bitmap,scaler,null);
Я вряд ли разбираюсь в математике, поэтому любая рука будет оценена. :)