2015-10-12 3 views
3

я получил следующее в Matlab (решение, как в примере в http://uk.mathworks.com/help/matlab/ref/viewmtx.html):проект 3D участок в плоскости экрана 2D

enter image description here

subplot(211) 
h = ezplot3('cos(t)', 'sin(t)', 'sin(5*t)', [-pi pi]); 
data = get(h,{'XData','YData','Zdata'}); 
data = [cat(1,data{:})', ones(numel(data{1}),1)]; 

% Projection matrix on screen 
[az,el] = view(); A = viewmtx(az,el); 
data_transformed = A*data'; 

subplot(212) 
plot(data_transformed(1,:), data_transformed(2,:)) 

Это преобразование не работает с:

h = ezplot3('t', 'sin(t)', '20*cos(t)', [0 10*pi]); 

enter image description here

Как связаться с ge t экранная проекция 3-го участка?

Кроме того, любые ссылки на математику позади проекции, с примерами было бы слишком хорошо :)

+0

Это не четвертый сюжет, как раз вид в плоскости [x, z] третьего сюжета? – Adriaan

+0

@Adriaan Не должно быть. Первый сюжет применяет одну матрицу преобразования и получает проекцию экрана (или это то, что я думал, что это так). – Oleg

+0

Думаю, они должны. Насколько я вижу, вы не изменяете построенную функцию, а только угол, на котором она просматривается. Второе изображение снова представляет собой вид плоскости [x, z] первого. Вы можете сделать это вручную (щелкните значок «поворот» на графике), но этот код, по-видимому, вращает график для вас – Adriaan

ответ

0

Проекция зависит от view. Если вы попытаетесь с различными значениями view, проект в 2D даст разные результаты.

Например, [az,el]=view(60,30); и у вас будет эта проекция.

enter image description here

и [az,el]=view(30,15); вы будете иметь это изображение

enter image description here

+0

Я изменил вопрос, так как ранее не передавал то, что хотел. Следовательно, ваш ответ, хотя и контекстуальный, не решает мою проблему. Приносим извинения за неудобства. – Oleg