Как определить радиус при рисовании сферы в Matlab? - PullRequest
4 голосов
/ 23 марта 2012

Мне нужно построить несколько сфер, и я использовал пример кода из справки по математике следующим образом -

figure
[x,y,z] = sphere();
surf(x,y,z)  % sphere centered at origin
hold on
surf(x+3,y-2,z)  % sphere centered at (3,-2,0)
surf(x,y+1,z-3)  % sphere centered at (0,1,-3)
daspect([1 1 1])

Мне нужно, чтобы сферы были разного радиуса. Как я могу определить радиус для каждой из этих сфер?

Ответы [ 2 ]

9 голосов
/ 23 марта 2012

Файл справки для [sphere] (http://www.mathworks.com.au/help/techdoc/ref/sphere.html) говорит, что он генерирует координаты для единичной сферы или сферы радиуса 1. Изменение координат для сферы радиуса 1к сфере радиуса r вы просто умножаете их на r:

[x,y,z] = sphere();
r = 5;
surf( r*x, r*y, r*z ) % sphere with radius 5 centred at (0,0,0)    
2 голосов
/ 09 июля 2015

IMO, surf() совсем не удобен для пользователя. Код surf(x+3,y-2,z) % sphere centered at (3,-2,0) нелогичен (surf(x-1,y+2,0) соответствует математике).

В любом случае, я бы рекомендовал использовать ellipsoid(). Поскольку сфера - это особый случай эллипсоида, вы можете легко понять его, и вам не нужно иметь дело с surf(), посмотрите на http://www.mathworks.com/help/matlab/ref/ellipsoid.html

Простой пример:

r=5;
[x,y,z]=ellipsoid(1,2,3,r,r,r,20);
surf(x, y, z,'FaceColor','y', 'FaceAlpha', 0.2);
axis equal;
box on; xlabel('x-axis (m)'); ylabel('y-axis (m)'); zlabel('z-axis (m)');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...