Ich versuche, das shapely.geometry.Polygon
Modul zu verwenden, um den Bereich von Polygonen zu finden, aber es führt alle Berechnungen auf der xy
Ebene aus. Das ist gut für einige meiner Polygone, aber andere haben eine z
Dimension, so dass es nicht ganz das tut, was ich möchte.
Gibt es ein Paket, das mir entweder den Bereich eines planaren Polygons aus Die Polygone werden als Liste von Tupeln in der Form xyz
-Koordinaten gibt oder alternativ ein Paket oder einen Algorithmus, um das Polygon auf die xy
-Ebene zu drehen, damit ich shapely.geometry.Polygon().area
? [(x1,y1,z1),(x2,y2,z3),...(xn,yn,zn)]
dargestellt.
Hier ist die Herleitung einer Formel zur Berechnung der Fläche eines 3D-Flächenpolygons
Hier ist Python-Code, der es implementiert:
%Vor%Und um es zu testen, hier ist ein 10x5 Quadrat, das sich über den Kopf beugt:
%Vor%Das Problem war ursprünglich, dass ich es vereinfacht habe. Er muss den Einheitsvektor senkrecht zur Ebene berechnen. Die Fläche ist die Hälfte des Skalarprodukts davon und die Summe aller Kreuzprodukte, nicht die Hälfte der Summe aller Größen der Kreuzprodukte.
Dies kann etwas aufgeräumt werden (Matrix- und Vektorklassen würden es netter machen, wenn Sie sie haben, oder Standardimplementierungen von Determinanten / Kreuzprodukt / Punktprodukt), aber es sollte konzeptionell solide sein.
Dies ist der letzte Code, den ich benutzt habe. Es verwendet nicht formschön, sondern implementiert Stokes Theorem, um die Fläche direkt zu berechnen. Es baut auf @Tom Smilacks Antwort auf, die zeigt, wie es ohne Numpy geht.
%Vor%