matlab中画灯笼,matlab绘制三维曲面弹性模量极图

本帖最后由 kastin 于 2012-7-15 16:27 编辑

现在基本能实现了。通过组合我前面给的那两个简单图像就行。

首先,将8 楼图形绕z轴旋转一下,然后与12楼中的立方体叠加就行,注意调整一下相对比例。

r=1./(sin(theta).^4.*(sin(phi).^4+cos(phi).^4)+cos(theta).^4).^(1/4)+2.5*(sin(theta).^2.*cos(theta).*cos(2*phi+pi/2)).^2;复制代码

matlab中画灯笼,matlab绘制三维曲面弹性模量极图_第1张图片

untitled1.jpg (49.28 KB, 下载次数: 8)

Ni2

2012-7-15 15:05 上传

不过这时有点小小遗憾,那就是中间凹陷下去的“谷底”其实是一个平台,而非一个内球面。为了减小这个瑕疵,我们将代码“p=0:pi/90:2*pi; t=0:pi/90:pi;”中的步长改为45,这时候就差不多看不出这个缺陷了。

下面是我发现的第二种方法——

进一步考察立方体方程,发现改动其中的指数,就能相应改动立方体形状。

经测试发现,立方体方程

r=1./(sin(theta).^a.*(sin(phi).^a+cos(phi).^a)+cos(theta).^a).^(1/b);复制代码(其中,a,b为正偶数)

1. 当a=b,如果a=b=2时,图形为球面;a=b=4,6,8,...,图形越来越接近正方体(棱角越来越明晰,各个面越平);

2. 当底数内部的各个a如果不是相同,那么仅仅改变形状的长宽高比例。

3. 当a与b相异时——

1) 若a>b,那么,当a与b差距越大,图形中正方体各个棱角越突出,各个面越内陷,其极限情形就是8楼中的样子;

2) 若a

然后我们就能利用上述规律,来获得我们想要的图形。

close all; clear

p=0:pi/45:2*pi;

t=0:pi/45:pi;

[phi,theta]=meshgrid(p,t);

r=1./(sin(theta).^8.*(sin(phi).^8+cos(phi).^8)+cos(theta).^8).^(1/4);

%球坐标绘图

x=r.*sin(theta).*cos(phi);

y=r.*sin(theta).*sin(phi);

z=r.*cos(theta);

surf(x,y,z,'edgecolor','k','facecolor',[0.5,0.5,0.5])

axis equal

axis off

%set(gcf,'color','w') %白底背景复制代码

matlab中画灯笼,matlab绘制三维曲面弹性模量极图_第2张图片

untitled2.jpg (41.82 KB, 下载次数: 5)

Ni1

2012-7-15 15:31 上传

此时,凹陷变完美地变为内球面了。同样,这里也存在一点不足,那就是内陷球面所占范围太大,以至于各个顶角不太丰满,偏瘦。

至此,我们已经找到两种方法来实现楼主的图形了。然后我们可以变动相关参数,实现楼主给出附图中铜或者锌对应的图像了。

r=1./(1+cos(theta).^4); %锌对应的弹性模量图复制代码

matlab中画灯笼,matlab绘制三维曲面弹性模量极图_第3张图片

zn.jpg (39.46 KB, 下载次数: 3)

Zn

2012-7-15 16:19 上传

我们甚至能自己改造参数,做出许多其他图案,比如

r=1./(sin(theta).^4.*(sin(phi).^2+cos(phi).^2)+cos(theta).^2).^(1/2); %灯笼

r=-1./(1+cos(theta).*sin(theta)); %陀螺

r=1./(1+cos(theta).*sin(theta)); %莫斯科标志建筑的圆屋顶

r=1./(2+sin(3*theta).*sin(theta)); %小时候玩的滚轮玩具

r=1./(0.8+sin(2*theta).*sin(theta)); %清朝官员的帽子复制代码--------------------------------------------------------

至于楼主所给图像中的坐标架,这比较容易,线型加粗就行了。

你可能感兴趣的:(matlab中画灯笼)