SPUR0645 发表于 2009-2-8 22:58

球状图

曲线是画在球的表面的,想问一下,思路是不是 ,首先用sphere画出球,视角是从正上方向下看(问一下,这个用什么语句实现),然后把要画的曲线在球形坐标系的数据转化成x,y,z坐标系,即用 = SPH2CART(TH,PHI,R) 最后hold on再用plot3(x,y,z)在球面上继续画曲线呢?高手指导一下思路和牵涉到的语句!推荐个例题也行啊!

[ 本帖最后由 SPUR0645 于 2009-2-9 00:13 编辑 ]

sogooda 发表于 2009-2-11 10:18

回复 楼主 SPUR0645 的帖子

视角是从正上方向下看(问一下,这个用什么语句实现)-- view

daineshu 发表于 2009-3-4 21:32

这是我自己编的程序,跟你的思路有点像
function plot3d(k)                %k是球的个数
% this function is used to draw the balls in the three dimensions


guliaozuobiao_3d;       % 调用脚本M文件(各个球的直角坐标和直径)
nop=30;               % 用30个点来控制画球
m=ones(nop,1);          % 生成nop*1维的元素为1的矩阵
n=ones(1,nop);          % 生成1*nop维的元素为1的矩阵
theta=m*linspace(-pi,pi,nop);       % 形成球坐标里的theta方阵,其中linspace(-pi,pi,nop)是在(-pi,pi)之间均匀插值
phi=(linspace(-pi/2,pi/2,nop))'*n;%形成球坐标里的phi方阵,其中linspace(-pi/2,pi/2,nop)是在(-pi/2,pi/2)之间均匀插值
axis();             %设定绘图坐标
for i=1:k                     
r1=ones(nop)*r(i);               %形成球半径方阵
=sph2cart(theta,phi,r1);   %将球坐标值转换到直角坐标下的x,y,z值
x2=x1+x(i);                     
y2=y1+y(i);                      % 调整球心坐标
z2=z1+z(i);
mesh(x2,y2,z2);                  %画球
hold on;                        %开启figure保留功能,即在同一张figure上画球
grid on;                        %开启网格功能
axis equal;                     
end
页: [1]
查看完整版本: 球状图