3 #pragma IgorVersion = 6.1 4 #pragma ModuleName = PearlPolarCoordinates 13 variable &radius, &theta, &phi
15 radius = sqrt(xx^2 + yy^2 + zz^2)
18 theta = acos(zz / radius) * 180 / pi
24 phi = atan(yy / xx) * 180 / pi
26 phi = atan(yy / xx) * 180 / pi + 180
42 out[0][] = sqrt(in[0][q]^2 + in[1][q]^2 + in[2][q]^2)
43 out[1][] = acos(in[2][q] / out[0][q]) * 180 / pi
44 out[2][] = atan(in[1][q] / in[0][q]) * 180 / pi + 180 * (in[0][q] < 0)
45 out[2][] = numtype(out[2][q]) == 0 ? out[2][q] : 90 + 180 * (in[1][q] < 0)
50 variable radius, theta, phi
51 variable &xx, &yy, &zz
53 xx = radius * sin(theta * pi / 180) * cos(phi * pi / 180)
54 yy = radius * sin(theta * pi / 180) * sin(phi * pi / 180)
55 zz = radius * cos(theta * pi / 180)
64 out[0][] = in[0][q] * sin(in[1][q] * pi / 180) * cos(in[2][q] * pi / 180)
65 out[1][] = in[0][q] * sin(in[1][q] * pi / 180) * sin(in[2][q] * pi / 180)
66 out[2][] = in[0][q] * cos(in[1][q] * pi / 180)
71 variable polar1, azim1
73 variable polar2, azim2
76 variable xx1, yy1, zz1
77 variable xx2, yy2, zz2
80 polar2cart(1, polar2, azim2, xx2, yy2, zz2)
83 vv = (xx1 * xx2 + yy1 * yy2 + zz1 * zz2) / sqrt(xx1^2 + yy1^2 + zz1^2) / sqrt(xx2^2 + yy2^2 + zz2^2)
84 return acos(vv) * 180 / pi
variable polar2cart_wave(wave in, wave out)
variable cart2polar(variable xx, variable yy, variable zz, variable *radius, variable *theta, variable *phi)
variable cart2polar_wave(wave in, wave out)
variable polar_distance(variable polar1, variable azim1, variable polar2, variable azim2)
variable polar2cart(variable radius, variable theta, variable phi, variable *xx, variable *yy, variable *zz)