I am using Mathematica v9.0.1.0 and wanted to compare Mathematica's CoordinateTransformData
command to Matlab's cart2sph
. (Note that cart2sph
is defined completely differently, and I need it in the other form, hence why I would like to check).
I will demonstrate my problem in the form of an example. In particular, for three randomly chosen coordinate points in cartesian (x, y, z) coordinates, I would like to have their spherical (r, theta, phi) coordinate representation.
I will paste the code in below:
CoordinateTransformData["Cartesian" -> "Spherical", "Mapping", {1, 2.0, 3}]
{3.74166, 0.640522, 1.10715}
CoordinateTransformData["Cartesian" -> "Spherical", "Mapping", {.4, 0.2, -1}]
{1.09545, 2.72106, 0.463648}
Both of the above are correct, but
CoordinateTransformData["Cartesian" -> "Spherical", "Mapping", {-0.6, 1.8, -4}]
prints the error message:
CoordinateTransformData::bdpt: Evaluation point {-0.6, 1.8, -4} is incompatible with the coordinate assumptions of the specified coordinate chart. >>
If I simply follow the definitions given on Wikipedia and write my own script:
comparcart2sphr[x_, y_, z_] :=
{Sqrt[(x)^2 + (y)^2 + (z)^2], ArcCos[z/Sqrt[(x)^2 + (y)^2 + (z)^2]], ArcTan[x, y]}
then
comparcart2sphr[1, 2.0, 3]
{3.74166, 0.640522, 1.10715}
comparcart2sphr[.4, .2, -1]
{1.09545, 2.72106, 0.463648}
comparcart2sphr[-.6, 1.8, -4]
{4.42719, 2.69868, 1.89255}
Can someone explain why Mathematica cannot handle this? I realise that this is because of the assumption they have in their chart, but surely it should be able to handle all points in R3. From the help file of CoordinateTransformData
one could also write
mathematicahelpexpr[x_, y_, z_] :=
{Sqrt[x^2 + y^2 + z^2], ArcTan[z, Sqrt[x^2 + y^2]], ArcTan[x, y]}
and obtain
mathematicahelpexpr[-.6, 1.8, -4]
{4.42719, 2.69868, 1.89255}