Zylinder ausschneiden < Topologie+Geometrie < Hochschule < Mathe < Vorhilfe
|
Status: |
(Frage) reagiert/warte auf Reaktion | Datum: | 17:01 Mi 10.07.2013 | Autor: | algieba |
Hallo
Ich habe ein Frage, an der ich langsam verzweifle.
Die Voraussetzungen:
Ich habe eine Zylindermantelfläche im [mm] $\IR^3$, [/mm] die beliebig gedreht oder verschoben sein kann. Diese Mantelfläche wird definiert durch eine Position $p [mm] \in \IR^3$, [/mm] durch einen Vektor [mm] $a\in \IR^3$ [/mm] der die Achse des Zylinders bezeichnet, und durch einen Radius $r [mm] \in \IR$. [/mm] Die Mantelfläche ist also vorerst mal unendlich lang.
Nun habe ich endlich viele Punkte [mm] $x_1,...,x_n$ [/mm] die auf der Mantelfläche liegen und eine Fläche auf der Mantelfläche einschließen Diese Punkte sind im Uhrzeigersinn geordnet, das bedeutet also dass [mm] $x_1$ [/mm] mit [mm] $x_2$ [/mm] verbunden wird, [mm] $x_2$ [/mm] mit [mm] $x_3$ [/mm] usw. bis [mm] $x_n$ [/mm] mit [mm] $x_1$ [/mm] verbunden wird.
Das Ziel:
Jeder Kreis muss in meinem Fall in ein 16-Eck zerlegt werden, da es anders nicht verarbeitet werden kann. Ich möchte also diese ausgeschnittene Fläche die ja auf einer runden Fläche liegt, in so viele Flächen zerlegen, dass es bei einem ganzen Zylinder ca 16 Ecken wären. (Ist schwer zu erklären, fragt nach wenn ihr was nicht versteht).
Mein Ansatz:
Ich habe mir überlegt, dass man am besten den Zylinder in den Ursprung verlegt, und die Achse auf die z-Achse dreht. In der Anwendung muss ich natürlich nur die Punkte [mm] $x_1$ [/mm] bis [mm] $x_n$ [/mm] dahin verschieben. Dann wird es einfacher zu rechnen. Das mache ich indem ich von allen Punkten den Punkt $p$ abziehe, dann liegt der Zylinder schon einmal im Ursprung ist aber noch verdreht. Diese Drehung entferne ich indem ich eine Drehung um [mm] $\pi$ [/mm] um die Achse durchführe, die genau zwischen der Zylinderachse und der z-Achse liegt.
Dann stehe ich vor dem Problem. Ich muss die äußersten Punkte der Fläche erkennen, und den Winkel zwischen den Punkten bestimmen, um die Anzahl der Ecken in diesem Bereich zu bestimmen. Dann könnte ich den Kreisauschnitt mit so vielen Schritten durchlaufen, und immer senkrecht nach oben gehen, und einen Punkt erzeugen wenn ich eine Verbindungslinie schneide. Danach müssen es also mehr Punkte sein, da auf den Verbindungsstrecken bei jeder Ecke ein Punkt erzeugt wird.
Meine beiden Probleme und konkreten Fragen sind nun:
- Wie finde ich die äußersten Punkte heraus? Kann ich dazu einfach die Mitte aller Punkte nehmen, und dann die beiden (können auch mehr sein) weitesten Punkte in xy-Richtung nehmen?
- Wie erkenne ich bei dem senkrecht nach oben gehen, ob ich eine Verbindungslinie schneide, und ob ich dann innen oder außen von der Fläche bin?
Ich hoffe ich konnte alles einigermaßen anschaulich erklären, es ist nicht einfach das mit Worten zu beschreiben. Wenn noch etwas unklar ist kann ich auch vielleicht noch einige Zeichnungen erstellen.
Vielen Dank und viele Grüße
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 16:02 Do 11.07.2013 | Autor: | leduart |
Hallo
wenn die Punkte auf einem geraden Zylinder liegen, kannst du den doch aufschneiden und in die Ebene legen?
warum sprichst du von "Kreis", wenn du ein n-Eck hast, was ja wohl nicht mal konvex ist?
Was willst du erreichen?
was willst du mit deinem n-Eck machen, und wo genau treten die 16 Ecken auf.
Kannst du ein Bsp an einem aufgeschnittenen Zylinder aufzeichnen und agen, was du eigentlich mit deinen n Punkten willst?
Gruss leduart
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 12:23 Fr 12.07.2013 | Autor: | algieba |
Hallo
Danke für die Bereitschaft mir zu helfen. Ich habe nun ein Bild erstellt. Ich hoffe damit wird es klarer:
[Dateianhang nicht öffentlich]
Das ist der aufgerollte Zylinder. Normalerweise ist es natürlich ein Kreiszylinder, jedoch benötige ich ihn als "Polygon"-Zylinder, d.h. die Grundfläche ist nicht der Kreis sondern ein 16-eck. Darum habe ich das Bild in 16 Streifen zerteilt.
Nun habe ich die bekannten Punkte [mm] $x_1,x_2,x_3,x_4$ [/mm] die ein Polygon auf der Zylinderoberfläche beschreiben. Wir können im Übrigen vorerst davon ausgehen, dass das Polygon konvex ist. Da mein Programm nur mit ebenen Flächen umgehen kann, muss ich ihm die Eckpunkte der Schnittmengen von den 16 "Streifen" des Zylinders und des Polygons sagen. Dazu muss ich die grünen Punkte berechnen. Lasst euch nicht davon irritieren, dass bei manchen Flächen nicht alle Eckpunkte in einer Ebene liegen. Damit kann das Programm automatisch umgehen. Das sollte also nicht das Problem sein.
Nachträgliche Ergänzung:
Das mit dem Abrollen des Zylinders in die Ebene könnte zu einem Problem werden, wenn das Polygon dann von der Schnittkante zerschnitten wird. Könnte es helfen, wenn ich den Schwerpunkt des Polygons berechne, und dann auf der entgegengestzten Seite den Schnitt mache? Oder gibt es da auch Fälle bei denen es schiefgehen kann?
Vielen Dank für die Hilfe
Viele Grüße
Dateianhänge: Anhang Nr. 1 (Typ: png) [nicht öffentlich]
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 14:59 Fr 12.07.2013 | Autor: | leduart |
Hallo
ich denke es ist egal, wo du den Zylinder aufschneidest, solange es an einer der 16 Kanten ist und du die erste und letzte Kante identifizierst. dann kannst du leicht alle Schnittpunkte berechnen, Strecke zwischen [mm] x_i [/mm] und [mm] x_{i+1} [/mm] mit x1=a schneiden, wobei [mm] x1_i\le [/mm] a [mm] \le x1_{i+1} [/mm] und a eine der Kantenorte
wozu brauchst du die Schnittpunkte?
Gruss leduart
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 15:06 Mo 15.07.2013 | Autor: | algieba |
Hallo
> Hallo
> ich denke es ist egal, wo du den Zylinder aufschneidest,
> solange es an einer der 16 Kanten ist und du die erste und
> letzte Kante identifizierst. dann kannst du leicht alle
> Schnittpunkte berechnen, Strecke zwischen [mm]x_i[/mm] und [mm]x_{i+1}[/mm]
> mit x1=a schneiden, wobei [mm]x1_i\le[/mm] a [mm]\le x1_{i+1}[/mm] und a eine
> der Kantenorte
> wozu brauchst du die Schnittpunkte?
Die Schnittpunkte brauche ich als Eckpunkte der ebenen Flächen. Ich kann meinem Programm eine Menge von solchen Punkten übergeben, und das erzeugt dann eine Ebene durch diese Punkte.
Das Prinzip sieht gut aus, vielen Dank. Kann mir noch jemand auf die Schnelle die Funktion sagen wie ich einen Zylinder in die Ebene abrolle? Ich könnte sie zwar selber herleiten, aber vielleicht weiß ja jemand gerade zufällig einen guten Link, wo das beschrieben ist. Das würde mir viel Zeit sparen. Bei google habe ich bisher nichts gefunden.
Viele Grüße
> Gruss leduart
>
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 16:52 Mo 15.07.2013 | Autor: | leduart |
Hallo
du rechnest einfach in Zylinderkoordinaten, [mm] x=rcos(\phi) [/mm] daraus [mm] \phi [/mm] (im Bogenmass)
wenn du bei x=0 aufschneidest. In der x-z ebene haben deine punkte dann die Koordinaten (x,z) [mm] x=r*\phi [/mm] und [mm] x=r*2\pi=0 [/mm] identifiziert.
Wegen der Nichteindeutigkeit von [mm] \ph(x) [/mm] muss ausserdem noch [mm] y=rsin\phi [/mm] betrachtet werden, es tritt aber in der Ebene nicht auf.
gruss leduart
|
|
|
|