MATLAB: How to plot a sphere with given centre and radius

plot sphere with given centre and radius

There is a matrix A=[1 2 3 4;2 3 4 5;5 6 7 8;8 9 10 11], First three columms represents the centre of a sphere (a,b,c), and the last columm represents the radius. How to plot those spheres in a same figure? Try not to use loops. Thanks.

Best Answer

Really without a loop? This is a bad idea for something, which is definitely a job for a loop.
figure
axes('NextPlot', 'Add');
CMap = parula(4);
A = [1 2 3 4; 2 3 4 5; 5 6 7 8; 8 9 10 11];
[X, Y, Z] = sphere;
for k = 1:4
XX = X * A(k, 4) + A(k, 1);
YY = Y * A(k, 4) + A(k, 2);
ZZ = Z * A(k, 4) + A(k, 3);
surface(XX, YY, ZZ, 'FaceAlpha', 0.5, 'FaceColor', CMap(k, :), ...
'EdgeColor', [0.4, 0.4, 0.4]);
end
axis tight
view(3)
No, I tried it without a loop but it hurts my eyes. Here is a loop version.
I made the spheres semi-transparent, because they overlap.