Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/tags/Version Original/ARToolkit/lib/SRC/AR/arGetTransMat2.c
diff options
context:
space:
mode:
Diffstat (limited to 'tags/Version Original/ARToolkit/lib/SRC/AR/arGetTransMat2.c')
-rwxr-xr-xtags/Version Original/ARToolkit/lib/SRC/AR/arGetTransMat2.c187
1 files changed, 0 insertions, 187 deletions
diff --git a/tags/Version Original/ARToolkit/lib/SRC/AR/arGetTransMat2.c b/tags/Version Original/ARToolkit/lib/SRC/AR/arGetTransMat2.c
deleted file mode 100755
index 90bcaee..0000000
--- a/tags/Version Original/ARToolkit/lib/SRC/AR/arGetTransMat2.c
+++ /dev/null
@@ -1,187 +0,0 @@
-/*******************************************************
- *
- * Author: Hirokazu Kato
- *
- * kato@sys.im.hiroshima-cu.ac.jp
- *
- * Revision: 3.1
- * Date: 01/12/07
- *
-*******************************************************/
-#include <stdlib.h>
-#include <math.h>
-#include <AR/ar.h>
-#include <AR/matrix.h>
-
-#define MD_PI 3.14159265358979323846
-
-double arModifyMatrix( double rot[3][3], double trans[3], double cpara[3][4],
- double vertex[][3], double pos2d[][2], int num )
-{
- double factor;
- double a, b, c;
- double a1, b1, c1;
- double a2, b2, c2;
- double ma = 0.0, mb = 0.0, mc = 0.0;
- double combo[3][4];
- double hx, hy, h, x, y;
- double err, minerr;
- int t1, t2, t3;
- int s1 = 0, s2 = 0, s3 = 0;
- int i, j;
-
- arGetAngle( rot, &a, &b, &c );
-
- a2 = a;
- b2 = b;
- c2 = c;
- factor = 10.0*MD_PI/180.0;
- for( j = 0; j < 10; j++ ) {
- minerr = 1000000000.0;
- for(t1=-1;t1<=1;t1++) {
- for(t2=-1;t2<=1;t2++) {
- for(t3=-1;t3<=1;t3++) {
- a1 = a2 + factor*t1;
- b1 = b2 + factor*t2;
- c1 = c2 + factor*t3;
- arGetNewMatrix( a1, b1, c1, trans, NULL, cpara, combo );
-
- err = 0.0;
- for( i = 0; i < num; i++ ) {
- hx = combo[0][0] * vertex[i][0]
- + combo[0][1] * vertex[i][1]
- + combo[0][2] * vertex[i][2]
- + combo[0][3];
- hy = combo[1][0] * vertex[i][0]
- + combo[1][1] * vertex[i][1]
- + combo[1][2] * vertex[i][2]
- + combo[1][3];
- h = combo[2][0] * vertex[i][0]
- + combo[2][1] * vertex[i][1]
- + combo[2][2] * vertex[i][2]
- + combo[2][3];
- x = hx / h;
- y = hy / h;
-
- err += (pos2d[i][0] - x) * (pos2d[i][0] - x)
- + (pos2d[i][1] - y) * (pos2d[i][1] - y);
- }
-
- if( err < minerr ) {
- minerr = err;
- ma = a1;
- mb = b1;
- mc = c1;
- s1 = t1; s2 = t2; s3 = t3;
- }
- }
- }
- }
-
- if( s1 == 0 && s2 == 0 && s3 == 0 ) factor *= 0.5;
- a2 = ma;
- b2 = mb;
- c2 = mc;
- }
-
- arGetRot( ma, mb, mc, rot );
-
-/* printf("factor = %10.5f\n", factor*180.0/MD_PI); */
-
- return minerr/num;
-}
-
-double arsModifyMatrix( double rot[3][3], double trans[3], ARSParam *arsParam,
- double pos3dL[][3], double pos2dL[][2], int numL,
- double pos3dR[][3], double pos2dR[][2], int numR )
-{
- double factor;
- double a, b, c;
- double a1, b1, c1;
- double a2, b2, c2;
- double ma = 0.0, mb = 0.0, mc = 0.0;
- double combo[3][4];
- double hx, hy, h, x, y;
- double err, minerr;
- int t1, t2, t3;
- int s1 = 0, s2 = 0, s3 = 0;
- int i, j;
-
- arGetAngle( rot, &a, &b, &c );
-
- a2 = a;
- b2 = b;
- c2 = c;
- factor = 10.0*MD_PI/180.0;
- for( j = 0; j < 10; j++ ) {
- minerr = 1000000000.0;
- for(t1=-1;t1<=1;t1++) {
- for(t2=-1;t2<=1;t2++) {
- for(t3=-1;t3<=1;t3++) {
- a1 = a2 + factor*t1;
- b1 = b2 + factor*t2;
- c1 = c2 + factor*t3;
- err = 0.0;
-
- arGetNewMatrix( a1, b1, c1, trans, NULL, arsParam->matL, combo );
- for( i = 0; i < numL; i++ ) {
- hx = combo[0][0] * pos3dL[i][0]
- + combo[0][1] * pos3dL[i][1]
- + combo[0][2] * pos3dL[i][2]
- + combo[0][3];
- hy = combo[1][0] * pos3dL[i][0]
- + combo[1][1] * pos3dL[i][1]
- + combo[1][2] * pos3dL[i][2]
- + combo[1][3];
- h = combo[2][0] * pos3dL[i][0]
- + combo[2][1] * pos3dL[i][1]
- + combo[2][2] * pos3dL[i][2]
- + combo[2][3];
- x = hx / h;
- y = hy / h;
- err += (pos2dL[i][0] - x) * (pos2dL[i][0] - x)
- + (pos2dL[i][1] - y) * (pos2dL[i][1] - y);
- }
-
- arGetNewMatrix( a1, b1, c1, trans, arsParam->matL2R, arsParam->matR, combo );
- for( i = 0; i < numR; i++ ) {
- hx = combo[0][0] * pos3dR[i][0]
- + combo[0][1] * pos3dR[i][1]
- + combo[0][2] * pos3dR[i][2]
- + combo[0][3];
- hy = combo[1][0] * pos3dR[i][0]
- + combo[1][1] * pos3dR[i][1]
- + combo[1][2] * pos3dR[i][2]
- + combo[1][3];
- h = combo[2][0] * pos3dR[i][0]
- + combo[2][1] * pos3dR[i][1]
- + combo[2][2] * pos3dR[i][2]
- + combo[2][3];
- x = hx / h;
- y = hy / h;
-
- err += (pos2dR[i][0] - x) * (pos2dR[i][0] - x)
- + (pos2dR[i][1] - y) * (pos2dR[i][1] - y);
- }
-
- if( err < minerr ) {
- minerr = err;
- ma = a1;
- mb = b1;
- mc = c1;
- s1 = t1; s2 = t2; s3 = t3;
- }
- }
- }
- }
-
- if( s1 == 0 && s2 == 0 && s3 == 0 ) factor *= 0.5;
- a2 = ma;
- b2 = mb;
- c2 = mc;
- }
-
- arGetRot( ma, mb, mc, rot );
-
- return minerr / (numL+numR);
-}