next up previous contents
Nächste Seite: Abbildungen in homogenen Koordinaten Aufwärts: M-Files zur Vektorgeometrie Vorherige Seite: M-Files zur Vektorgeometrie   Inhalt

Demonstration der Funktionsweise der Hesse'schen Normalform

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' )



Stefan Adam 2006-03-07