Deine Bezeichnungen von V1 und V2 passen in der Zeichnung nicht zu den Werten. V1 und V2 sind offensichtlich als Differenzvektoren angegeben. Insofern ist die Angabe V1 = E2 schon mal falsch, was du ja auch in deinem Code eindrucksvoll belegst:
Delphi-Quellcode:
E2.x := p.x + v1.x;
E2.y := p.y + v1.y;
E2.z := p.z + v1.z;
Demnach müsste die Berechnung mit dieser Notation also folgendermaßen sein:
Delphi-Quellcode:
v3 := v1 X v2
E3 := E2 + k*v3
oder im Code:
Delphi-Quellcode:
v3.x := (v1.y*v2.z) - (v2.y*v1.z);
v3.y := (v1.z*v2.x) - (v2.z*v1.x);
v3.z := (v1.x*v2.y) - (v2.x*v1.y);
Der Faktor k muss dann eben so gewählt werden, daß die Abstandsbedingung eingehalten wird - sollte nicht so schwer sein. Du kanns k auch negativ machen, um die zweite mögliche Lösung zu bekommen, die nach den gegebenen Bedingungen möglich ist.