2014-01-15 2 views
1

Скажем, что определенная функция начинается с точки (a, b) и заканчивается точкой (c, d). Как перевернуть эту функцию вокруг ее вертикальной центральной линии (описываемой x = (c-a)/2)?Как перевернуть функцию по ее центральной линии?

Заранее благодарен!

c = 5.2; 
alpha = 0; 

R = [cosd(alpha) sind(alpha) 0; -sind(alpha) cosd(alpha) 0; 0 0 1]; 
l1_vector = [-sqrt(3)*c; 0; 0]; 
l1_prime = R*l1_vector; 

iter = 1; 

for i=1:1201 
     R = [cosd(alpha) sind(alpha) 0; -sind(alpha) cosd(alpha) 0; 0 0 1]; 
     l1_prime = R*l1_vector; 
     a = l1_prime(1) 
     b = l1_prime(2); 
     alpha = alpha+.1; 
     data1(iter,1:2)=[a,b]; 
     iter=iter+1; 
    end  

a = data1(:,1); 
b = data1(:,2); 

plot(wrev(a)+a(end)-a(1),b) 
axis equal 
+0

Что вы уже пробовали, и почему это не сработало? – MrAzzaman

+0

В таком виде отражения я знаю, что y-координаты не изменятся. Теоретически x-координаты можно вычислить, взяв каждую точку данных слева от центральной линии и добавив к каждой горизонтальной разности между этой точкой и центральной линией и сделав то же самое для точек справа от центральной линии, но вычитая , По какой-то причине это не помогло мне и дало мне неправильные результаты. Это также кажется более утомительным, чем нужно. – user3196474

ответ

1

зависит как ваша функция определена на самом деле, но если у вас есть вектор x значений, а другой с соответствующей функцией значения y, то

plot(x,y) 

участки функция нормально, и

plot(a,b,2*a(end)-a(1)-cumsum([0;diff(a)]),b) 

отображает переведенную и переведенную функцию.

+0

Я попробовал, но, похоже, это не сработало. В принципе, у меня есть функция, которую я хочу перевернуть и добавить к концу моей последней функции. Это похоже на McDonald's M. Imagine, изображающий левую половину M, затем перевернув эту часть вокруг своей центральной линии и переведя ее на завершение M. – user3196474

+0

. Что относительно 'plot (wrev (x) + (ca)/2, у) '? – MrAzzaman

+0

Да, я думаю, что wrev (x) + c-a' - это то, что вы хотите. – David