39 void h3c_2xyz(
double lon,
double lat, _h3c_vector vect)
41 double coslat = cos(lat*H3C_DEGRA);
42 vect[0] = coslat * cos(lon*H3C_DEGRA);
43 vect[1] = coslat * sin(lon*H3C_DEGRA);
44 vect[2] = sin(lat*H3C_DEGRA);
55 double r2 = in[0]*in[0] + in[1]*in[1];
59 out[0] = 0./0.; out[1] = 0./0.;
62 out[1] = (in[2] > 0.0) ? 90.0 : -90.0;
65 out[0] = atan2(in[1], in[0])*H3C_RADEG;
66 out[1] = atan2(in[2], sqrt(r2))*H3C_RADEG;
80 r[0] = v1[1]*v2[2] - v1[2]*v2[1];
81 r[1] = v1[2]*v2[0] - v1[0]*v2[2];
82 r[2] = v1[0]*v2[1] - v1[1]*v2[0];
93 return v1[0]*v2[0] + v1[1]*v2[1] + v1[2]*v2[2];
102 double n = sqrt(u[0]*u[0] + u[1]*u[1] + u[2]*u[2]);
104 u[0] = u[0]/n; u[1] = u[1]/n; u[2] = u[2]/n;
115 return sqrt(v[0]*v[0] + v[1]*v[1] + v[2]*v[2]);
126 double sintheta = sqrt((1.-z)*(1.+z));
127 res[0] = sintheta*cos(phi);
128 res[1] = sintheta*sin(phi);