2014-09-03 1 views
1

У меня есть двумерный прямоугольник, который я хочу вращать против часовой стрелки на 45 градусов. Я использовал помощь MatLab, но функции там не дают мне результатов, которые я хочу. У меня в основном есть такая цифра: Simple MatLab plot и я хочу повернуть его на 45 градусов. Как я могу это достичь?Вращение 2-D участка на MatLab


Основываясь на комментарий, я решил попробовать и вручную вычислить все точки просто проверить, могу ли я сделать это, и получается, что я не в состоянии получить повернутый прямоугольник. Код:

function []=stress_rate_tensor(t) 

clear all 
clc 

plot(0.5, -0.5, 'ob') 
plot(-0.5, -0.5, 'ob') 
plot(0.5, 0.5, 'ob') 
plot(-0.5, 0.5, 'ob') 


line([-0.5 0.5], [-0.5 -0.5],'Color','k','LineWidth',1) 
line([0.5 0.5], [-0.5 0.5],'Color','k','LineWidth',1) 
line([-0.5 0.5], [0.5 0.5],'Color','k','LineWidth',1) 
line([-0.5 -0.5], [-0.5 0.5],'Color','k','LineWidth',1)% prints the first rectangle 

hold off 


axis([-1.5 1 -1 1]) 
hold on 

plot(0.5, 0.5, 'ob') 
plot(-0.5, -0.5, 'og') 
plot(-1.16, 0.25, 'or') 
plot(-0.41, 0.91, 'oy') 

line([-1.16 0.25], [-0.5 -0.5],'Color','k','LineWidth',1) 
line([-0.41 0.91], [-1.16 0.25],'Color','k','LineWidth',1) 
line([-1.16 0.25], [-0.41 0.91],'Color','k','LineWidth',1) 
line([-0.5 -0.5], [-1.16 0.25],'Color','k','LineWidth',1) % prints the second rectangle 

enter image description here

, который не то, что я хочу. Что-то не так с моим кодом?

+0

Вы просто хотите, чтобы повернуть прямоугольник или же оси и т.д.? Как насчет того, чтобы вручную вычислить, какие новые координаты должны быть перед графиком? –

+0

Просто поверните прямоугольник. Да, это тоже сработает, но я не могу сделать это напрямую? – Artemisia

+0

@DennisJaheruddin, я попробовал ваше предложение, но я думаю, что с моим кодом что-то не так (что я не могу сказать). – Artemisia

ответ

2

Вот кусок кода с использованием hgtransform (объект, который может содержать другие объекты, который позволяет лечить hgtransform и своих детей как единое целое относительно видимости, размера, ориентации и т.д.), и makehgtform (вращается вокруг оси z на pi/4 радиан).

% draw square in subplot 1 
x1=0.5; 
x2=-0.5; 
y1=0.3; 
y2=-0.3; 
x = [x1, x2, x2, x1, x1]; 
y = [y1, y1, y2, y2, y1]; 
h = plot(x, y, 'b-', 'LineWidth', 3); % handle of the plot is h 
xlim([-1, 1]); 
ylim([-1, 1]); 
axis square 

pause         % press the space bar 

%rotate square 
t = hgtransform('Parent',gca); 
set(h,'Parent',t) 
Txy = makehgtform('zrotate',pi/4);  % define a transform matrix 
set(t,'Matrix',Txy) 

enter image description here

+0

А это было то, что «h» меня смутило. Я получаю это сейчас. Спасибо :) – Artemisia

+0

Добро пожаловать. Какой-то хитрый для такого простого вращения! – marsei

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