2016-08-15 4 views
0

Используя matlab, я хочу применить преобразование, чтобы повернуть и перевести на 2d точек. , например, мои пункты:Как применить преобразование к 2d точкам в Matlab?

points.x=[1 5 7 100 52]; 
points.y=[42 96 71 3 17]; 
points.angle=[2 6 7 9 4]; 

the value of rotate is:30 degree 
the value of x_translate is 5. 
the value of y_translate is 54. 

любой орган может помочь мне написать код MatLab для применить это преобразование к моей точке и вычислить новые координаты точек после преобразования?

+0

'rotate' может помочь – shamalaia

+0

Что такое points.angle? –

ответ

1

Я не знаю, что вы подразумеваете под points.angle с углом точек относительно начала координат (в тригонометрической смысле) уже определено atand2 (у, х)
Вот код:

clear;clc 

oldCoord = [1 5 7 100 52;42 96 71 3 17]; 
newCoord = zeros(size(oldCoord)); 
theta = 30 * pi/180; 

T = @(theta) [cos(theta), -sin(theta); sin(theta) , cos(theta)]; 
trans = [5;54]; 

for m = 1:size(oldCoord,2) 
    newCoord(:,m) = T(theta) * oldCoord(:,m) + trans; 
end 

Результат:

oldCoord = 

    1  5  7 100 52 
    42 96 71  3 17 
newCoord = 

    -15.1340 -38.6699 -24.4378 90.1025 41.5333 
    90.8731 139.6384 118.9878 106.5981 94.7224