2015-08-16 7 views
0

У меня есть вектор значений, которые я хочу построить как яркость по кругу через его радиус (Т.е. Если бы это было 0 3 1 5 Я бы хотел, чтобы круг был темным центр, затем яркое кольцо вокруг него, затем немного темнее кольцо, затем более яркое кольцо).Вращение сюжета О оси Y

Для этого я попытался повернуть мой радиальный вектор (E) вокруг оси у, как таковой

[X,Y,Z] = cylinder(E); 
h = surf(X,Y,Z), 

Однако я явно не делать это правильно, так как это, кажется, вращая мой кривая вокруг оси x. Я попытался просто поменять X и Y, но он по-прежнему вращает его вокруг оси x. Любая помощь будет принята с благодарностью.

ответ

1

Один из способов будет вращать вектор и создать surface. Данные Z поверхности (ваш повернутый вектор) будут кодироваться цветом в соответствии с выбранной вами цветовой палитрой, если вы отображаете поверхность сверху, вы получаете свои круги с разной яркостью.

Если вас действительно интересует только «вид сверху» этой поверхности, тогда вам не нужно создавать полную поверхность, простую pcolor выполнит эту работу.


пример:

%% // input data (and assumptions) 
E=[0 3 1 5 2 7];     
nBrightness = 10 ;      %// number of brightness levels 
r = (0:numel(E)) ;      %// radius step=1 by default for consecutive circles 
             %// otherwise define different thickness for each circle 

Так что, если я использую stairs([E 0]) вы получите ваши различные уровни яркости: stairs

мне пришлось добавить последний 0 к вектору «закрыть» последнее уровень, мы должны будем сделать это снова в приведенном ниже решении.

Теперь, чтобы повернуть/повторить, что вокруг Y, цветовой код высота, и смотреть на него сверху:

%% // replicate profile around axis 
ntt = 50 ;        %// define how many angular division for the plot 
theta = linspace(0,2*pi,ntt) ;   %// create all the angular divisions 
[rr,tt]=meshgrid(r,theta) ;    %// generate a grid 

z = repmat([E 0] , ntt , 1) ;   %// replicate our "E" vector to match the grid 

[xx,yy,zz] = pol2cart(tt,rr,z) ;  %// convert everything to cartesian coordinates 

pcolor(xx,yy,zz)      %// plot everything 
colormap(gray(nBrightness))    %// make sure we use only "nBrightness" colors (Shades of gray) 
caxis([0 nBrightness]) 

shading flat ; axis equal    %// refine the view (axis ratio and "spokes" not visible) etc... 
colorbar 
axis off 

даст следующее:

circles


Обратите внимание, что ваша проблема не была полностью определена, мне пришлось принять предположения о:

  • Какой радиус должен иметь круг яркости? (Я сделал их все равно, но вы можете это изменить)
  • Сколько уровней яркости вы хотите? (Вы также можете легко это изменить).
0

Вы пробовали функцию rotate?

direction = [0 1 0]; 
rotate(h,direction,90); 

В этом примере поворот на 90 градусов выполняется вокруг оси y.

+0

Большое спасибо, но это не совсем решает проблему, я думаю, что я объяснил это довольно плохо. Я хочу повернуть его и сформировать твердое тело, а не просто повернуть его, чтобы переместить кривую. – Jack

Смежные вопросы