首页 > 解决方案 > 在matlab中将实心球体绘制为点

问题描述

我可以绘制 cicle 点并放置经过它们的箭头:

plot(1,1,'o','MarkerEdgeColor','k','MarkerFaceColor','k','MarkerSize',10,'LineWidth',1.5); hold on; 
plot(2,1,'o','MarkerEdgeColor','k','MarkerFaceColor','k','MarkerSize',10,'LineWidth',1.5); hold on; 


vec1=zeros(1,3); vec2=zeros(1,3); col1=zeros(1,3); col2=zeros(1,3);
vec1=[0.98996547   0.00000000    0.14130945];

vec2=[0.00000000    0.70710678   -0.70710678];


col1= [abs(vec1(1,1)) abs(vec1(1,2)) abs(vec1(1,3))];
col2= [abs(vec2(1,1)) abs(vec2(1,2)) abs(vec2(1,3))];

ac=0.1;
p1_sh = [1 1 0] - ac*vec1;
p2_sh= [2 1 0] - ac*vec2;

scalef=0.4;
quiver3(p1_sh(1),p1_sh(2),p1_sh(3),vec1(1,1)*scalef,vec1(1,2)*scalef,vec1(1,3)*scalef,'AutoScale','off','MaxHeadSize',5,'LineWidth',5,'Color',col1); hold on;

quiver3(p2_sh(1),p2_sh(2),p2_sh(3),vec2(1,1)*scalef,vec2(1,2)*scalef,vec2(1,3)*scalef,'AutoScale','off','MaxHeadSize',5,'LineWidth',5,'Color',col2); hold on; 

view(20,20);

hold off;

输出是:

在此处输入图像描述

问题是这些点是圆而不是球体。LineSpec没有球体选项。我怎样才能把点变成球体?

标签: matlabplotmatlab-figure

解决方案


使用时

plot(1,1,'o','MarkerEdgeColor','k',...
'MarkerFaceColor','k','MarkerSize',10,'LineWidth',1.5);

您正在创建一个 2D 标记,即使您使用了 plot3(...) 也没有深度的元素。

为了创建一个“实心”球体,您可以使用命令“Sphere”

numVertices = 32;
sphereRadius = 15;
[sph.x, sph.y, sph.z] = sphere(numVertices);
sph.x = sph.x*sphereRadius;
sph.y = sph.y*sphereRadius;
sph.z = sph.z*sphereRadius;

surf(sph.x,sph.y,sph.z);

还要记住,这个球体将是空心的,由符合其表面的平面组成。您不能创建“实体”对象。


推荐阅读