30.09.2012 / 10:56 | |
Serg Пользователь Сейчас: Offline
Имя: Грин Регистрация: 09.07.2011
| DominaN, what is прострелы?
|
30.09.2012 / 11:15 | |
DominaN Пользователь Сейчас: Offline
Имя: Кирилл Откуда: Смоленск Регистрация: 28.09.2011
| |
30.09.2012 / 18:59 | |
BorderFol Пользователь Сейчас: Offline
Имя: Юрий Бахмацкий Откуда: Хмельницкий Регистрация: 20.08.2011
| Киньте кто-нибудь в ЛС код поворота изображения с изменениям ширины и высоты(rotated Width,rotated Height), а то я уже задолбался изобретать
|
30.09.2012 / 19:26 | |
DominaN Пользователь Сейчас: Offline
Имя: Кирилл Откуда: Смоленск Регистрация: 28.09.2011
| BorderFol, да нафига оно надо? Делается элементарно в фотожопе ракурсы: 1. Полностью повернут влево 2. Немного повернут влево 3. Полностью повернут вверх
и потом в игре зеркалится через sprite.setTransform. Будет ГОРАЗДО быстрее и смотрется не хуже.
|
30.09.2012 / 21:40 | |
BorderFol Пользователь Сейчас: Offline
Имя: Юрий Бахмацкий Откуда: Хмельницкий Регистрация: 20.08.2011
| DominaN, это не подходит
|
2.10.2012 / 15:05 | |
NaruTrey Пользователь Сейчас: Offline
Имя: Андрей K. Откуда: Тольятти Регистрация: 15.01.2010
| Получите и распишитесь. © Naru Trey. All Rights Reserved.Открыть спойлер Закрыть спойлер import javax.microedition.lcdui.Image;
public class ImageUtility {
private static int sin[] = {0, 174, 342, 500, 643, 766, 866, 940, 985, 1000};
public static Image rotate(Image image, int degree) {
int ImageWidth = image.getWidth();
int ImageHeight = image.getHeight();
int[] ImageArray0 = new int[ImageWidth * ImageHeight];
int[] ImageArray1 = new int[ImageWidth * ImageHeight];
image.getRGB(ImageArray0, 0, ImageWidth, 0, 0, ImageWidth, ImageHeight);
int x0, y0, x1, y1, xc = ImageWidth / 2, yc = ImageHeight / 2, sn = sin(degree), cs = cos(degree);
for (y1 = 0; y1 < ImageHeight; y1++) {
for (x1 = 0; x1 < ImageWidth; x1++) {
x0 = (int) ((cs * (x1 - xc) + sn * (y1 - yc)) / 1000 + xc);
y0 = (int) (-(sn * (x1 - xc) - cs * (y1 - yc)) / 1000 + yc);
if (x0 > -1) {
if (x0 < ImageWidth) {
if (y0 > -1) {
if (y0 < ImageHeight) {
ImageArray1[y1 * ImageWidth + x1] = ImageArray0[y0 * ImageWidth + x0];
}
}
}
}
}
}
return Image.createRGBImage(ImageArray1, ImageWidth, ImageHeight, true);
}
private static int sinus(int t) {
int k;
k = (int) (t / 10);
if (t % 10 == 0) {
return sin[k];
} else {
return (int) ((sin[k + 1] - sin[k]) * (t % 10) / 10 + sin[k]);
}
}
private static int sin(int t) {
int sign = 1;
t = t % 360;
if (t < 0) {
t = -t;
sign = -1;
}
if (t <= 90) {
return sign * sinus(t);
} else if (t <= 180) {
return sign * sinus(180 - t);
} else if (t <= 270) {
return -sign * sinus(t - 180);
} else {
return -sign * sinus(360 - t);
}
}
private static int cos(int t) {
t = t % 360;
if (t < 0) {
t = -t;
}
if (t <= 90) {
return sinus(90 - t);
} else if (t <= 180) {
return -sinus(t - 90);
} else if (t <= 270) {
return -sinus(270 - t);
} else {
return sinus(t - 270);
}
}
}
Использовать так: ImageUtility.rotate(Image image, int degree);
Где:image - Картинка на входе. degree - На сколько градусов повернуть по-часовой. Возвращает: повернутую картинку. __________________
Чёрные усы кричает этот свисть Изменено NaruTrey (2.10 / 15:10) (всего 1 раз) |
5.10.2012 / 15:44 | |
BorderFol Пользователь Сейчас: Offline
Имя: Юрий Бахмацкий Откуда: Хмельницкий Регистрация: 20.08.2011
| NaruTrey, нет, не то, у меня такой алгоритм есть, мне нужно, чтобы при повороте изображение не обрезалось по сторонам
|
5.10.2012 / 21:38 | |
NaruTrey Пользователь Сейчас: Offline
Имя: Андрей K. Откуда: Тольятти Регистрация: 15.01.2010
| BorderFol, надо тогда у исходного изображения создавать вокруг свободное место. Иначе никак.
__________________
Чёрные усы кричает этот свисть |
6.10.2012 / 07:42 | |
DominaN Пользователь Сейчас: Offline
Имя: Кирилл Откуда: Смоленск Регистрация: 28.09.2011
| BorderFol, Максимальный размер, нужный для поворота до 45 градусов - в два раза больше, чем исходное изображение. Это нерационально и медленно, использование в реалтайм бессмысленно и нелогично. Зачем заниматься ерундой?
|
6.10.2012 / 08:06 | |
BorderFol Пользователь Сейчас: Offline
Имя: Юрий Бахмацкий Откуда: Хмельницкий Регистрация: 20.08.2011
| DominaN, не в реалтайме, а с поворотами разобрался, скоро скину алгоритм
|