How to plot a sphere with given centre and radius?

1 Ansicht (letzte 30 Tage)
Nicolson
Nicolson am 28 Sep. 2017
Bearbeitet: Jan am 28 Sep. 2017
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.
  2 Kommentare
Jan
Jan am 28 Sep. 2017
Until "try not to use loops" the question sounds seriously. The solution is trivial with the sphere command and a loop. A solution without a loop is neither smart nor efficient.
Nicolson
Nicolson am 28 Sep. 2017
Now I already have my code and it is working perfectly ;) with loop and hold on, pretty easy.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Jan
Jan am 28 Sep. 2017
Bearbeitet: Jan am 28 Sep. 2017
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.
  1 Kommentar
Nicolson
Nicolson am 28 Sep. 2017
Thank you :) I used surf function and the final result is same.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by