2015-04-06 3 views
1

Я хочу сделать 3D-художник с помощью MATLAB.3D-рисование с использованием Matlab

Прежде всего, я хочу отобразить 3 панели - XY, XZ и YZ просмотров.

Пользователь будет рисовать то, что он хочет в каждой панели.

После этого он нажмет на кнопку, чтобы объединить 3 вида и получить 3d модель с этой панели. Он также может сделать эту модель свободно.

Как я могу это сделать?

Эти фотографии иллюстрируют то, что я хочу:

2D Просмотров:
2D views

3D объектов после объединения 3 просмотры:
3D object

ответ

0

Я предполагаю, что вы хотите только для указания трехмерных линий и сплошных блоков (как в связанном примере). Там я вижу небольшую проблему: после указания проекций 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.

0

Это не может быть полный ответ, но это может быть добавлен hbaderts ответ

Для создания гладкой Splineпри рисовании, вместо прямых линий (как он предложил)

figure; axis([0 1 0 1]);     % create empty figure 
button=0; k=1; 
while button~=' '       % repeat until space is pressed 
    [x(k) y(k), button] = ginput(1);  % get one point        
    plot(x(k),y(k),'r.');axis([0 1 0 1]); % plot the points 
    hold on 
    fnplt(cscvn(vertcat(x,y)),'b',2);  % Generate smooth spline 
    hold off 
    k=k+1;         % set k for next iteration 
end 

Перед сглаживанием

hbaderts image

После Сглаживание:

smoothed curve