Das Kreuzprodukt multipliziert ja zwei Vektoren:
Delphi-Quellcode:
v1 = (-5, 0,-5)
v2 = (-5, 0, 5)
v3.x := (v1.y*v2.z) - (v2.y*v1.z);
=> 0*5 - 0*-5 = 0
v3.y := (v1.z*v2.x) - (v2.z*v1.x);
=> -5*-5 - 5*-5 = 50
v3.z := (v1.x*v2.y) - (v2.x*v1.y);
=> -5*0 - -5*0 = 0
Da v1 und v2 senkrecht aufeinander stehen, ist |v3| = |v1|*|v2|, also dem Produkt der Längen der beiden Vektoren. Da beide Längen aber gleich sind, musst du k := 1/|v1| = 1/sqrt(50) setzen, damit v3 die gleiche Länge bekommt, wie die beiden andere v-Vektoren. Da v3 nur einen y-Anteil hat (v1 und v2 haben jeweils nur x/z-Anteile, spannen daher also eine Ebene in x/z auf), errechnet sich der zu ca. 7.
Dabei ist anzumerken, daß deine Lösung für E3 = (5, 5, 0) einen Abstand zu E2 = (5, 0, 0) von Sqrt((5-5)² + (5-0)² + (0-0)²) = Sqrt(25) hat, während der Abstand zwischen E1 = (10, 0, 5) und E2 mit Sqrt((10-5)² + (0-0)² + (5-0)²) = Sqrt(50) ist, was deiner Abstandsbedingung widerspricht. Der korrekte Wert für E3 wäre demnach (5, Sqrt(50), 0).