Привет, коллеги-программисты,Вращение изображения Java не работает должным образом
Я делаю игру, и я хочу иметь возможность поворачивать мои изображения. Я не использую Graphics2d, потому что сам сделал класс рендеринга (в основном).
Проблема заключается в том, что мой текущий метод вращения оставляет дыры в новом (повернутый) картина также не размещать новые пиксели на нужном месте ...
я не вижу проблемы, так что, возможно, вы можете помочь :)
функцияpublic void drawRotatedImage(Image image, int offX, int offY, double degree){
int Iwidth = image.width;
int Iheight = image.height;
double angle = Math.toRadians(degree);
double sin = Math.sin(angle);
double cos = Math.cos(angle);
double x0 = 0.5 * (Iwidth - 1); // point to rotate about
double y0 = 0.5 * (Iheight - 1); // center of image
for(int x = 0; x < Iwidth; x++){
for(int y = 0; y < Iheight; y++){
double a = x - x0;
double b = y - y0;
int xx = (int) (+a * cos - b * sin + x0);
int yy = (int) (+a * sin + b * cos + y0);
if(xx >= 0 && xx < width && yy >= 0 && yy < height){
setPixel(x+offX, y+offY, image.pixels[xx + yy*image.width]);
}
}
}
}
SetPixel выглядит следующим образом:
public void setPixel(int x, int y, int color){
if((x < 0 || x >= width || y < 0 || y >= height) || color == 0xffff00ff){
return;
}
pixels[x + y * width] = color;
}
Это прекрасно работает для не повернутых изображений ... но когда я повернуть это дает странное дерьмо За исключением случаев, когда я использую идеальный квадрат в качестве изображения, а затем поворачиваюсь как 90 или 180 Но в остальном я получаю образы, полные отверстий и неправильных пикселей ....
Итак, чтобы быть ясным, это не ошибка или что-то в этом роде что ... им просто нужно найти лучшее решение или что-то, что нужно заполнить.
Почему не просто 'x0 = 0,5 * Iwidth' &&' y0 = 0,5 * Iheight'? – TiMr
Потому что это не средний – Neriesta
смотреть на свой язык, это не ваш задний двор !! – gpasch