Nee, ich zähle nicht anders?
Deine Formel gilt hat nicht für Slice(Polygon) und wäre auch nur so wie gezeigt richtig, wenn du den 1. Punkt als letzen Punkt nochmal drin hast.
Ich brauch das für die Berechnung von Volumen und Schwerpunkt von Spannungskörpern bei schiefer Biegung für meine Polyederklasse. Polyeder sind quasi räumliche N-Ecke. Da gibt man die Eckpunkte und die einzelnen Begrenzungsebenen an. Voraussetzung ist hierbei, daß alle Ebenen mathematisch positiv eigegeben worden sind. Hierfür wollte ich eine kleine Überprüfung schreiben und falls nicht dann die Punkte in umgekehrter Reihenfolge setzen.
Delphi-Quellcode:
Polyeder.Clear;
Polyeder.AddPoint(1, 1, 0);
Polyeder.AddPoint(4, 1, 0);
Polyeder.AddPoint(4, 6, 0);
Polyeder.AddPoint(1, 6, 0);
Polyeder.AddPoint(4, 6, 10);
Polyeder.AddPlane([0, 3, 2, 1]);
Polyeder.AddPlane([1, 2, 4]);
Polyeder.AddPlane([1, 4, 0]);
Polyeder.AddPlane([4, 3, 0]);
Polyeder.AddPlane([3, 4, 2]);
ShowMessage(Format('%.3f', [Polyeder.Volumen]));
C := Polyeder.Center;
ShowMessage(Format('%.3f', [C.X]));
ShowMessage(Format('%.3f', [C.Y]));
ShowMessage(Format('%.3f', [C.Z]));