From 0ab91a6e9374f190c049a5d8ea1319b9b37529c1 Mon Sep 17 00:00:00 2001 From: cnlohr Date: Sun, 15 Apr 2018 17:43:12 -0400 Subject: Move things into attic and update Makefile to do dependnencies. --- dave/AffineSolve.c | 783 ----------------------------------------------------- 1 file changed, 783 deletions(-) delete mode 100644 dave/AffineSolve.c (limited to 'dave/AffineSolve.c') diff --git a/dave/AffineSolve.c b/dave/AffineSolve.c deleted file mode 100644 index 685062e..0000000 --- a/dave/AffineSolve.c +++ /dev/null @@ -1,783 +0,0 @@ -// -// main.c -// Aff -// Created by user on 3/2/17. -// Copyright © 2017 user. All rights reserved. -// - -#include -#include -#include -#include -#include "dclapack.h" -#include -#define RegisterDriver(a,b) -#include "poser_daveortho.c" -#define LH_ID 0 -#define NUM_HMD 32 -#define INDIR "full_test_triangle_on_floor/" - -#define MAX_POINTS SENSORS_PER_OBJECT -//#define _ABS(a) ( (a)<=0 ? -(a) : (a) ) -#define _SIGN(a) ( (a)<=0 ? -1.0f : 1.0f ) -#define RANDF ( (float)rand() / (float)RAND_MAX ) -#define PI 3.14159265358979323846264 - -#define STEP_SIZE_ROT 1.0 -#define STEP_SIZE_POS 1.0 -#define FALLOFF 0.99999 -#define NITER 2000000 -#define TOO_SMALL 0.0001 -#define ORTHOG_PENALTY 1.0 - -float hmd_pos[NUM_HMD][3]; -void ReadHmdPoints() -{ - int i; - FILE *fin = fopen(INDIR "HMD_points.csv","r"); - if (fin==NULL) { - printf("ERROR: could not open HMD_points.csv for reading\n"); - exit(1); - } - - for (i=0; i TOO_SMALL) { - float scaleRot = stepSizeRot / gradSizeRot; - for (j=0; j<3; j++) { - for (k=0; k<3; k++) { - T[j][k] += scaleRot * conj[j][k]; - } - } - stepSizeRot *= falloff; - } - - if (gradSizePos > TOO_SMALL) { - float scalePos = stepSizePos / gradSizePos; - for (j=0; j<3; j++) { - T[j][3] += scalePos * conj[j][3]; - } - stepSizePos *= falloff; - } - - // Constrain the gradient (such that scaling is one) - if (constrain) - { - // Measure the scales - float len[3] = {0.0, 0.0, 0.0}; - for (j=0; j<3; j++) { - double lenSq = 0.0; - for (k=0; k<3; k++) { lenSq += (double)T[j][k] * (double)T[j][k]; } - len[j] = sqrt(lenSq); - } - - // How far off is the scale? - float xzLen = 0.5 * (len[0] + len[2]); - if (xzLen > TOO_SMALL) { - float inv_xzLen = 1.0 / xzLen; - for (j=0; j<3; j++) { - T[3][j] *= inv_xzLen; - } - } - - // Rescale the thing - for (j=0; j<3; j++) - { - if (len[j] > TOO_SMALL) { - float inv_len = 1.0 / len[j]; - for (k=0; k<3; k++) { T[j][k] *= inv_len; } - } - } - } - } - float dist = sqrt(T[0][3]*T[0][3] + T[1][3]*T[1][3] + T[2][3]*T[2][3]); - printf("AffineSolve: pos: %f %f %f dist: %f\n", T[0][3], T[1][3], T[2][3], dist); -} - -int main() -{ - int i,j,k,sen,axis; - - // Read the data files - ReadHmdPoints(); - ReadPtinfo(); - - //------------------------- - // Package the lighthouse data for "AffineSolve" - //------------------------- - - // Data for the "iterative" affine solve formula - float Tcalc[4][4]; - float O[MAX_POINTS][4]; - float N[MAX_POINTS][3]; - float D[MAX_POINTS]; - int nPlanes = 0; - - for (sen=0; sen 0 && err < bestErr) { x[1][0]=x_y; y[1][0]=y_y; z[1][0]=z_y; bestErr=err; } - if ( i == 0 && j == 1 && k == 0) { x[1][0]=x_y; y[1][0]=y_y; z[1][0]=z_y; bestErr=err; } - z_y = -z_y; - } - y_y = -y_y; - } - x_y = -x_y; - } - printf("bestErr %f\n", bestErr); -*/ - - //------------------------- - // A test version of the rescaling to the proper length - //------------------------- - FLOAT ydist2; - FLOAT bestBestErr = 9999.0; - FLOAT bestYdist = 0; - for (ydist2=ydist-0.1; ydist2 0 && err < bestErr) { x2[1][0]=x_y; y2[1][0]=y_y; z2[1][0]=z_y; bestErr=err; } - z_y = -z_y; - } - y_y = -y_y; - } - x_y = -x_y; - } - printf("ydist2 %f bestErr %f\n",ydist2,bestErr); - - if (bestErr < bestBestErr) { - memcpy(x,x2,3*sizeof(FLOAT)); - memcpy(y,y2,3*sizeof(FLOAT)); - memcpy(z,z2,3*sizeof(FLOAT)); - bestBestErr = bestErr; - bestYdist = ydist2; - } - } - ydist = bestYdist; - -/* - for (i=0; i