Esempio n. 1
0
File: v3diff.c Progetto: phn/pytpm
V3
v3diff(V3 v1, V3 v2)
{

    if (v3GetType(v1) == SPHERICAL) {
        v1 = v3s2c(v1);
    }

    if (v3GetType(v2) == SPHERICAL) {
        v2 = v3s2c(v2);
    }

    v3DecX(v1, v3GetX(v2));
    v3DecY(v1, v3GetY(v2));
    v3DecZ(v1, v3GetZ(v2));

    return(v1);
}
Esempio n. 2
0
V6
v32v6(V3 v3)
{
    V6 v6;

    v6 = v6init(v3GetType(v3));
    v6SetPos(v6, v3);

    return(v6);
}
Esempio n. 3
0
double
v3mod(V3 v)
{
    double x = 0.0;

    if (v3GetType(v) == SPHERICAL) {
	x = fabs(v3GetR(v));
    } else {
	x += v3GetX(v) * v3GetX(v);
	x += v3GetY(v) * v3GetY(v);
	x += v3GetZ(v) * v3GetZ(v);
	x = sqrt(x);
    }

    return(x);
}
Esempio n. 4
0
File: m3v3.c Progetto: phn/pytpm
V3
m3v3(M3 m, V3 v1)
{
    int row, col;
    V3 v2;

    if (v3GetType(v1) == SPHERICAL) {
        v1 = v3s2c(v1);
    }

    v2 = v3init(CARTESIAN);

    for (row = 0; row < 3; row++) {
        for (col = 0; col < 3; col++) {
            v2.v[row] += m.m[row][col] * v1.v[col];
        }
    }

    return(v2);
}
Esempio n. 5
0
V3
v3s2c(V3 vs)
{
    double rcosd;
    V3 vc;

    if (v3GetType(vs) == CARTESIAN) {
	return(vs);
    }

    vc = v3init(CARTESIAN);

    rcosd = R*cos(D);

    v3SetX(vc, rcosd*cos(A));
    v3SetY(vc, rcosd*sin(A));
    v3SetZ(vc, R*sin(D));

    return(vc);
}
Esempio n. 6
0
char *
v3fmt(V3 v)
{
    char *p;

    /* get a buffer */
    p = v3buf[nxtv3buf++];
    nxtv3buf %= NV3BUF;

    if (v3GetType(v) == CARTESIAN) {
	(void)sprintf(p, "%22.15e %22.15e %22.15e",
		v3GetX(v),
		v3GetY(v),
		v3GetZ(v));
    } else {
	(void)sprintf(p, "%22.15e %22.15e %22.15e",
		v3GetR(v),
		v3GetAlpha(v),
		v3GetDelta(v));
    }

    return(p);
}
Esempio n. 7
0
double
v3alpha(V3 v)
{
    double alpha;

    if (v3GetType(v) == CARTESIAN) {
	v = v3c2s(v);
    }

    alpha = v3GetAlpha(v);
    if (v3GetR(v) < 0.0) {
	alpha += M_PI;
    }

    if (alpha < 0.0) {
	alpha += ceil(alpha / (-2 * M_PI)) * (2 * M_PI);
    }
    if (alpha >= (2 * M_PI)) {
	alpha -= floor(alpha / (2 * M_PI)) * (2 * M_PI);
    }

    return(alpha);
}