I am working in MATLAB with a formula which indexes points on a unit sphere in spherical coordinates.
[i, j] = ndgrid(1:N_theta, 1:N_phi);
theta = (i-1)*2*pi/N_theta;
phi = (j)*pi/(N_phi+1);
r = 1;
b = [theta(:).'; phi(:).'; r * ones(1,numel(theta))];
Let's assume I choose particular values for N_theta
and N_phi
and that each point has a position vector in spherical coordinates, where the first component is theta
, the second component is phi
and the third component is r
. Running the formula then creates an array (I've called it b
) which takes the position vector for each of the N points and slots them all next to each other to make a 3xN matrix.
I essentially just need to take that array and convert it so it's the same array with the vectors all next to each other but now the position vectors are in Cartesian coordinates (we could call the new array B
).
I have looked up the sph2cart
function in MATLAB which is designed for that purpose but I'm not sure if I am using it correctly and am hoping someone could point it what I am doing wrong. I have tried this, for example
B=sph2cart(b(1,:),b(2,:),b(3,:));
and
B = sph2cart(theta,phi,r);
but they both create matrices which are too small, so something is obviously going wrong.