我的图像翻转算法做错了啥?

Posted

技术标签:

【中文标题】我的图像翻转算法做错了啥?【英文标题】:What did i wrong in my image turn algoritm?我的图像翻转算法做错了什么? 【发布时间】:2020-03-02 14:53:19 【问题描述】:

我只想转动图像#1并将其写入内存#2(#1 Body #2 TurnBody)(围绕图像中心旋转

KIKJ 只是 (i-radius)(j-radius) 用于使用。 SINCOS 只是转角的 sin 和 cos。

半径 - 图片边的一半(我的图片是方形的)

6.28 = pi*2

我需要转的例子

例如我有:

(我不是把所有的图片都转过来,只是在中间放一个小方块,然后把它加到大屏幕上)

TurnAngle - 只是我的全局值(显示图像现在旋转的角度)

void Turn(double angle, int radius, COLORREF* Body, COLORREF* TurnBody)
                
            if (abs(TurnAngle += angle) > 6.28)
            
                TurnAngle = 0;
            
            int i, ki, j, kj;
            const double SIN = sin(TurnAngle), COS = cos(TurnAngle);

            for (i = 0, ki = -radius; i < 2 * radius; i++, ki++)
            
                for (j = 0, kj = -radius; j < 2 * radius; j++, kj++)
                 
                    if (Body[i * 2 * radius + j]) // if Pixel not black
                     
                        TurnBody[static_cast<int>(kj * COS - ki * SIN + radius + (ki * COS + kj * SIN + radius) * 2 * radius)] = Body[i * 2 * radius + j];
                    
                
            

        

这项工作,smth 是错误的 () 或者我不知道的双重值...谢谢你们

this->TurnBody[(int)(kj * COS - ki * SIN) + this->radius + ((int)(ki * COS + kj * SIN) + this->radius) * 2 * this->radius] = this->Body[i * 2 * this->radius + j];

【问题讨论】:

我有一个方形图像,中心小图像周围有许多黑色像素,我不能超出范围,srsly 【参考方案1】:

我认为这是错误的:

TurnBody[static_cast<int>(kj * COS - ki * SIN + radius + (ki * COS + kj * SIN + radius) * 2 * radius)] = Body[i * 2 * radius + j];

我觉得应该更像这样:

TurnBody[(int)(kj * COS) + radius + ((int)(kj * SIN) + radius) * 2*radius] = Body[i * 2 * radius + j];

【讨论】:

不,只是试着计算一下。它永远只是一条线。 但我尝试使用 (int) 2 次而不是 static_cast 1 次,然后我的算法开始工作 OMG 谢谢你,但我认为我不需要你的答案,因为这是错误的 this->TurnBody[(int)(kj * COS - ki * SIN) + this->radius + ((int)(ki * COS + kj * SIN) + this->radius) * 2 * this->radius] = this->body[i * 2 * this->radius + j];现在这项工作

以上是关于我的图像翻转算法做错了啥?的主要内容,如果未能解决你的问题,请参考以下文章

find() STL 算法...我做错了啥?

用 C++ 中的 AKS 素性测试计算孪生素数我做错了啥?

协议和代表不起作用..我做错了啥?

我在我的代码中做错了啥?

我的 Django 网站正在加载我的静态 (CSS) 文件,但它们没有显示出来。我错过了啥或做错了啥?

我在我的 Angular HTML 模板中做错了啥? [复制]