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
|