Subversion Repositories AndroidProjects

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
204 chris 1
/*******************************************************
2
 *
3
 * Author: Takeshi Mita, Shinsaku Hiura, Hirokazu Kato
4
 *
5
 *         tmita@inolab.sys.es.osaka-u.ac.jp
6
 *         shinsaku@sys.es.osaka-u.ac.jp
7
 *         kato@sys.im.hiroshima-cu.ac.jp
8
 *
9
 * Revision: 4.1
10
 * Date: 01/12/07
11
 *
12
*******************************************************/
13
 
14
#include <stdio.h>
15
#include <math.h>
16
#include <AR/param.h>
17
 
18
 
19
int arParamChangeSize( ARParam *source, int xsize, int ysize, ARParam *newparam )
20
{
21
    double  scale;
22
    int     i;
23
 
24
    newparam->xsize = xsize;
25
    newparam->ysize = ysize;
26
 
27
    scale = (double)xsize / (double)(source->xsize);
28
    for( i = 0; i < 4; i++ ) {
29
        newparam->mat[0][i] = source->mat[0][i] * scale;
30
        newparam->mat[1][i] = source->mat[1][i] * scale;
31
        newparam->mat[2][i] = source->mat[2][i];
32
    }
33
 
34
    newparam->dist_factor[0] = source->dist_factor[0] * scale;
35
    newparam->dist_factor[1] = source->dist_factor[1] * scale;
36
    newparam->dist_factor[2] = source->dist_factor[2] / (scale*scale);
37
    newparam->dist_factor[3] = source->dist_factor[3];
38
 
39
    return 0;
40
}
41
 
42
int arsParamChangeSize( ARSParam *source, int xsize, int ysize, ARSParam *newparam )
43
{
44
    double  scale;
45
    int     i;
46
 
47
    newparam->xsize = xsize;
48
    newparam->ysize = ysize;
49
 
50
    scale = (double)xsize / (double)(source->xsize);
51
    for( i = 0; i < 4; i++ ) {
52
        newparam->matL[0][i] = source->matL[0][i] * scale;
53
        newparam->matL[1][i] = source->matL[1][i] * scale;
54
        newparam->matL[2][i] = source->matL[2][i];
55
    }
56
    for( i = 0; i < 4; i++ ) {
57
        newparam->matR[0][i] = source->matR[0][i] * scale;
58
        newparam->matR[1][i] = source->matR[1][i] * scale;
59
        newparam->matR[2][i] = source->matR[2][i];
60
    }
61
    for( i = 0; i < 4; i++ ) {
62
        newparam->matL2R[0][i] = source->matL2R[0][i];
63
        newparam->matL2R[1][i] = source->matL2R[1][i];
64
        newparam->matL2R[2][i] = source->matL2R[2][i];
65
    }
66
 
67
    newparam->dist_factorL[0] = source->dist_factorL[0] * scale;
68
    newparam->dist_factorL[1] = source->dist_factorL[1] * scale;
69
    newparam->dist_factorL[2] = source->dist_factorL[2] / (scale*scale);
70
    newparam->dist_factorL[3] = source->dist_factorL[3];
71
 
72
    newparam->dist_factorR[0] = source->dist_factorR[0] * scale;
73
    newparam->dist_factorR[1] = source->dist_factorR[1] * scale;
74
    newparam->dist_factorR[2] = source->dist_factorR[2] / (scale*scale);
75
    newparam->dist_factorR[3] = source->dist_factorR[3];
76
 
77
    return 0;
78
}