Hier mal Pseudocode (JAVA ähnlich) dafür:
PHP-Code:
// p0 berechnen
Point3 p0 = new Point3(0,0,0);
for (
int i 0point.lengthi++) {
 
p0.x+=point[i].x;
 
p0.y+=point[i].y;
 
p0.z+=point[i].z;
}
p0.x/=point.length;
p0.y/=point.length;
p0.z/=point.length;

// Alle Vektoren auf p0 basieren
for (int i 0point.lengthi++) {
 
point[i].x-=p0.x;
 
point[i].y-=p0.y;
 
point[i].z-=p0.z;
}

// Gemitteltes Kreuzprodukt berechnen
Point3 pV = new Point3(0,0,0);
for (
int i 0point.lengthi++) {
 
pV.x+=point[i].y*point[(i+1)%point.length].point[i].z*point[(i+1)%point.length].y;
 
pV.y+=point[i].z*point[(i+1)%point.length].point[i].x*point[(i+1)%point.length].z;
 
pV.z+=point[i].x*point[(i+1)%point.length].point[i].y*point[(i+1)%point.length].x;
}
pV.x/=point.length;
pV.y/=point.length;
pV.z/=point.length;

// Alle Vektoren zurück heben
for (int i 0point.lengthi++) {
 
point[i].x+=p0.x;
 
point[i].y+=p0.y;
 
point[i].z+=p0.z;
}
// auch das Kreuzprodukt
pV.x+=p0.x;
pV.y+=p0.y;
pV.z+=p0.z;

//Ausgabe
println("Hesse Punkt   p0="+p0);
println("(Hesse Punkt) pV="+pV);
println("Hesse Vektor   V=("+p0+", "+pV+")"); 
Dies liefert für die Punkte:
Code:
( 10,    0,  0),      
(  0,   10,  1),      
(-10,    0,  0),      
(  0,  -10,  1),
das erwartete Ergebnis:
Code:
Hesse Punkt p0=(0.0, 0.0, 0.5) (Hesse Punkt) pV=(0.0, 0.0, 100.5) Hesse Vektor V=((0.0, 0.0, 0.5), (0.0, 0.0, 100.5))