void Problem_1_C() { Image imTransformer, imTransformerWarped; int iRows = 500, iCols = 500; string strNames[2] = {"transformmer.raw","transformer_warped.raw"}; InitImage(&imTransformer,strNames[0],iRows,iCols,3); InitImage(&imTransformerWarped,strNames[1],iRows,iCols,3); imTransformer.ReadImageData(); imTransformerWarped.FillColor(0); //Quadrant 1 //Forward Method //for(int i = 0;i<500;i++) //{ // for(int j = 0;j<500;j++) // { // Point ptP((double)i/499,(double)j/499); // ptP.Cart2Pol(0.499,0.499); // // double dOpRad = 0.499; // double dIpRad = ptP.FindDistanceFromSq(); // double dScaleFactor = 0.499/dIpRad; // // Point ptPOut; // ptPOut.iRad = dScaleFactor*ptP.iRad; // ptPOut.iTheta = ptP.iTheta; // // ptPOut.Pol2Cart(0.499,0.499); // // if(ptPOut.iRad > 0.500) // continue; // //cout<<"\ni: "<<i<<" j: "<<j; // imTransformerWarped.SetPixel(ptPOut.iX*499,ptPOut.iY*499,*imTransformer.GetPixel(i,j)); // } //} //Reverse Method for(double i = 0;i<0.5;i +=0.002) { for(double d = 0;d<360.00;d += 0.1) { Point ptP; ptP.iRad = i; ptP.iTheta = d; ptP.Pol2Cart(0.5,0.5); double dOpRad = 0.5; double dIpRad = ptP.FindDistanceFromSq(); double dScaleFactor = dOpRad/dIpRad; Point ptPIP; ptPIP.iRad = (1/dScaleFactor)*i; ptPIP.iTheta = ptP.iTheta; ptPIP.Pol2Cart(0.5,0.5); imTransformerWarped.SetPixel(ptP.iX*499,ptP.iY*499,*imTransformer.GetPixel(ptPIP.iX*499,ptPIP.iY*499)); } } imTransformerWarped.WriteImageData(); cout<<"\nPress 'C' to continue"; getch(); }