Пример #1
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);
}
Пример #2
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);
}
Пример #3
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);
}