Цветовая карта MATLAB quiver3

У меня есть график quiver3 на MATLAB с кодом и графиком, как показано ниже, и я хотел бы, чтобы линии были разными по цвету по мере приближения к центральной точке (которая является голубо-синей), чтобы я мог визуализировать их расстояния от центра. Есть идеи, как я мог это сделать? Большое спасибо!

hold on;
grid on;
scatter3(frame_cur.xyz_cam(1,:),frame_cur.xyz_cam(2,:),frame_cur.xyz_cam(3,:),'MarkerFaceColor',[0 .75 .75]);
quiver3(frameGT_cur.xyz_cam(1,:),                  ...
        frameGT_cur.xyz_cam(2,:),                  ...
        frameGT_cur.xyz_cam(3,:),                  ...
        C(1,:)-frame_cur.xyz_cam(1,:),     ...
        C(2,:)-frame_cur.xyz_cam(2,:),     ...
        C(3,:)-frame_cur.xyz_cam(3,:),     ...
        0,'b','ShowArrowHead','off');*

введите описание изображения здесь


person jiayi    schedule 24.04.2017    source источник
comment
Я сомневаюсь, что это возможно.   -  person thewaywewalk    schedule 24.04.2017
comment
Связано: stackoverflow.com/questions/ 29632430 /   -  person Ander Biguri    schedule 24.04.2017


Ответы (1)


он не использует quiver3, но результат близок к тому, что вы просили. этот ответ вдохновлен этот ответ.

Я использовал surf с аргументами значения имени 'FaceColor','none','EdgeColor','interp' для создания строк с интерполирующим цветом:

% generate random 3D points
n = 10;
x = 2*rand(n,1)-1;
y = 2*rand(n,1)-1;
z = 2*rand(n,1)-1;
% the color is the distance of each point
c = sqrt(x.^2 + y.^2 + z.^2); 
% plot the points
scatter3(x,y,z,40,c,'filled');
hold on
% add zeros (the center point) between points
xx = [zeros(1,numel(x));x(:)'];xx = xx(:);
yy = [zeros(1,numel(y));y(:)'];yy = yy(:);
zz = [zeros(1,numel(z));z(:)'];zz = zz(:);
cc = [zeros(1,numel(c));c(:)'];cc = cc(:);
% plot the lines
h = surf([xx,xx],[yy,yy],[zz,zz],[cc,cc],...
    'FaceColor','none','EdgeColor','interp','LineWidth',1);
colorbar;

введите описание изображения здесь

person user2999345    schedule 24.04.2017