[matlab] добавление линий на поверхность
plot3(x,yvalue+1)*ones(size(x
спасибо. сам пробовал plot3 - не получалось. получив совет решил повозиться подольше и нашел, что если сначала рисовать линию с помощью plot3, а только потом поверхность, то все получится. а вот если сначала поверхность, а на нее пытаться наложить линию - ничего не видно. видимо, это баг такой. по крайней мере, не удалось найти никакой логики в таком положении вещей.
спасибо. сам пробовал plot3 - не получалось. получив совет решил повозиться подольше и нашел, что если сначала рисовать линию с помощью plot3, а только потом поверхность, то все получится. а вот если сначала поверхность, а на нее пытаться наложить линию - ничего не видно. видимо, это баг такой. по крайней мере, не удалось найти никакой логики в таком положении вещей.Хм, и правда.
Такого поведения я раньше не замечал.
Может, толщину увеличить?
не, независимо от толщины, если некошерный порядок, то ничего не появляется на поверхности. собственно, решение найдено - сначала строить линию методом plot3, а потом поверхность. может, в более свежих версиях матлаба пофиксили эту проблему, а может в таком положении вещей есть какая-то сермяжная правда, не знаю.
Правда интересно, если добавить небольшое приращение по z для твоей кривой, она появится?
нет, не появится, как ни играй с приращениями. именно поэтому я склоняюсь к мнению, что это баг.
figure;
image(Z);
hold on;
line(x,y);
п.с. этот метод подойдет только в случае равномерной сетки
видимо баг старой версии.. в R2012b, все рисует корректно
Оставить комментарий
scorobei42ru
Есть необходимость выделить на виде поверхности сверху (т.е. картинка двумерная - прямоугольник XY закрашен, цвет отвечает значению функции Z) некоторую линию в плоскости XY, заданную массивами (x,y) координат точек, принадлежащих этой линии. делаю это так:surf(X,Y,Z,'EdgeColor','none');
axis tight; colormap(jet); view(0,90);
hold on;
value=max(max(Z;
[X1 Y1]=meshgrid(x,y);
Z1=zeros(n,n);
for i=1:n
Z1(i,i)=value+1;
end
surf(X1,Y1,Z1);
здесь X,Y,Z - сетка и значения основной поверхности. n-длина массивов координат, задающих линию. То есть я рисую поверх первой поверхности вторую, у которой везде уровень 0, а в точках линии превосходит на 1 максимальный уровень первой поверхности. Простыми манипуляциями с colormap добиваюсь нужного цвета. Получается весьма прерывистая линия, состоящая из кусков каркасной сетки (то есть если установить 'EdgeColor' равным 'none', то линии видно вообще не будет).
Как можно получить более качественный результат?