【发布时间】:2016-05-13 16:08:06
【问题描述】:
我正在尝试编写一种将图像向右旋转 90 度的方法。我已经查看了有关此主题的其他帖子,但似乎没有一个可以帮助我解决我的问题。我的代码似乎可以在纸上运行,但我不知道为什么 j 单元测试无法通过。为什么我的 j 单元测试没有通过?
我的代码:
/**
* intialize a picture by giving an image matrix
* @param imageMatrix two dimansionar RGBColor array
*/
public Picture(RGBColor imageMatrix[][]){
this.width = imageMatrix.length;
this.height = imageMatrix[0].length;
this.imageMatrix = imageMatrix;
}
/**
* turns this picture 90 degrees to the right
*
*/
public void rot90DegRight(){
int w = imageMatrix.length;
int h = imageMatrix[0].length;
RGBColor[][] rotatedMatrix = new RGBColor[h][w];
for (int i = 0; i<h; i++){
for(int j = 0; j<w; j++){
rotatedMatrix[i][j] = imageMatrix[w-j-1][i];
}
}
}
这里也是 j-unit 测试用例:
@Test(timeout=1000)
public void testRot90DegRight(){
RGBColor[][] imageMatrix = new RGBColor[100][100];
for (int w=0; w<100; w++){
for (int h=0; h<100; h++){
if ((w==20) & (h==20)){
imageMatrix[w][h] = new RGBColor(255,255,255);
} else {
imageMatrix[w][h] = new RGBColor(0,0,0);
}
}
}
Picture p = new Picture(imageMatrix);
p.rot90DegRight();
assertTrue("The white pixel was not rotated", !(p.getImageMatrix()[20][20].isWhite()));
assertTrue("The white pixel was not rotated", (p.getImageMatrix()[79][20].isWhite()));
}
【问题讨论】:
标签: java image matrix rotation