From: <dk...@us...> - 2009-07-02 08:24:42
|
Revision: 999 http://panotools.svn.sourceforge.net/panotools/?rev=999&view=rev Author: dkg5 Date: 2009-07-02 08:24:41 +0000 (Thu, 02 Jul 2009) Log Message: ----------- Changed vert. shift function to apply slant matrix - BROKEN at the moment Modified Paths: -------------- branches/libpano_gsoc2009_mosaic/PTcommon.c branches/libpano_gsoc2009_mosaic/adjust.c branches/libpano_gsoc2009_mosaic/math.c Modified: branches/libpano_gsoc2009_mosaic/PTcommon.c =================================================================== --- branches/libpano_gsoc2009_mosaic/PTcommon.c 2009-06-23 07:29:56 UTC (rev 998) +++ branches/libpano_gsoc2009_mosaic/PTcommon.c 2009-07-02 08:24:41 UTC (rev 999) @@ -584,6 +584,9 @@ fullPath * panoFileName, fullPath * scriptFileName) { + // Dev: + printf( "Entered panoCreatePanorama function in PTcommon.c\n"); + Image *currentImagePtr; aPrefs *prefs; int var01; Modified: branches/libpano_gsoc2009_mosaic/adjust.c =================================================================== --- branches/libpano_gsoc2009_mosaic/adjust.c 2009-06-23 07:29:56 UTC (rev 998) +++ branches/libpano_gsoc2009_mosaic/adjust.c 2009-07-02 08:24:41 UTC (rev 999) @@ -930,6 +930,7 @@ SetDesc( stack[i], rotate_erect, mp->rot ); i++; // Rotate equirect. image horizontally SetDesc( stack[i], sphere_tp_erect, &(mp->distance) ); i++; // Convert spherical image to equirect. SetDesc( stack[i], persp_sphere, mp->perspect ); i++; // Perspective Control spherical Image + // } else { // need to transform via the plane // SetDesc( stack[i], plane_transfer_erect, &(mp->planetransfer) ); i++; // transfrom erect into sphere_tp required by code below Modified: branches/libpano_gsoc2009_mosaic/math.c =================================================================== --- branches/libpano_gsoc2009_mosaic/math.c 2009-06-23 07:29:56 UTC (rev 998) +++ branches/libpano_gsoc2009_mosaic/math.c 2009-07-02 08:24:41 UTC (rev 999) @@ -284,7 +284,7 @@ while( (stack->func) != NULL ) { if ( (stack->func) ( xd, yd, x_src, y_src, stack->param ) ) { - // printf("Execute stack %f %f %f %f\n", xd, yd, *x_src, *y_src); + //printf("Execute stack %f %f %f %f\n", xd, yd, *x_src, *y_src); xd = *x_src; yd = *y_src; stack++; @@ -296,6 +296,7 @@ } + // For all transformation // Rotate equirectangular image @@ -412,15 +413,57 @@ return 1; } +// Dev: commented out existing vert function and will replace with my own +// ==============BEGIN ORGINAL VERT() FUNCTION +//int vert( double x_dest, double y_dest, double* x_src, double* y_src, void* params) +//{ +// // params: double vertical shift +// +// *x_src = x_dest; +// *y_src = y_dest + shift; +// +// printf( "Entered vert function \n"); +// return 1; +//} +// ==============END ORIGINAL VERT() FUNCTION + +// Dev: Attempt to create new stack function. Will replace existing vert function +// with a new function that will multiply coordinates by slanting matrix +// ************** THIS IS THE SLANT FUNCTION ************************* int vert( double x_dest, double y_dest, double* x_src, double* y_src, void* params) { - // params: double vertical shift - - *x_src = x_dest; - *y_src = y_dest + shift; + + printf( "Entered vert function \n"); + // params: double + double theta = 0.523599; // 30 degrees in radians + double v[3]; // 3D projective coordinate vector + double m_slant[3][3]; // slant matrix + +// m_slant[0][0] = 1; m_slant[0][1] = 0; m_slant[0][2] = 0; +// m_slant[1][0] = 0; m_slant[1][1] = 1/cos(theta); m_slant[1][2] = 0; +// m_slant[2][0] = 0; m_slant[2][1] = sin(theta)/cos(theta); m_slant[2][2] = 1; + + + // temporary testing matrix: + m_slant[0][0] = 1; m_slant[0][1] = 0; m_slant[0][2] = 0; + m_slant[1][0] = 0; m_slant[1][1] = 1; m_slant[1][2] = 0; + m_slant[2][0] = 0; m_slant[2][1] = 0; m_slant[2][2] = 1; + + + + v[0] = x_dest; + v[1] = y_dest; + v[2] = 1; // convert to projective coordinate + // assume z to be 1 for now + + + matrix_mult( m_slant, v ); + *x_src = v[0]/v[2]; // convert back to cartesian coordinates + *y_src = v[1]/v[2]; return 1; } + int radial( double x_dest, double y_dest, double* x_src, double* y_src, void* params) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |