作者eatrol (Mesh Construction...)
看板MATLAB
标题Re: [问题] 画个椭球?
时间Fri Dec 30 22:00:13 2005
※ 引述《PFZ (努力为未来打拼)》之铭言:
: ※ 引述《PFZ (努力为未来打拼)》之铭言:
: : 一个空间中的椭球可以表示成下列方程式:
: : (x/a)^2 + (y/b)^2 + (z/c)^2 = 1
: : 请用ez开头的绘图指令,画出三度空间的一个平滑的椭球,其中a=3,b=4,c=8。
: : 有类似的...
: : 我有试过自己改看看...
: : 可是command window总是出现一堆我不认识的错误讯息...orz
: : 还请板上哪位人士来帮帮忙...thx
: theta=linspace(0,pi,30);
: th1=linspace(0,2*pi,30);
: r=1;
: x=r*3*sin(theta)'*cos(th1);
: y=r*4*sin(theta)'*sin(th1);
: z=r*8*cos(theta)'*ones(1,30);
: surf(x,y,z)
这个方法是直接用球座标积分来画图的去
你可以去翻翻工程数学里头的定义...
球座标的变数是由半径和两个角度(即经度和纬度)
而上面的程式 theta即是纬度 , th1为经度
其中纬度范为是从 0 < theta < pi
而经度范围是从 0 < th1 < 2*pi
而由直角座标转成球座标我们都令
x=r*sin(theta)*cos(th1)
y=r*sin(theta)*sin(th1)
z=r*cos(theta)
: 这是的解法...
: 可是我有很多地方看不懂...
: 为什麽theta只到pi...不是到2*pi...
: th1是什麽...
: x,y,z的等式??
: 如果用ezsurf要怎麽改??
: 问题好像很多...@@a
: 不好意思...麻烦各位了...
而你现在的问题是要画椭圆
所以要令
x=a*sin(theta)*cos(th1)
y=b*sin(theta)*sin(th1)
z=c*cos(theta)
我用help档里头的范例稍微修改成你要的型式
答案如下 :
ezsurf('3*sin(theta)*cos(th1)','4*sin(theta)*sin(th1)','8*cos(theta)',[0,pi,0,2*pi])
你可以用help 档查查看ezsurf的用法
里头还有其它用法..
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.135.0.217
1F:→ eatrol:最後那个 "\" 要删掉... 12/30 22:08