# Java3D: Flächen teilen



## aze (25. Okt 2010)

Hi

Kann man in Java3D Flächen in zwei Hälften teilen ?


----------



## OliverKroll (26. Okt 2010)

Polygone zu zerlegen scheint in Java3D ohne weiteres nicht möglich zu sein. Mußt du wohl selber programmieren.

Möglichkeiten sind der Weiler-Atherton-Algorithmus:
http://www.integis.ch/documents/ISem_Opprecht_Overlay_2002-02-28.pdf  (Seite 15 ff),
Weiler-Atherton-Algorithmus ? Wikipedia ,
weiler-atherton ,
http://pilat.free.fr/english/pdf/weiler.pdf ,
Weiler-Atherton Algorithm ,
http://www.uni-forst.gwdg.de/~wkurth/cb/html/cg_v07c.doc ,
Weiler-Atherton Clipping Applet (mit Applet);

und der Vatti-Algorithmus:
Vatti clipping algorithm - Wikipedia, the free encyclopedia ,
A generic solution to polygon clipping (hier nicht öffentlich einsehbar),
wirst du wohl als Buch im Buchhandel bestellen müssen.

Der Weiler-Atherton-Algorithmus ist vermutlich immer noch zu finden im Foley-van-Dam Computer Graphics. Principles and Practice. Second Edition in C.: Principles and Practice in C: Amazon.de: James D. Foley, Andries Van Dam, Steven K. Feiner: Englische Bücher (englisch und schwer).

:rtfm:


----------



## Marco13 (26. Okt 2010)

Erstaunlich viel erstaunlich spezifische Antwort für eine so unspezifische Frage... 


(0,0)-(1,0)
(1,1)-(1,1)
-> Aufteilen ->
(0,0)-(0.5,0)
(1,1)-(0.5,1)
und
(0.5,0)-(1,0)
(0.5,1)-(1,1)

Fertig


----------



## aze (27. Okt 2010)

Vielen Dank für die sehr ausführliche Beantwortung !


----------



## aze (1. Nov 2010)

Hi

Ich hab mir nochmal die Links angeguckt.

Ich meinte mit schneiden nicht "überschneiden" sondern in zwei teile brechen.Hat dafür einer eine Idee ?


----------



## Marco13 (1. Nov 2010)

Ein Zerteilen ist ein Überscheiden, nämlich zwischen dem Polygon und einem unendlich großen Quadrat. Oder Würfel? Geht es überhaupt um 3D?


----------



## aze (1. Nov 2010)

Marco13 hat gesagt.:


> Geht es überhaupt um 3D?



Jepp


----------



## Marco13 (1. Nov 2010)

*seufz* Um mal mit dem Zaunpfahl winkend deine Frage zu beantworten: Ja, man kann in Java3D Flächen in zwei Hälften teilen.


----------



## aze (3. Nov 2010)

Hmm und wie ?


----------



## Illuvatar (3. Nov 2010)

;(;(;(
Wenn du uns auch nur ein kleines bisschen Information geben würdest, was du machen willst, dann könnte dir bestimmt auch jemand helfen...

Insbesondere was du unter "Fläche" (eine mathematische Ebene / ein Polygon / vllt eine Art HeightMap / etwas was konkret mit Java3D zu tun hat wie z.B. eine flache Box / ...) und unter "teilen" (hängt natürlich auch von "Fläche" ab, aber z.B.: einfach nur mathematisch das Polygon teilen / die Box in 2 Boxen splitten und schön animiert voneinander wegbewegen, sodass es aussieht als würde sie zerbrechen / ...) verstehst.

Wenn jetzt nur ne 3-Wort-Antwort kommt, schließ ich den Thread...


----------



## Marco13 (3. Nov 2010)

Dass deine Fragestellung nicht genau genug war, um sie beantworten zu können, sollte inzwischen klar geworden sein. Schau' dir an, wie man ein Dreieck mit einer Linie in zwei Hälften teilt. Das ist so frickelig, dass ich jedem Raten würde, es mit einer AWT "Area" zu machen. Und dann bastel' dir deine Geometrie da draus :bahnhof:


----------



## aze (4. Nov 2010)

Illuvatar hat gesagt.:


> ;(;(;(
> Wenn du uns auch nur ein kleines bisschen Information geben würdest, was du machen willst, dann könnte dir bestimmt auch jemand helfen...
> 
> Insbesondere was du unter "Fläche" (eine mathematische Ebene / ein Polygon / vllt eine Art HeightMap / etwas was konkret mit Java3D zu tun hat wie z.B. eine flache Box / ...) und unter "teilen" (hängt natürlich auch von "Fläche" ab, aber z.B.: einfach nur mathematisch das Polygon teilen / die Box in 2 Boxen splitten und schön animiert voneinander wegbewegen, sodass es aussieht als würde sie zerbrechen / ...) verstehst.
> ...



Achso.Ich meine ein Geometry Object(TriangleArray),das in einer Shape3D enthalten ist.


----------



## aze (4. Nov 2010)

Marco13 hat gesagt.:


> Dass deine Fragestellung nicht genau genug war, um sie beantworten zu können, sollte inzwischen klar geworden sein. Schau' dir an, wie man ein Dreieck mit einer Linie in zwei Hälften teilt. Das ist so frickelig, dass ich jedem Raten würde, es mit einer AWT "Area" zu machen. Und dann bastel' dir deine Geometrie da draus :bahnhof:



Wie kann man denn aus einer Shape3d eine Area machen ?


----------



## Marco13 (4. Nov 2010)

Ach so, das ist natürlich ganz einfach:

```
Shape3D[] divide(Shape3D shape, Plane plane)
{
    return com.sun.java.special.java3d.secret.internal.Magic.doWhatIWantWith(shape, plane);
}
```

Mal im Ernst: Das wirkt schon fast *T*rollig :noe:


----------



## OliverKroll (11. Nov 2010)

Bist du schon weitergekommen ? :rtfm:
Der Weiler-Atherton-Algorithmus ist das richtige Verfahren, um Polygone zu zerlegen.
Im dreidimensionalen Raum liegen Polygone allerdings normalerweise nicht aufeinander, sondern müssen aufeinander projiziert werden. Soooviel brauchst du also nicht selber zusätzlich zu programmieren.


----------



## aze (11. Nov 2010)

Hi

Ich bin auf der Arbeit im Moment mit anderen Problemen beschäftigt.Ich werde mich eventuell demnächst wieder damit beschäftigenTrotzdem danke der Nachfrage !

Und sorry,wenn ich diesmal etwas maulfaul war bei diesen Thread.


----------

