tomcat2000 发表于 2009-5-10 22:30

[求助] matlab显示一个三维的,谢谢

现在有一个物体想用三维表示出来在matlab中,比如物体的坐标是(256,256,100)(中心点)其中256,256是x and y的方向坐标点,100就是z的方向上,
这个物体是一个球形的,直径设为20 pixels。 其外,x以及y方向上的总的pixels 是512 and 512. 不知道怎么用matlab书
写程序。谢谢各位。

ChaChing 发表于 2009-5-10 23:11

回复 楼主 tomcat2000 的帖子

个人水平专业有限, 不知道是否误解了, x/y各256点, 相对应z不是应该有256*256点?

tomcat2000 发表于 2009-5-11 08:11

Chaching, 你好,x/y总的各是512点,z也 是 512点,我想画的是一个圆球,这个圆球的 中心点是 (256,256,100),直径是20. 不知道怎么用matlab画出这个球体来 用三维坐标? 谢谢

ChaChing 发表于 2009-5-11 08:42

回复 板凳 tomcat2000 的帖子

画圆球不是可以直接用sphere!

friendchj 发表于 2009-5-11 08:43

回复 板凳 tomcat2000 的帖子

参考:
http://forum.vibunion.com/forum/viewthread.php?tid=72730&extra=&page=1

friendchj 发表于 2009-5-11 18:29

回复 板凳 tomcat2000 的帖子

试试:
clear
clc
=sphere(251);
x0=256;y0=256;z0=100;
d=20;
mesh(X*sqrt(d/2)+x0,Y*sqrt(d/2)+y0,Z*sqrt(d/2)+z0)
xlabel('x')
ylabel('y')
zlabel('z')
axis equal

tomcat2000 发表于 2009-5-12 09:51

hi, friendchj, 谢谢你的答复,

hi, friendchj, 谢谢你的答复,但是感觉画出来的图形还是不是我想要得。不过首先先要谢谢你。

我的情况是:需要画一个三维的图形。x/y总的各是512点,z轴总的点数也 是 512点,现在我想画的是5个圆球(或者说是微粒),最好在最综的三维图形中显示出x,y,z总的坐标点数。谢谢。

第一个圆球的 中心点是 (256,256,100),直径是20.

第二个圆球的 中心点是 (50,56,30),直径是10.


第三个圆球的 中心点是 (300,356,300),直径是6.


第四个圆球的 中心点是 (150,86,200),直径是8.


第五个圆球的 中心点是 (150,356,120),直径是10.

这个五个微粒画在一个三维图形中,不知道应该怎么画?再次谢谢你。

friendchj 发表于 2009-5-12 11:44

不太清楚,你限制x,y,z点数的目的。不知道下面的能否满足你的要求

r=1;%半径
x0=0;%中心
y0=0;
z0=0;
theta=linspace(0,2,16)*pi;
phi=linspace(0,2,32)*pi;
x=zeros(length(theta),length(phi));
y=x;
z=x;
for i=1:length(theta)
    for j=1:length(phi)
      x(i,j)=r*sin(theta(i))*cos(phi(j))+x0;
      y(i,j)=r*sin(theta(i))*sin(phi(j))+y0;
    end
    z(i,:)=r*cos(theta(i))+z0;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
data=;
for i=1:5
    x1=x*data(i,4)/2+data(i,1);
    y1=y*data(i,4)/2+data(i,2);
    z1=z*data(i,4)/2+data(i,3);
    mesh(x1,y1,z1,z1)
    hold on
end
axis square
hold off
页: [1]
查看完整版本: [求助] matlab显示一个三维的,谢谢