|
bester Stefan, falls ihren Polyheder Convex sind, und ihre Liste von Punkte in 3D (=mypoints) auch die ConvexHull3D (= ch3D) gleich ist, ist ja einfach um das Volumen zu berechnen : nimm das Barycenter b als Basispunkt und jeder Dreieck {a,b,c} des Polyhedrons als Grundflach eines unregelmassiges Terahedrons. Das Volumen ist dann cen:=bary[mypoints]; HullVolume[mypoints_,ch3D_]:=1/6* Apply[(mypoints[[#1]]-cen).Cross[ mypoints[[#2]]-cen,mypoints[[#3]]-cen]&,(Flatten[ Thread[ z[First[#], Partition[Rest[#],2,1] ]] &/@ ch3D ,1]/.z[q__]:>Flatten[{q}]),1] HullArea[mypoints_,ch3D_]:=1/2*Plus@@Apply[norm[Cross[(mypoints[[#2]]- mypoints[[#1]]),(mypoints[[#3]]-mypoints[[#2]])]]&,(Flatten[ Thread[ z[ First[#],Partition[Rest[#],2,1] ]] &/@ ch3D ,1]/.z[q__]:>Flatten[{q}]),1] Achtung: das ch3D soll eine liste von Indices der Hull-punkte in mypoints sein, mit jeder Facet des Polyhedrons als eine Sub-Liste gegeben, und die Folge der Punkte soll die Rechterhandregel berueksichtigen : jeder Facet soll eine Ausenorientation haben : {a,b,c} und {a,c,b} haben als orientierte Flache ein uterchiedliches Vektorzeichen. Um Sie wollen schik ich sie meinen Notebuch ConvexHull3D. wouter. w.meeussen.vdmcc@XXXXXXX.be tel +32 (0) 51 33 21 11 fax +32 (0) 51 33 21 75 -----Original Message----- From: Stefan Fleck <btbt11@XXXXXXX.de> To: dmug@XXXXXXX.ch <dmug@XXXXXXX.ch> Date: Friday, April 23, 1999 9:11 AM Subject: Polyeder-Volumen Gibt es denn eine Moeglichkeit, das Volumen von unregelmaessigen, mit Mathematica gezeichneten Polyedern ohne weiteren Aufwand zu bestimmen? Da sie als eine Liste von Polygonen gespeichert sind, ist ihr Volumen ja eindeutig festgelegt, es fehlt lediglich der Befehl: Volume [ ...] - oder gibt es diesen unter anderem Namen? Stefan Fleck Stefan Fleck Dep. of Plant Ecology Bayreuth University D-95440 Bayreuth PLEASE NOTE THE CHANGED E-MAIL ADDRESS: stefan.fleck@XXXXXXX.de Phone ++49(0)921-552575 Fax ++49(0)921-552564 |