Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/tags/Version Original/ARToolkit/lib/SRC/AR/paramDecomp.c
diff options
context:
space:
mode:
Diffstat (limited to 'tags/Version Original/ARToolkit/lib/SRC/AR/paramDecomp.c')
-rwxr-xr-xtags/Version Original/ARToolkit/lib/SRC/AR/paramDecomp.c160
1 files changed, 0 insertions, 160 deletions
diff --git a/tags/Version Original/ARToolkit/lib/SRC/AR/paramDecomp.c b/tags/Version Original/ARToolkit/lib/SRC/AR/paramDecomp.c
deleted file mode 100755
index cc0d8e9..0000000
--- a/tags/Version Original/ARToolkit/lib/SRC/AR/paramDecomp.c
+++ /dev/null
@@ -1,160 +0,0 @@
-/*******************************************************
- *
- * Author: Takeshi Mita, Shinsaku Hiura, Hirokazu Kato
- *
- * tmita@inolab.sys.es.osaka-u.ac.jp
- * shinsaku@sys.es.osaka-u.ac.jp
- * kato@sys.im.hiroshima-cu.ac.jp
- *
- * Revision: 4.1
- * Date: 01/12/07
- *
-*******************************************************/
-
-#include <stdio.h>
-#include <math.h>
-#include <AR/param.h>
-#include <AR/matrix.h>
-
-static double norm( double a, double b, double c );
-static double dot( double a1, double a2, double a3,
- double b1, double b2, double b3 );
-
-int arParamDecomp( ARParam *source, ARParam *icpara, double trans[3][4] )
-{
- icpara->xsize = source->xsize;
- icpara->ysize = source->ysize;
- icpara->dist_factor[0] = source->dist_factor[0];
- icpara->dist_factor[1] = source->dist_factor[1];
- icpara->dist_factor[2] = source->dist_factor[2];
- icpara->dist_factor[3] = source->dist_factor[3];
-
- return arParamDecompMat( source->mat, icpara->mat, trans );
-}
-
-int arParamDecompMat( double source[3][4], double cpara[3][4], double trans[3][4] )
-{
- int r, c;
- double Cpara[3][4];
- double rem1, rem2, rem3;
-
- if( source[2][3] >= 0 ) {
- for( r = 0; r < 3; r++ ){
- for( c = 0; c < 4; c++ ){
- Cpara[r][c] = source[r][c];
- }
- }
- }
- else {
- for( r = 0; r < 3; r++ ){
- for( c = 0; c < 4; c++ ){
- Cpara[r][c] = -(source[r][c]);
- }
- }
- }
-
- for( r = 0; r < 3; r++ ){
- for( c = 0; c < 4; c++ ){
- cpara[r][c] = 0.0;
- }
- }
- cpara[2][2] = norm( Cpara[2][0], Cpara[2][1], Cpara[2][2] );
- trans[2][0] = Cpara[2][0] / cpara[2][2];
- trans[2][1] = Cpara[2][1] / cpara[2][2];
- trans[2][2] = Cpara[2][2] / cpara[2][2];
- trans[2][3] = Cpara[2][3] / cpara[2][2];
-
- cpara[1][2] = dot( trans[2][0], trans[2][1], trans[2][2],
- Cpara[1][0], Cpara[1][1], Cpara[1][2] );
- rem1 = Cpara[1][0] - cpara[1][2] * trans[2][0];
- rem2 = Cpara[1][1] - cpara[1][2] * trans[2][1];
- rem3 = Cpara[1][2] - cpara[1][2] * trans[2][2];
- cpara[1][1] = norm( rem1, rem2, rem3 );
- trans[1][0] = rem1 / cpara[1][1];
- trans[1][1] = rem2 / cpara[1][1];
- trans[1][2] = rem3 / cpara[1][1];
-
- cpara[0][2] = dot( trans[2][0], trans[2][1], trans[2][2],
- Cpara[0][0], Cpara[0][1], Cpara[0][2] );
- cpara[0][1] = dot( trans[1][0], trans[1][1], trans[1][2],
- Cpara[0][0], Cpara[0][1], Cpara[0][2] );
- rem1 = Cpara[0][0] - cpara[0][1]*trans[1][0] - cpara[0][2]*trans[2][0];
- rem2 = Cpara[0][1] - cpara[0][1]*trans[1][1] - cpara[0][2]*trans[2][1];
- rem3 = Cpara[0][2] - cpara[0][1]*trans[1][2] - cpara[0][2]*trans[2][2];
- cpara[0][0] = norm( rem1, rem2, rem3 );
- trans[0][0] = rem1 / cpara[0][0];
- trans[0][1] = rem2 / cpara[0][0];
- trans[0][2] = rem3 / cpara[0][0];
-
- trans[1][3] = (Cpara[1][3] - cpara[1][2]*trans[2][3]) / cpara[1][1];
- trans[0][3] = (Cpara[0][3] - cpara[0][1]*trans[1][3]
- - cpara[0][2]*trans[2][3]) / cpara[0][0];
-
- for( r = 0; r < 3; r++ ){
- for( c = 0; c < 3; c++ ){
- cpara[r][c] /= cpara[2][2];
- }
- }
-
- return 0;
-}
-
-int arsParamGetMat( double matL[3][4], double matR[3][4],
- double cparaL[3][4], double cparaR[3][4], double matL2R[3][4] )
-{
- ARMat *t1, *t2, *t3;
- double transL[3][4], transR[3][4];
- int i, j;
-
- arParamDecompMat( matL, cparaL, transL );
- arParamDecompMat( matR, cparaR, transR );
-
- t1 = arMatrixAlloc( 4, 4 );
- t2 = arMatrixAlloc( 4, 4 );
- for( j = 0; j < 3; j++ ) {
- for( i = 0; i < 4; i++ ) {
- t1->m[j*4+i] = transL[j][i];
- t2->m[j*4+i] = transR[j][i];
- }
- }
- t1->m[12] = t1->m[13] = t1->m[14] = 0.0;
- t1->m[15] = 1.0;
- t2->m[12] = t2->m[13] = t2->m[14] = 0.0;
- t2->m[15] = 1.0;
-
- if( arMatrixSelfInv(t1) != 0 ) {
- arMatrixFree( t1 );
- arMatrixFree( t2 );
- return -1;
- }
- t3 = arMatrixAllocMul(t2, t1);
- if( t3 == NULL ) {
- arMatrixFree( t1 );
- arMatrixFree( t2 );
- return -1;
- }
-
- for( j = 0; j < 3; j++ ) {
- for( i = 0; i < 4; i++ ) {
- matL2R[j][i] = t3->m[j*4+i];
- }
- }
-
- arMatrixFree( t1 );
- arMatrixFree( t2 );
- arMatrixFree( t3 );
-
- return 0;
-}
-
-
-static double norm( double a, double b, double c )
-{
- return( sqrt( a*a + b*b + c*c ) );
-}
-
-static double dot( double a1, double a2, double a3,
- double b1, double b2, double b3 )
-{
- return( a1 * b1 + a2 * b2 + a3 * b3 );
-}