如何使一幅图转动?(100分)

  • 主题发起人 主题发起人 wuyaobing
  • 开始时间 开始时间
W

wuyaobing

Unregistered / Unconfirmed
GUEST, unregistred user!
如何使一幅图象转动任意角度?(如Bmp)
 
难!关注!
 
通常有两种算法:
1.直接算法.对图像中的每一个点运用公式
x' = x cos a + y sin a
y' = -x sin a + y cos a
求得的点的坐标一般来说不是整数,对该坐标按离整数坐标点的距离加权到整数坐标点.
2.间接算法.对结果图像中的每一点反用上面公式
x = x' cos a - y' sin a
y = x' sin a + y' cos a
求得的点的坐标按离整数坐标点的距离求插值颜色值
 
实现很难,因为 Bitmap 本身是方的,需要逐一计算每一像素的变换坐标,在内存里开辟
Bitmap 缓冲,再显示到屏幕上。
 
坐标变换+象素操作。不过要处理好变换后的“空洞”问题(用相邻象素进行计算来求平均
值)。
 
不难啊,“空洞”问题其实可以反向求解的方式解决,就是说,不是已知
假如sx,sy是源图象点坐标,tx,ty是目标图象点坐标,直接的想法是
通过tx=f(sx),ty=f(sy)算对应点在目标图象中的位置,但这样会因为f(x)的
值不是连续的,要取整;所以可以用y=f(x)的反函数用y求解x,即用目标点的坐标
去找源图中对应那个点。
具体的函数,上面有,而且网上有一堆c++的源码
 
多人接受答案了。
 
后退
顶部