Biot-Savartの式2
球面上の点における磁力線を3D表示してみます。先ほどの
BiotSavart.sceを使います。
getf('BiotSavart.sce');
////球面上の点表示////
t=linspace(-%pi,%pi,37)';
p=linspace(-%pi/2,%pi/2,19);
r=0.12;
x=r*cos(t)*cos(p);
y=r*sin(t)*cos(p);
z=r*ones(t)*sin(p);
k=prod(size(x));
x=matrix(x,k,1);
y=matrix(y,k,1);
z=matrix(z,k,1);
scf();param3d(x,y,z);
h=gca();h.children.mark_mode='on';
h.children.mark_size=3;
////電流源表示////
q=[0.07,0,0,0,0,20*1e-9];R=[x,y,z];
Q=ones(2,1)*q(1:3);
param3d(Q(:,1),Q(:,2),Q(:,3));
h.children(1).foreground=5;
h.children(1).mark_mode='on';
h.children(1).mark_size=3;
Q(2,:)=q(1:3)+q(4:6)*4e+6;//視認性を高めるため
param3d(Q(:,1),Q(:,2),Q(:,3));
h.children(1).foreground=5;
////磁力線表示////
B=BiotSavart(q,R);
B=B*1e+11; //視認性を高めるため
Fx=[R(:,1),R(:,1)+B(:,1)];
Fy=[R(:,2),R(:,2)+B(:,2)];
Fz=[R(:,3),R(:,3)+B(:,3)];
hf=gcf();hf.visible='off';//描画はとても遅いです。
for x=1:k;param3d(Fx(x,:)',Fy(x,:)',Fz(x,:)');end;
ha=gca();ha.isoview='on';ha.box='off';
hf.visible='on';
脳磁計はこの磁力線をすべて感知するわけではありません。
通常は球面の法線方向の成分だけを感知します。
////先ほどの磁力線消去////
hf.visible='off'; //消すのも遅いです。
delete(ha.children(1:($-3)));
hf.visible='on';
////法線方向の磁力線表示////
B=BiotSavart(q,R);
Bz=sum(B.*R,2)/r;//Rの単位ベクトルの内積
Bz=(Bz*ones(1,3)).*R/r;//単位ベクトルをかける
Bz=Bz*1e+11;
Fx=[R(:,1),R(:,1)+Bz(:,1)];
Fy=[R(:,2),R(:,2)+Bz(:,2)];
Fz=[R(:,3),R(:,3)+Bz(:,3)];
hf.visible='off';//描画はとても遅いです。
for x=1:k;param3d(Fx(x,:)',Fy(x,:)',Fz(x,:)');end;
ha.isoview='on';ha.box='off';
hf.visible='on';