#include "pull.h"
#include "privatePull.h"
Defines | |
#define | NORMALIZE(dir, grad, len) |
#define | PROBE(v, av, g) |
#define | SAVE(state, aval, val, grad, pos) |
#define | RESTORE(aval, val, grad, pos, state) |
#define | PROBE(l) |
#define | PROBEG(l, g) |
#define | MODEWARP(m, p) |
#define | MODENAVG(pnt, m) |
#define | PROBE(height, grad, hess, proj) |
#define | SAVE(state, height, grad, hess, proj, pos) |
#define | RESTORE(height, grad, hess, proj, pos, state) |
#define | NORM(d1, d2, pdir, plen, pgrad, grad, hess, proj) |
Functions | |
static int | constraintSatIso (pullTask *task, pullPoint *point, double stepMax, unsigned int iterMax, int *constrFailP) |
static int | constraintSatLapl (pullTask *task, pullPoint *point, double stepMax, unsigned int iterMax, int *constrFailP) |
static int | probeHeight (pullTask *task, pullPoint *point, double *heightP, double grad[3], double hess[9]) |
static void | creaseProj (pullTask *task, pullPoint *point, int tang2Use, int modeUse, double proj[9]) |
static int | constraintSatHght (pullTask *task, pullPoint *point, int tang2Use, int modeUse, double stepMax, unsigned int iterMax, int *constrFailP) |
int | _pullConstraintSatisfy (pullTask *task, pullPoint *point, int *constrFailP) |
void | _pullConstraintTangent (pullTask *task, pullPoint *point, double proj[9]) |
#define MODENAVG | ( | pnt, | |||
m | ) |
Value:
( ((pnt)->neighInterNum*(pnt)->neighMode + (m))/ \ (1 + (pnt)->neighInterNum) )
#define NORM | ( | d1, | |||
d2, | |||||
pdir, | |||||
plen, | |||||
pgrad, | |||||
grad, | |||||
hess, | |||||
proj | ) |
Value:
ELL_3MV_MUL(pgrad, proj, grad); \ ELL_3V_NORM(pdir, pgrad, plen); \ if (!(plen)) { \ sprintf(err, "%s: got 0 pgrad at (%g,%g,%g,%g) on iter %u\n", me, \ point->pos[0], point->pos[1], point->pos[2], \ point->pos[3], iter); \ biffAdd(PULL, err); return 1; \ } \ d1 = ELL_3V_DOT(grad, pdir); \ d2 = ELL_3MV_CONTR(hess, pdir)
#define NORMALIZE | ( | dir, | |||
grad, | |||||
len | ) |
Value:
ELL_3V_NORM((dir), (grad), (len)); \ if (!(len)) { \ sprintf(err, "%s: got zero grad at (%g,%g,%g,%g) on iter %u\n", me, \ point->pos[0], point->pos[1], point->pos[2], \ point->pos[3], iter); \ biffAdd(PULL, err); return 1; \ }
#define PROBE | ( | height, | |||
grad, | |||||
hess, | |||||
proj | ) |
Value:
if (probeHeight(task, point, \ &(height), (grad), (hess))) { \ sprintf(err, "%s: trouble on iter %u", me, iter); \ biffAdd(PULL, err); return 1; \ } \ creaseProj(task, point, tang2Use, modeUse, proj)
#define PROBE | ( | l | ) |
Value:
if (_pullProbe(task, point)) { \ sprintf(err, "%s: on iter %u", me, iter); \ biffAdd(PULL, err); return 1; \ } \ (l) = _pullPointScalar(task->pctx, point, \ pullInfoHeightLaplacian, NULL, NULL);
#define PROBE | ( | v, | |||
av, | |||||
g | ) |
Value:
if (_pullProbe(task, point)) { \ sprintf(err, "%s: on iter %u", me, iter); \ biffAdd(PULL, err); return 1; \ } \ (v) = _pullPointScalar(task->pctx, point, \ pullInfoIsovalue, (g), NULL); \ (av) = AIR_ABS(v)
#define PROBEG | ( | l, | |||
g | ) |
Value:
PROBE(l); \ _pullPointScalar(task->pctx, point, pullInfoHeight, (g), NULL);
#define RESTORE | ( | height, | |||
grad, | |||||
hess, | |||||
proj, | |||||
pos, | |||||
state | ) |
Value:
height = state[0]; \ ELL_3V_COPY(grad, state + 1); \ ELL_3M_COPY(hess, state + 1 + 3); \ ELL_3M_COPY(proj, state + 1 + 3 + 9); \ ELL_3V_COPY(pos, state + 1 + 3 + 9 + 9)
#define RESTORE | ( | aval, | |||
val, | |||||
grad, | |||||
pos, | |||||
state | ) |
Value:
aval = state[0]; \ val = state[1]; \ ELL_3V_COPY(grad, state + 1 + 1); \ ELL_3V_COPY(pos, state + 1 + 1 + 3)
#define SAVE | ( | state, | |||
height, | |||||
grad, | |||||
hess, | |||||
proj, | |||||
pos | ) |
Value:
state[0] = height; \ ELL_3V_COPY(state + 1, grad); \ ELL_3M_COPY(state + 1 + 3, hess); \ ELL_3M_COPY(state + 1 + 3 + 9, proj); \ ELL_3V_COPY(state + 1 + 3 + 9 + 9, pos)
#define SAVE | ( | state, | |||
aval, | |||||
val, | |||||
grad, | |||||
pos | ) |
Value:
state[0] = aval; \ state[1] = val; \ ELL_3V_COPY(state + 1 + 1, grad); \ ELL_3V_COPY(state + 1 + 1 + 3, pos)
static int constraintSatHght | ( | pullTask * | task, | |
pullPoint * | point, | |||
int | tang2Use, | |||
int | modeUse, | |||
double | stepMax, | |||
unsigned int | iterMax, | |||
int * | constrFailP | |||
) | [static] |
static int constraintSatIso | ( | pullTask * | task, | |
pullPoint * | point, | |||
double | stepMax, | |||
unsigned int | iterMax, | |||
int * | constrFailP | |||
) | [static] |
static int constraintSatLapl | ( | pullTask * | task, | |
pullPoint * | point, | |||
double | stepMax, | |||
unsigned int | iterMax, | |||
int * | constrFailP | |||
) | [static] |
static void creaseProj | ( | pullTask * | task, | |
pullPoint * | point, | |||
int | tang2Use, | |||
int | modeUse, | |||
double | proj[9] | |||
) | [static] |
static int probeHeight | ( | pullTask * | task, | |
pullPoint * | point, | |||
double * | heightP, | |||
double | grad[3], | |||
double | hess[9] | |||
) | [static] |