From 94911960d6d06e3b1a2c22dcdb10e8f53744b5d0 Mon Sep 17 00:00:00 2001 From: Justin Berger Date: Thu, 5 Jul 2018 11:03:12 -0600 Subject: Fixed build on windows --- redist/linmath.c | 26 ++++++++++++++++++-------- src/poser_general_optimizer.c | 4 ++-- src/survive_driverman.c | 4 ++++ src/survive_playback.c | 2 +- 4 files changed, 25 insertions(+), 11 deletions(-) diff --git a/redist/linmath.c b/redist/linmath.c index 7d21e5c..19b792f 100644 --- a/redist/linmath.c +++ b/redist/linmath.c @@ -649,20 +649,20 @@ void KabschCentered(LinmathQuat qout, const FLT *ptsA, const FLT *ptsB, int num_ CvMat A = cvMat(num_pts, 3, CV_64F, (FLT *)ptsA); CvMat B = cvMat(num_pts, 3, CV_64F, (FLT *)ptsB); - double _C[9] = {}; + double _C[9] = { 0 }; CvMat C = cvMat(3, 3, CV_64F, _C); cvGEMM(&B, &A, 1, 0, 0, &C, GEMM_1_T); - double _U[9] = {}; - double _W[9] = {}; - double _VT[9] = {}; + double _U[9] = { 0 }; + double _W[9] = { 0 }; + double _VT[9] = { 0 }; CvMat U = cvMat(3, 3, CV_64F, _U); CvMat W = cvMat(3, 3, CV_64F, _W); CvMat VT = cvMat(3, 3, CV_64F, _VT); cvSVD(&C, &W, &U, &VT, CV_SVD_V_T | CV_SVD_MODIFY_A); - double _R[9] = {}; + double _R[9] = { 0 }; CvMat R = cvMat(3, 3, CV_64F, _R); cvGEMM(&U, &VT, 1, 0, 0, &R, 0); @@ -678,8 +678,8 @@ void KabschCentered(LinmathQuat qout, const FLT *ptsA, const FLT *ptsB, int num_ } LINMATH_EXPORT void Kabsch(LinmathPose *B2Atx, const FLT *_ptsA, const FLT *_ptsB, int num_pts) { - FLT centerA[3] = {}; - FLT centerB[3] = {}; + FLT centerA[3] = { 0 }; + FLT centerB[3] = { 0 }; for (int i = 0; i < num_pts; i++) { for (int j = 0; j < 3; j++) { @@ -693,9 +693,13 @@ LINMATH_EXPORT void Kabsch(LinmathPose *B2Atx, const FLT *_ptsA, const FLT *_pts centerB[j] = centerB[j] / (FLT)num_pts; } +#ifndef _WIN32 FLT ptsA[num_pts * 3]; FLT ptsB[num_pts * 3]; - +#else + FLT* ptsA = malloc(num_pts * 3 * sizeof(FLT)); + FLT* ptsB = malloc(num_pts * 3 * sizeof(FLT)); +#endif for (int i = 0; i < num_pts; i++) { for (int j = 0; j < 3; j++) { ptsA[i * 3 + j] = _ptsA[i * 3 + j] - centerA[j]; @@ -706,6 +710,12 @@ LINMATH_EXPORT void Kabsch(LinmathPose *B2Atx, const FLT *_ptsA, const FLT *_pts KabschCentered(B2Atx->Rot, ptsA, ptsB, num_pts); quatrotatevector(centerA, B2Atx->Rot, centerA); sub3d(B2Atx->Pos, centerB, centerA); + + +#ifdef _WIN32 + free(ptsA); + free(ptsB); +#endif } LinmathQuat LinmathQuat_Identity = {1.0}; diff --git a/src/poser_general_optimizer.c b/src/poser_general_optimizer.c index 6f181a3..4894ce8 100644 --- a/src/poser_general_optimizer.c +++ b/src/poser_general_optimizer.c @@ -7,7 +7,7 @@ STATIC_CONFIG_ITEM( CONFIG_MAX_ERROR, "max-error", 'f', "Maximum error permitted by poser_general_optimizer", .0001 ); STATIC_CONFIG_ITEM( CONFIG_FAIL_TO_RESET, "failures-to-reset", 'i', "Failures needed before seed poser is re-run", 1 ); -STATIC_CONFIG_ITEM( CONFIG_SUC_TO_RESET, "successes-to-reset", 'i', "[TODO: I don't know what this does]", -1 ); +STATIC_CONFIG_ITEM( CONFIG_SUC_TO_RESET, "successes-to-reset", 'i', "Reset periodically even if there were no failures", -1 ); STATIC_CONFIG_ITEM( CONFIG_SEED_POSER, "seed-poser", 's', "Poser to be used to seed optimizer", "PoserEPNP" ); void *GetDriver(const char *name); @@ -21,7 +21,7 @@ void general_optimizer_data_init(GeneralOptimizerData *d, SurviveObject *so) { survive_attach_configi( ctx, "failures-to-reset", &d->failures_to_reset ); survive_attach_configi( ctx, "successes-to-reset", &d->successes_to_reset ); - const char *subposer = survive_configs(ctx, "seed-poser", SC_GET, 0 ); + const char *subposer = survive_configs(ctx, "seed-poser", SC_GET, "PoserEPNP"); d->seed_poser = (PoserCB)GetDriver(subposer); SV_INFO("Initializing general optimizer:"); diff --git a/src/survive_driverman.c b/src/survive_driverman.c index c43e8ec..71a4c10 100644 --- a/src/survive_driverman.c +++ b/src/survive_driverman.c @@ -19,6 +19,10 @@ void RegisterDriver(const char *element, void *data) { void *GetDriver(const char *element) { int i; + + if (element == 0) + return 0; + for (i = 0; i < NrDrivers; i++) { if (strcmp(element, DriverNames[i]) == 0) return Drivers[i]; diff --git a/src/survive_playback.c b/src/survive_playback.c index c616aea..ab5a4c2 100644 --- a/src/survive_playback.c +++ b/src/survive_playback.c @@ -187,7 +187,7 @@ typedef struct SurvivePlaybackData SurvivePlaybackData; static int parse_and_run_imu(const char *line, SurvivePlaybackData *driver) { char dev[10]; int timecode = 0; - FLT accelgyro[9] = {}; + FLT accelgyro[9] = { 0 }; int mask; int id; -- cgit v1.2.3