Как визуализировать вращающийся вектор в 3D в MatLab - PullRequest
0 голосов
/ 20 мая 2018

Я пытаюсь представить, как вращается моя плотность вращения в пространстве, используя MatLab.Насколько мне удалось выяснить, для такого рода целей есть среда для создания перьев и quiver3, если я не ошибаюсь.Что я ищу, так это то, что вы можете следить за развитием со стрелками в качестве графических индикаторов.

Мои три компонента вектора зависят от одной переменной, назовем ее x, и даже один из ее компонентов равен нулю:

x=[0:0.01:10]
Sxy=0;
Syy=(cos(sqrt(2*sqrt(2)+1)*x)+(sqrt(7)/(11+8*sqrt(2)))*sin(sqrt(2*sqrt(2)+1)*x)).*exp(-sqrt(2*sqrt(2)-1)*x);
Szy=-(2/(77+56*sqrt(2)))*(-7*sqrt(1+2*sqrt(2))+11*sqrt(-7+14*sqrt(2))+8*sqrt(-14+28*sqrt(2)))*exp(-sqrt(2*sqrt(2)-1)*x).*sin(sqrt(2*sqrt(2)+1)*x);

Какие-либо предложения о том, как это можно сделать?

1 Ответ

0 голосов
/ 15 августа 2018

У вас есть x расположение стрелок и их компонентов в 3 тусклых оттенках, но вам нужно 3 компонента для их происхождения (x, y, z).Хотя они могут быть равны нулю.

q=quiver3(x,zeros(size(x)),zeros(size(x)),Sxy*ones(size(x)),Syy,Szy,0); % last zero sets autoscale of arrows

Но, может быть, вы хотите что-то более стильное?Добавьте это внизу:

Я использовал viridis colormap и этот ответ.

set(q,'MaxHeadSize',0.03,'AutoScaleFactor',0);
set(q,'LineWidth',2);
%// Compute the magnitude of the vectors
mags = sqrt(sum(cat(2, q.UData(:), q.VData(:), ...
            reshape(q.WData, numel(q.UData), [])).^2, 2));

%// Get the current colormap
currentColormap = colormap(viridis);

%// Now determine the color to make each arrow using a colormap
[~, ~, ind] = histcounts(mags, size(currentColormap, 1));

%// Now map this to a colormap to get RGB
cmap = uint8(ind2rgb(ind(:), currentColormap) * 255);
cmap(:,:,4) = 255;
cmap = permute(repmat(cmap, [1 3 1]), [2 1 3]);

%// We repeat each color 3 times (using 1:3 below) because each arrow has 3 vertices
set(q.Head, ...
    'ColorBinding', 'interpolated', ...
    'ColorData', reshape(cmap(1:3,:,:), [], 4).');   %'

%// We repeat each color 2 times (using 1:2 below) because each tail has 2 vertices
set(q.Tail, ...
    'ColorBinding', 'interpolated', ...
    'ColorData', reshape(cmap(1:2,:,:), [], 4).');

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...