Показать сообщение отдельно
Старый 06.09.2011, 22:48   #8
Romanzes
Разработчик
 
Аватар для Romanzes
 
Регистрация: 06.04.2008
Сообщений: 541
Написано 196 полезных сообщений
(для 637 пользователей)
Ответ: Новичку нужна помощь

Старайся всегда использовать int.

Как перевернуть изображение на x градусов?
    public static Image rotateImage(Image im, long alpha) {
        int w = im.getWidth();
        int h = im.getHeight();
        long SIN = MathFP.sin(alpha);
        long COS = MathFP.cos(alpha);
        long A = SIN * h;
        long B = SIN * w;
        long C = COS * w;
        long D = COS * h;
        int W = MathFP.toInt(A + C);
        int H = MathFP.toInt(B + D);
        int[] src = new int[w * h];
        int[] dest = new int[W * H];
        im.getRGB(src, 0, w, 0, 0, w, h);
        long i0 = -MathFP.mul(SIN, D);
        long j0 = MathFP.mul(SIN, A);
        for (int y = 0; y < H; y++) {
            for (int x = 0; x < W; x++) {
                int i = MathFP.toInt(i0 + x * COS + y * SIN);
                int j = MathFP.toInt(j0 + y * COS - x * SIN);
                if (i < 0 || i >= w || j < 0 || j >= h) {
                    continue;
                }
                dest[x + y * W] = src[i + j * w];
            }
        }
        return Image.createRGBImage(dest, W, H, true);
    }
Извиняюсь за быдлокод, писал эту функцию очень давно. Файл MathFP.java взял с какого-то сайта (между прочим, этот же самый файл, только немного переработанный, используется и в MP).
Вложения
Тип файла: zip MathFP.zip (3.1 Кб, 760 просмотров)
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
ratum (07.09.2011)