Das Programm 'showhessenf.m' zeigt die Verbindungsgerade zwischen zwei Punkten, dann den zugehörigen Normaleneinheitsvektor mit seiner Trägergeraden und dann den Ortsvektor eines dritten Punktes. Die Projektion dieses Ortsvektors minus die Projektion eines Verankerungspunktes der Geraden zeigt den Abstand des dritten Punktes von der Geraden. Ist dieser Abstand Null, so liegt der Punkt auf der Geraden.
% SHOWHESSENF Darstellung der Funtionsweise der Hesse'schen Normalform clf; hold on disp('SHOWHESSENF Darstellung der Funtionsweise der Hesse'schen 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' )