代码之家  ›  专栏  ›  技术社区  ›  CCSab

循环平铺以旋转矩阵

  •  3
  • CCSab  · 技术社区  · 15 年前

    我正在尝试使用循环平铺技术编写一个旋转图像矩阵的函数。但是,我在使它正常工作方面遇到了一些问题。

    编辑: 这是我更新的代码,可以用,但只有当n是块大小的倍数时。如何处理不同的矩阵大小?现在,我用的是方块,对于那些方块来说,效果很好。我该如何根据给定数组的大小将其更改为使用矩形块呢?具体来说,如果给我一个n x n数组,我如何选择矩形块的尺寸来将其分割成?

      //Block size to tune
      int block = 20;
      int i1, j1, k1,  i, j, k;
    
      for(i1 = 0; i1 < n; i1 += block) {
        for(j1 = 0; j1< n; j1 += block) {
                for(i = i1; i < i1 + block; i++){
                    for(j = j1; j < j1 + block; j++){
                        dest[getInd(j, i, n)] = src[getInd(i, n - 1 - j, n)]; 
    
                    }
                }
            }
        }
    

    }

    1 回复  |  直到 15 年前
        1
  •  1
  •   Paul R    15 年前

    前两个for循环看起来错误:

      for(i1 = 0; i1 < n/block; i1 += block) {
        for(j1 = 0; j1< n/block; j1 += block) {
    

    可能是:

      for(i1 = 0; i1 < n; i1 += block) {
        for(j1 = 0; j1 < n; j1 += block) {
    

    不过,如果更正了这一点,您可能只需要在调试程序中单步执行代码,就可以解决其他需要修复的问题。