Reflect a triangle given a mirror line

30 views (last 30 days)
please help me to write the program for the above mentioned question.

Sign in to comment.

Accepted Answer

David Sanchez
David Sanchez on 19 Aug 2014
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
% line of symmetry (add your m and n)
m = .5;
n = -1;
x = [-100 100];
y = m.*x+n;
hold on
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
hold off
axis([-10 20 -10 20])
axis square
  1 Comment
sir, it shows the first statement as error, i.e. Input argument "P" is undefined.

Sign in to comment.

More Answers (2)

Ahmet Cecen
Ahmet Cecen on 19 Aug 2014
Look at householder reflectors on wikipedia. The function "flip" might also help.

Roger Stafford
Roger Stafford on 19 Aug 2014
I suggest you look at John D'Errico's advice on this kind or problem at:

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!