Algorithmus Rotation von Bildern

JabbaTehHut24

Grünschnabel
Hi ich müsste ein Bild um den Mittelpunkt drehen, erstmal um 90°

ich habe hier diesen C / C++ code

Code:
template <typename T>
void rotate(T* din, T* dout, unsigned sx, unsigned sy, double w)
{
    for (unsigned i = 0; i < sy; ++i)
    {
        for (unsigned j = 0; j < sx; ++j)
        {
            signed rx = (signed)((double)j*cos(w) - (double)i*sin(w));
            signed ry = (signed)((double)j*sin(w) + (double)i*cos(w));
            if (rx < 0 || ry < 0 || rx >= sx || ry >= sy)
                continue;
            dout[i*sx + j] = din[ry*sx + rx];
        }
    }
    return;
}

allerdings versteh ich die Zeile
dout[i*sx + j] = din[ry*sx + rx];
nicht.

In meinem Bild sind die Pixel in einem zweidimensionalem Array gespeichert.
Pixels[columns][rows]
Pixelwerte sind als Integer gespeichert.

kann mir jemand hierbei helfen?
 
Du kannst dir ein zwei-Dimmensionales Array im Speicher so vorstellen, das alle Zeilen hintereinandergehängt gespeichert werden. Dadurch kannst du auch linear durchlaufen.
 
Zurück