c - 如何在C中以90度的增量旋转bmp图像?

标签 c rotation

我正在尝试编写这个用 C 语言操作 bmp 图像的程序,到目前为止我已经设法将其旋转如下:

 for (row=0; row < rows; row++)
      for (col=0; col < cols; col++) 
        {
          (*new) + rows*col + (rows - row -1) = original + row*cols + col;
        }

其中:Original = 原始 bmp,new = 新的 bmp,其大小取决于我要应用的旋转量。两者都是指向bmp的指针,new是指向指针的指针。 我已经做了好几次数学计算,当它实际上应该顺时针旋转时,它却逆时针旋转。这是一个问题,但我想我可以逆时针翻转它足够的时间,让它看起来顺时针旋转。我的问题是:我将如何从原始 bmp 图像进行多次旋转并使其最终出现在我正在创建的新 bmp 图像上。 也就是说,我怎样才能执行多次上述操作,并且仍然只有 1 个输入和 1 个大小正确的输出文件。 我想用指针来完成此操作,因为它将使我更容易操作其他过程中的输出。 我希望这是足够的细节。

谢谢。

最佳答案

使用矩阵。伪代码:

class Matrix {
    double m11,m12,m21,m22;
};

dest.x = matrix.m11*src.x + matrix.m12*src.y;
dest.y = matrix.m21*src.x + matrix.m22*src.y;

其中x = x - image.width/2 且 y = y - image.height/2

http://en.wikipedia.org/wiki/Rotation_matrix#Common_rotations

关于c - 如何在C中以90度的增量旋转bmp图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19481733/

相关文章:

c - 关于 BYTE 类型的 strlen() 的警告

c - sleep 的替代品,信号量

c - 尝试实现任务调度程序 COM 处理程序

c++ - 编程在人工智能中的应用

c++ - OpenGl:glRotatef 机制以及如何在不移动的情况下围绕自身旋转正方形

javascript - 如何旋转矩形以指向鼠标

node.js - Node 上的fabric.js - 旋转(setAngle)改变对象的位置

c - 文件中的奇怪行为计数行

android - 一些 fragment 在旋转时丢失

get - Raphael js 获取元素的旋转