Reflect a triangle given a mirror line
10 次查看(过去 30 天)
显示 更早的评论
please help me to write the program for the above mentioned question.
2 个评论
采纳的回答
David Sanchez
2014-8-19
Create a m-file with this function:
function S = symetric_P_about_line(P,m,n)
% line of symmetry: y = m*x + n;
Md = zeros(2,1); % Middle point between given point and its symmetric
Md(1) = (P(1) + m*P(2) - m*n)/(m^2 + 1);
Md(2) = m*Md(1) + n;
S = 2*Md - P; % symmetric point of P about given line
And this gives you the symmetric points of your triangle vertices about the symmetry line y=m*x+n:
% triangle (add your points)
A = [1 2];
B = [5 7];
C = [2 9];
M = [A; B; C]; % matrix to hold points
plot(M(:,1),M(:,2),'*')
% line of symmetry (add your m and n)
m = .5;
n = -1;
x = [-100 100];
y = m.*x+n;
hold on
plot(x,y)
hold off
As = symetric_P_about_line(A,m,n);
Bs = symetric_P_about_line(B,m,n);
Cs = symetric_P_about_line(C,m,n);
Ms = [As; Bs; Cs]; % matrix to hold symmetric points
hold on
plot(Ms(:,1),Ms(:,2),'r*')
hold off
axis([-10 20 -10 20])
axis square
更多回答(2 个)
Ahmet Cecen
2014-8-19
Look at householder reflectors on wikipedia. The function "flip" might also help.
0 个评论
Roger Stafford
2014-8-19
I suggest you look at John D'Errico's advice on this kind or problem at:
https://www.mathworks.com/matlabcentral/newsreader/view_thread/337038
0 个评论
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!