2016-08-19 5 views
0

У меня есть изображение, которое было взято из данных САПР, и я открыл его в MATLAB. То, что я хочу сделать, это повернуть фигуру 90 градусов и изменить оси, как на рисунке.Изменение предопределенных осей

enter image description here

Я сохранил рисунок в формате STL и с помощью кода в следующей ссылке я открываю его как MatLab фигуры.

https://de.mathworks.com/matlabcentral/fileexchange/3642-cad2matdemo-m

Вопросы:

  1. У меня нет какой-либо функции или м-файл, чтобы регенерировать рисунок. Как я могу повернуть оси на рисунке?

  2. Как я могу найти все точки на чертеже?

Заранее спасибо.

+0

Это зависит полностью от формата. Вы должны дать нам больше, чем я боюсь. – patrik

+0

У меня есть траектория, чтобы следовать в формате .stl, и я преобразовал ее в файл matlab, используя код в https://de.mathworks.com/matlabcentral/fileexchange/3642-cad2matdemo-m – user70299

+1

Хорошо, попробуйте поместить это в вопрос. Кроме того, я не хочу следовать ссылке на обмен файлами MATLAB, чтобы знать, что вы пытаетесь сделать, и поэтому никто больше не хочет. Вот почему вы получаете три голоса, чтобы закрыть. – patrik

ответ

0

Если у вас нет способа восстановить данные фигуры, но у вас есть фигура MATLAB с данными внутри нее, вы можете их восстановить.

я сначала создать образец графического объекта (patch, возвращенное функцией вы связаны):

R = 3 ; nFaces = 5 ; 
tt = linspace(0,2*pi,nFaces+1).' ; tt(end) = [] ; 

[x,y] = pol2cart(tt,zeros(nFaces,1)+R) ; 
hp = patch(x,y,'b') ; 
axis equal 

pentagon


Теперь, при условии, что рисунок является активным деятелем (нажмите на рисунке, чтобы дать ему фокус, если вы хотите быть уверенным), вы можете запросить данные, нанесенные внутри.

Во-первых, мы должны получить ручку всех графических объектов, отображаемых в axes текущей фигуры:

% get handle of all graphic objects in the current axes 
hlist = get(gca,'Children') 

hlist = 
    Patch with properties: 

    FaceColor: [0 0 1] 
    FaceAlpha: 1 
    EdgeColor: [0 0 0] 
    LineStyle: '-' 
     Faces: [1 2 3 4 5] 
    Vertices: [5x2 double] 

В моем случае есть только один объект, поэтому нет двусмысленности. Если было возвращено несколько дескрипторов, выберите один из объектов patch (поиграйте с каждым и узнайте, что это такое).

После того, как объект, который вы хотите получить доступ идентифицирован, он легко проворачиваться:

% only one object in this case but if there was several in the list I 
% would isolate the object I want to manipulate. 
hp = hlist(1) ; 

% to rotate the graphic object "hp", around axis Z ([0 0 1]), by 90 degrees. 
rotate(hp ,[0 0 1] , 90) 

pentagon rotated

или получить координаты точек:

% to get the points coordinates: 
pc = get(hp,'Vertices') 

pc = 
    0.286474508437579 2.713525491562421     0 
    -2.566695040447882 0.640576474687264     0 
    -1.476881248439841 -2.713525491562421     0 
    2.049830265314998 -2.713525491562421     0 
    3.139644057323040 0.640576474687263     0 

Просто аккуратно, полученные координаты, 5 точек (линий) с X, Y и Z координаты (colum ns) - координаты после поворот. Если вы хотите, чтобы исходные координаты вы запрашивали, прежде чем применять поворот к объекту.


Больше чтение:

Смежные вопросы