% SHOWHESSENF Darstellung der Funtionsweise der Hesse'schen Normalform
clf; hold on
disp('SHOWHESSENF Darstellung der Funtionsweise der Hesseschen Normalform')
disp('Bitte mit dem Cursor 2 Punkte fuer eine Gerade eingeben')
disp('und einen weiteren Punkt fuer den Test-Vektor!')
plot([-6 6], [0 0],'k')
plot([0 0],[-6 6], 'k')
axis([-6 6 -6 6])
axis square
[x1 y1] = ginput(1);
plot(x1, y1, 'or')
[x2 y2] = ginput(1);
plot(x2, y2, 'or')
x0 = x1 -20*(x2-x1);
y0 = y1 -20*(y2-y1);
x3 = x1 +20*(x2-x1);
y3 = y1 +20*(y2-y1);
plot([ x0 x3], [y0 y3],'b' )
plot([0 x1 x2], [0 y1 y2],'g' )
vn = [y2-y1 x1-x2];
if vn*[x1 y1]' >0
  en = vn/norm(vn);
else
  en = -vn/norm(vn);
end
plot([0 10*en(1)], [0 10*en(2)],':g' )
plot([0 en(1)], [0 en(2)],'g' )
q=en*[x1 y1]';
plot(en(1)*q, en(2)*q, '+g' )
[hx hy] = ginput(1);
plot(hx, hy, 'or')
vh = [hx hy]';
p=en*vh;
plot([ 0  hx], [0 hy],'r' )
plot([en(1)*q en(1)*p], [en(2)*q en(2)*p],'r' )
plot(en(1)*p, en(2)*p,'*r' )
