Я предполагаю, что вы хотите только для указания трехмерных линий и сплошных блоков (как в связанном примере). Там я вижу небольшую проблему: после указания проекций XY и XZ у вас есть значения x, y и z для каждой точки кривой, поэтому проекция YZ уже определена. Поэтому достаточно указать только размерность XY и XZ. Вот как это сделать:
Чтобы получить графический ввод от пользователя, вы можете использовать функцию ginput
, которая создает фигуру и позволяет пользователю выбрать пункты:
[x,y,btn] = ginput(k);
где x
и y
являются координаты выбранных точек, btn
ASCII-код любой нажатой кнопки, а k
- количество очков. Вы можете позволить пользователю сделать что-то и пусть рисунок конца, нажав пробел с помощью:
figure; axis([0 1 0 1]); % create empty figure
button=0; k=1; % set start values
while button~=' ' % repeat until space is pressed
[x(k) y(k), button] = ginput(1); % get one point
k=k+1; % set k for next iteration
plot(x,y);axis([0 1 0 1]); % plot the curve
end
Вы можете повторить это дважды, чтобы получить представление XY и XZ. Давайте предположим, что вы сохраните координаты в переменные
(x1, y1) % the XY view
(x2, z2) % the XZ view
Теперь вы можете создать результирующую 3D кривой, создавая x
вектор и интерполировании всех y
и z
значения. Для хорошей гладкой кривой я рекомендую сплайн интерполяции:
x = 0:0.01:1;
y = interp1(x1,y1,x,'spline','extrap'); % Spline interpolation + extrapolation
z = interp1(x2,z2,x,'spline','extrap'); % Spline interpolation + extrapolation
Теперь просто построить его в 3D с функцией plot3
:
plot3(x,y,z);
Вы можете легко расширить этот минимальный пример, чтобы сделать то, что вам нужно , это просто показать основные шаги и возможности в MATLAB.