1 #pragma TextEncoding = "UTF-8"
4 #pragma IgorVersion = 6.1
5 #pragma ModuleName = PearlPolarCoordinates
14 variable &radius, &theta, &phi
16 radius = sqrt(xx^2 + yy^2 + zz^2)
19 theta = acos(zz / radius) * 180 / pi
25 phi = atan(yy / xx) * 180 / pi
27 phi = atan(yy / xx) * 180 / pi + 180
43 out[0][] = sqrt(in[0][q]^2 + in[1][q]^2 + in[2][q]^2)
44 out[1][] = acos(in[2][q] / out[0][q]) * 180 / pi
45 out[2][] = atan(in[1][q] / in[0][q]) * 180 / pi + 180 * (in[0][q] < 0)
46 out[2][] = numtype(out[2][q]) == 0 ? out[2][q] : 90 + 180 * (in[1][q] < 0)
51 variable radius, theta, phi
52 variable &xx, &yy, &zz
54 xx = radius * sin(theta * pi / 180) * cos(phi * pi / 180)
55 yy = radius * sin(theta * pi / 180) * sin(phi * pi / 180)
56 zz = radius * cos(theta * pi / 180)
65 out[0][] = in[0][q] * sin(in[1][q] * pi / 180) * cos(in[2][q] * pi / 180)
66 out[1][] = in[0][q] * sin(in[1][q] * pi / 180) * sin(in[2][q] * pi / 180)
67 out[2][] = in[0][q] * cos(in[1][q] * pi / 180)
72 variable polar1, azim1
74 variable polar2, azim2
77 variable xx1, yy1, zz1
78 variable xx2, yy2, zz2
84 vv = (xx1 * xx2 + yy1 * yy2 + zz1 * zz2) / sqrt(xx1^2 + yy1^2 + zz1^2) / sqrt(xx2^2 + yy2^2 + zz2^2)
85 return acos(vv) * 180 / pi