Hi all
I have an assignment to make my own rotation method for rotating an image around a point using. Problem is, I’m completely clueless and haven’t been able to find anything helpful.
I’m supposed to have the following input: a grayscale image, an angle, x and y coordinates for the point.
So far, I have made the code that allocate the space needed for the rotated image. But I can’t figure out how to rotate it
//Stuff about the angle
int angle = 90;
float radians = (2*pi*angle)/360;
float sine = sin(radians);
float cosine = cos(radians);
inputImg.loadImage("images/bikers.jpg");
colorImg.allocate(inputImg.getWidth(), inputImg.getHeight());
colorImg.setFromPixels(inputImg.getPixels(), inputImg.getWidth(), inputImg.getHeight());
grayImg.allocate(inputImg.getWidth(), inputImg.getHeight());
grayImg = colorImg;
//Calculate the size of the rotated image canvas
//point0 is already known (0,0)
float point1x = inputImg.getWidth() * cosine;
float point1y = inputImg.getWidth() * sine;
float point2x = -inputImg.getHeight() * sine;
float point2y = inputImg.getHeight() * cosine;
float point3x = inputImg.getWidth() * cosine - inputImg.getHeight() * sine;
float point3y = inputImg.getWidth() * sine + inputImg.getHeight() * cosine;
float minx = min(0 , min(point1x , min(point2x , point3x)));
float miny = min(0 , min(point1y , min(point2y , point3y)));
float maxx = max(point1x , max(point2x , point3x));
float maxy = max(point1y , max(point2y , point3y));
int rotWidth = floor(fabs(maxx) - minx);
int rotHeight = floor(fabs(maxy) - miny);
rotatedImg.allocate(rotWidth, rotHeight);
unsigned char* pixels = grayImg.getPixels();
//Actually rotate the image
for(int y = 0; y < rotHeight; y++)
{
for(int x = 0; x < rotWidth; x++)
{
//WHAT TO DO HERE?
}
}
Any ideas to get me in the right direction?