|
mapc2m.m.html |
|
|
Source file: mapc2m.m
|
|
Directory: /home/rjl/git/rjleveque/clawpack-4.x/apps/advection/2d/sphere/rotation
|
|
Converted: Tue Jul 26 2011 at 12:58:54
using clawcode2html
|
|
This documentation file will
not reflect any later changes in the source file.
|
function [xm,ym,zm] = mapc2m(xc,yc)
% maps to points on a sphere of radius r
ijlower = find(xc<-1); %indices of points on lower hemisphere
xc(ijlower) = -2-xc(ijlower); %flip across the line x=-1
% compute xp and yp by mapping [-1,1]x[-1,1] to unit circle
xc1 = abs(xc);
yc1 = abs(yc);
d = max(xc1,yc1);
d = max(d,1.e-10);
r1 = 1.;
D = r1*d.*(2*ones(size(d))-d)./sqrt(2);
R = r1*ones(size(d));
center = D-sqrt(R.^2. - D.^2.);
xp = D.*xc1./d;
yp = D.*yc1./d;
ij = find(yc1==d);
yp(ij)=center(ij)+sqrt(R(ij).^2. - xp(ij).^2.);
ij = find(xc1==d);
xp(ij)=center(ij)+sqrt(R(ij).^2. - yp(ij).^2.);
xp = sign(xc).*xp;
yp = sign(yc).*yp;
zp = sqrt(1.-(xp.^2.+yp.^2.));
zp(ijlower) = -zp(ijlower); %negate z in lower hemisphere
xm = xp;
ym = yp;
zm = zp;