Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 旋转像素阵列_Java - Fatal编程技术网

Java 旋转像素阵列

Java 旋转像素阵列,java,Java,所以,我正在做一个2d塔防游戏,需要敌人的精灵在他们改变方向时旋转。我知道使用内置的java旋转/仿射变换方法很容易做到这一点,但为了优化/性能,我想知道是否可以使用像素数组进行旋转 谢谢盖洛德, 我不确定你是否还在这里寻找答案,但为了其他成员的利益,这里是我能够用来解决类似问题的方法。我一直在构建一个游戏引擎,它使用与您描述的类似的图形结构。我使用的旋转函数如下所示: 所有的浮球都可以用双打代替,也许效果更好。我使用浮动来帮助提高低端计算机的性能 float cos = (float)Math

所以,我正在做一个2d塔防游戏,需要敌人的精灵在他们改变方向时旋转。我知道使用内置的java旋转/仿射变换方法很容易做到这一点,但为了优化/性能,我想知道是否可以使用像素数组进行旋转

谢谢盖洛德, 我不确定你是否还在这里寻找答案,但为了其他成员的利益,这里是我能够用来解决类似问题的方法。我一直在构建一个游戏引擎,它使用与您描述的类似的图形结构。我使用的旋转函数如下所示: 所有的浮球都可以用双打代替,也许效果更好。我使用浮动来帮助提高低端计算机的性能

float cos = (float)Math.cos(-angle);//The angle you are rotating (in radians) 
float sin = (float)Math.sin(-angle);//The angle you are rotating (in radians) 
float sWidth = screenWidth/2;
float sHeight = screenHeight/2;
float pWidth = pixelArrayWidth/2;
float pHeight = pixelArrayHeight/2;

for each pixel in screen{
    int xPosition = pixelIndexX - sWidth;
    int yPosition = pixelIndexY - sHeight;
    int tx = (int)(xPosition  * cos - yPosition  * sin);
    int ty = (int)(xPosition  * sin + yPosition  * cos);
    xPosition = tx + pWidth;
    yPosition = ty + pHeight;
    if((xPosition is out of bounds) or (yPosition is out of bounds)) continue;
    setPixelAt(screenPixelX, screenPixelY, pixelArray[xPosition + yPosition * pixelArrayWidth] )  
}

我知道它有psuedo代码和java代码,但应该是可以理解的。如果有人需要澄清,请发表评论并询问。

这不是一个2d数组的副本。我使用一维数组来保存像素数据。那篇文章的评论似乎与我的问题毫不相干。我的错!你能举一个输入和输出的例子吗?如果只是从[1,2,3,4,5]到[3,4,5,1,2]进行数组旋转,那么这是一个很容易解决的问题。让我知道你在找什么。