How does matlab draw the following image?
1 次查看(过去 30 天)
显示 更早的评论
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1068895/image.png)
Note that the basic geometric elements inside are spheres, cones and small cylinders, and that the known data are the 3D positions of the spheres [x1,y1,z1] and the 3D vectors of the arrows on each small ball [x2,y2,z2], which seems difficult
3 个评论
Adam Danz
2022-7-18
Currently there is no 3D quiver function that produces those types of objects. There may be a file in the file exchange that comes close, for example: arrow3. Alternatively, you could produce a 3D quiver using the functions you described (sphere, and cylinder for the arrow and bars). If you go that route, I would make a function that creates 3D quiver arrows given a vector of direction and a vector of magnitudes.
采纳的回答
Chunru
2022-7-24
clf
ax = axes;
hold on
view(3)
grid on
% The arrows (vertical)
[xs, ys, zs] = sphere(50);
[xc, yc, zc] = cylinder(0.5, 50);
[xa, ya, za] = cylinder([1 0], 50);
h(1) = surface(0.7*xs, 0.7*ys, zs, 'EdgeColor','none');
h(2) = surface(xc, yc, 5*zc, 'EdgeColor','none');
h(3) = surface(xa, ya, 2*za+5, 'EdgeColor','none');
t = hgtransform('Parent',ax);
set(h,'Parent',t)
% Make transform: rotate, translate, scaling and so on
Ry = makehgtform('yrotate',20);
% Scaling matrix
Sxy = makehgtform('scale', 2);
% Concatenate the transforms and
% set the transform Matrix property
set(t,'Matrix',Ry*Sxy)
colormap(gray(256));
axis equal
material metal
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!