#include "ten.h"
#include "privateTen.h"
Defines | |
#define | INFO "Generate twisting helical tensor field" |
#define | WPOS(pos, th) ELL_3V_SET((pos),R*cos(th), R*sin(th), S*(th)/(2*AIR_PI)) |
#define | VAL(th) (WPOS(wpos, th), ELL_3V_DIST(wpos, vpos)) |
#define | RR 0.61803399 |
#define | CC (1.0-RR) |
#define | SHIFT3(a, b, c, d) (a)=(b); (b)=(c); (c)=(d) |
#define | SHIFT2(a, b, c) (a)=(b); (b)=(c) |
Functions | |
void | tend_helixDoit (Nrrd *nout, double bnd, double orig[3], double i2w[9], double mf[9], double r, double R, double S, double angle, int incrtwist, double ev[3], double bgEval) |
int | tend_helixMain (int argc, char **argv, char *me, hestParm *hparm) |
TEND_CMD (helix, INFO) | |
Variables | |
char * | _tend_helixInfoL |
#define CC (1.0-RR) |
#define INFO "Generate twisting helical tensor field" |
#define RR 0.61803399 |
#define SHIFT2 | ( | a, | |||
b, | |||||
c | ) | (a)=(b); (b)=(c) |
#define SHIFT3 | ( | a, | |||
b, | |||||
c, | |||||
d | ) | (a)=(b); (b)=(c); (c)=(d) |
#define VAL | ( | th | ) | (WPOS(wpos, th), ELL_3V_DIST(wpos, vpos)) |
#define WPOS | ( | pos, | |||
th | ) | ELL_3V_SET((pos),R*cos(th), R*sin(th), S*(th)/(2*AIR_PI)) |
TEND_CMD | ( | helix | , | |
INFO | ||||
) |
void tend_helixDoit | ( | Nrrd * | nout, | |
double | bnd, | |||
double | orig[3], | |||
double | i2w[9], | |||
double | mf[9], | |||
double | r, | |||
double | R, | |||
double | S, | |||
double | angle, | |||
int | incrtwist, | |||
double | ev[3], | |||
double | bgEval | |||
) |
int tend_helixMain | ( | int | argc, | |
char ** | argv, | |||
char * | me, | |||
hestParm * | hparm | |||
) |
char* _tend_helixInfoL |
Initial value:
(INFO ". The main utility of such a field is to debug handling of coordinate " "systems in tensor field visualization. The \"space directions\" and " "\"space origin\" fields of the NRRD header determines the mapping from " "coordinates in the index space of the image to coordinates in the " "world space in which the image is " "sampled. The \"measurement frame\" field determines the mapping from " "the coordinates of the tensor itself, to coordinates of the world space. " "When these are correctly handled, the " "region of high anisotropy is a right-handed helix (same as DNA). " "Using differing axes sizes (via \"-s\") helps make sure that the " "raster ordering of axes is correct. In addition, the tensors twist " "relative to the helix, which exposes handling of the measurement frame. " "If you trace paths guided by the principal eigenvector of the tensors, " "along the surface of the helical cylinder, you get another " "right-handed helix, as if the the tensor field is modeling the result " "if twisting a set of fibers into single-stranded helical bundle. ")