Rotation eines Körpers < Topologie+Geometrie < Hochschule < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 10:52 Mo 09.12.2013 | Autor: | pojo |
Aufgabe | Die Geometrie eines Zylinders (3D, nur die Mantelfläche, keine inneren Punkte) liegt in Form von diskreten Punkten in einer Matrix vor. Dabei ist die Längsachse durch i=1,n Punkte diskretisiert und für jeden Punkt i liegen j=1,60 diskrete Radien vor (also im Abstand von 6° ein Radius). Man kann sich das also als eine Menge von übereinander liegenden Kreisscheiben vorstellen.
Für einen Zylinder mit konstantem Radius wären die Werte für j immer gleich. Ich möchte diesen Zylinder nun kippen und gebe dafür einen bestimmten Winkel [mm] \alpha [/mm] vor.
Draufsicht: (O)
Seitenansicht Zylinder (Auslangslage)
|----| i=1
|----| i=2
|----| ...
|----| i=n
Seitenansicht Zylinder (gekippt)
.../----/
../----/
./----/
Die Zeichen denke man sich weg. |
So, mein Problem ist nun das folgende. Ich lasse eine Doppelschleife über alle i und j laufen und berechne dann für jeden Punkt die x und y Koordinate des Punktes (i,j), sodass ich jede "Kreisscheibe" i des Zylinders in der x-y-Ebene darstellen kann. Ich hoffe das ist verständlich erklärt..
Also z.B. für eine Kreisscheibe an der Stelle i=10 bekomme ich für alle 60 diskreten Radien dann jeweils die x und y-Koordinaten:
for j=1,60:
[mm] px=r_j*cos\phi_j
[/mm]
[mm] py=r_j*sin\phi_j
[/mm]
plot(px,py)
end for
würde mir einen Kreis ausgeben.
Wenn ich den Zylinder wie oben skizziert kippen möchte, dann ist die Auslenkung (der Einfachheit halber nur in x-Richtung) ganz oben =0 und an der längsten Stelle [mm] =L*sin(\alpha), [/mm] richtig? Die Koordinaten px würden sich also ändern, während alle py gleich bleiben. Ich kippe den Zylinder also einfach, indem ich alle Werte px neu berechne nach dem Schema: px = px + L(i)*sin [mm] \alpha
[/mm]
Als Ergebnis habe ich dann den Zylinder, wie er oben skizziert ist.
Und nun kommt mein Problem. Für die weitere Berechnung benötige ich wieder ausschließlich die Radien der diskreten Punkte und nicht px und py. Wie bekomme ich nun den entsprechenden Radius heraus, der sich aus dem neuen Wert für px und py ergibt? Ich dachte, es würde mit [mm] r=\sqrt{px^2 + py^2} [/mm] funktionieren, allerdings bekommt der Zylinder dann von oben betrachtet eine Herzform und ist nicht mehr rund. Der Effekt wird größer mit größer werdendem Kipp-Winkel. Wo steckt der Fehler?
|
|
|
|
Hallo pojo
> Die Geometrie eines Zylinders (3D, nur die Mantelfläche,
> keine inneren Punkte) liegt in Form von diskreten Punkten
> in einer Matrix vor. Dabei ist die Längsachse durch i=1,n
> Punkte diskretisiert und für jeden Punkt i liegen j=1,60
> diskrete Radien vor (also im Abstand von 6° ein Radius).
> Man kann sich das also als eine Menge von übereinander
> liegenden Kreisscheiben vorstellen.
>
> Für einen Zylinder mit konstantem Radius wären die Werte
> für j immer gleich. Ich möchte diesen Zylinder nun kippen
> und gebe dafür einen bestimmten Winkel [mm]\alpha[/mm] vor.
>
> Draufsicht: (O)
>
> Seitenansicht Zylinder (Auslangslage)
> |----| i=1
> |----| i=2
> |----| ...
> |----| i=n
> Seitenansicht Zylinder (gekippt)
> .../----/
> ../----/
> ./----/
> Die Zeichen denke man sich weg.
>
>
> So, mein Problem ist nun das folgende. Ich lasse eine
> Doppelschleife über alle i und j laufen und berechne dann
> für jeden Punkt die x und y Koordinate des Punktes (i,j),
> sodass ich jede "Kreisscheibe" i des Zylinders in der
> x-y-Ebene darstellen kann. Ich hoffe das ist verständlich
> erklärt..
>
> Also z.B. für eine Kreisscheibe an der Stelle i=10 bekomme
> ich für alle 60 diskreten Radien dann jeweils die x und
> y-Koordinaten:
>
> for j=1,60:
> [mm]px=r_j*cos\phi_j[/mm]
> [mm]py=r_j*sin\phi_j[/mm]
> plot(px,py)
> end for
>
> würde mir einen Kreis ausgeben.
>
> Wenn ich den Zylinder wie oben skizziert kippen möchte,
> dann ist die Auslenkung (der Einfachheit halber nur in
> x-Richtung) ganz oben =0 und an der längsten Stelle
> [mm]=L*sin(\alpha),[/mm] richtig? Die Koordinaten px würden sich
> also ändern, während alle py gleich bleiben. Ich kippe
> den Zylinder also einfach, indem ich alle Werte px neu
> berechne nach dem Schema: px = px + L(i)*sin [mm]\alpha[/mm]
>
> Als Ergebnis habe ich dann den Zylinder, wie er oben
> skizziert ist.
>
> Und nun kommt mein Problem. Für die weitere Berechnung
> benötige ich wieder ausschließlich die Radien der
> diskreten Punkte und nicht px und py. Wie bekomme ich nun
> den entsprechenden Radius heraus, der sich aus dem neuen
> Wert für px und py ergibt? Ich dachte, es würde mit
> [mm]r=\sqrt{px^2 + py^2}[/mm] funktionieren, allerdings bekommt der
> Zylinder dann von oben betrachtet eine Herzform und ist
> nicht mehr rund. Der Effekt wird größer mit größer
> werdendem Kipp-Winkel. Wo steckt der Fehler?
So wie ich die Transformation, die du beschreibst,
geometrisch interpretiere, handelt es sich dabei
gar nicht um eine Rotation oder Kippung, sondern
um eine einfache Scherungsabbildung. Du machst
aus einem ursprünglich geraden Zylinder (mit
Mantellinien, die senkrecht auf der Grundfläche
stehen) einen neuen, schiefen Zylinder mit der
alten Grundfläche und der gleichen Höhe. Dabei
bleibt jeder in einer zur Grundfläche parallel
liegenden Ebene liegende Querschnitt ein
Kreis mit dem ursprünglichen Radius. Es kommen
also gar keine unterschiedlichen Radien heraus.
Im Modell könntest du diese Transformation mit
einem Stapel von Münzen oder Bierdeckeln
darstellen, wenn du aus dem zuerst geraden
Turm einen schiefen Turm machst.
LG , Al-Chw.
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 15:38 Mo 09.12.2013 | Autor: | pojo |
Hallo,
danke für deine Antwort. Im Grunde hast du recht, allerdings löst das mein Problem noch nicht.
Das Modell mit dem Stapel von Bierdeckeln ist korrekt. Nehmen wir nun als Beispiel den obersten Bierdeckel, der am weitesten verschoben ist. Der Ursprung des Koordinatensystems ist nach wie vor die Mitte des untersten Bierdeckels, alle Bierdeckel darüber bekommen daher unterschiedliche Werte für jeden diskreten Radius, da sie sich ja quasi von der Achse weg bewegen bzw. die Achse nicht mehr im Mittelpunkt der verschobenen Deckel liegt. Natürlich ist der Radius an sich konstant, aber ich wähle ja nicht für jeden Bierdeckel ein eigenes Koordinatensystem. Es handelt sich hier um eine Geometrie eines durchströmten Zylinders für ein CFD-Modell und die Daten müssen genau in der Form vorliegen, wie ich es beschrieben habe.
Da die Geometrie in der Höhe sehr viel größer ist als der Radius werden nur sehr kleine Winkel für die Schrägstellung verwendet. Bei sehr kleinen Winkeln (0.001°) ist der Effekt nicht sichtbar und jede Scheibe ist rund. Beim Faktor 10 ergibt sich jedoch etwa ab der Mitte eine Herzform der Kreise, die sich nach oben immer stärker ausbildet.
|
|
|
|
|
> Hallo,
>
> danke für deine Antwort. Im Grunde hast du recht,
> allerdings löst das mein Problem noch nicht.
>
> Das Modell mit dem Stapel von Bierdeckeln ist korrekt.
> Nehmen wir nun als Beispiel den obersten Bierdeckel, der am
> weitesten verschoben ist. Der Ursprung des
> Koordinatensystems ist nach wie vor die Mitte des untersten
> Bierdeckels, alle Bierdeckel darüber bekommen daher
> unterschiedliche Werte für jeden diskreten Radius, da sie
> sich ja quasi von der Achse weg bewegen bzw. die Achse
> nicht mehr im Mittelpunkt der verschobenen Deckel liegt.
> Natürlich ist der Radius an sich konstant, aber ich wähle
> ja nicht für jeden Bierdeckel ein eigenes
> Koordinatensystem. Es handelt sich hier um eine Geometrie
> eines durchströmten Zylinders für ein CFD-Modell und die
> Daten müssen genau in der Form vorliegen, wie ich es
> beschrieben habe.
>
> Da die Geometrie in der Höhe sehr viel größer ist als
> der Radius werden nur sehr kleine Winkel für die
> Schrägstellung verwendet. Bei sehr kleinen Winkeln
> (0.001°) ist der Effekt nicht sichtbar und jede Scheibe
> ist rund. Beim Faktor 10 ergibt sich jedoch etwa ab der
> Mitte eine Herzform der Kreise, die sich nach oben immer
> stärker ausbildet.
Hallo pojo, wenn wir uns bei der Interpretation der
Geometrie der Fläche einig sind (schiefer Zylinder).
dann kann das mit der "Herzform" einfach nicht stimmen.
Ich kann dir eine komplette Parametrisierung angeben,
welche alle darzustellenden Punkte umfasst:
Der Zylinder habe den Radius R und die Höhe H.
Zum Index i gehöre der Schnittkreis in der Höhe
$\ z(i)\ =\ [mm] \frac{i*H}{n}$ [/mm] . Der Index i läuft von i=0
(Boden, z=0) bis zu i=n (Deckfläche, z=H) .
Der schiefe Zylinder habe den Neigungswinkel [mm] \alpha [/mm]
(von der ursprünglichen vertikalen Achse aus
gemessen).
Dann hat der Schnittkreis in der Höhe z(i) den
Mittelpunkt
$\ [mm] (\,z(i)*tan(\alpha)\ [/mm] |\ 0\ |\ [mm] z(i)\,)\ [/mm] =\ [mm] \left(\,\frac{i*H}{n}*tan(\alpha)\ \right|\ [/mm] 0\ [mm] \left|\ \frac{i*H}{n}\,\right)$ [/mm]
Der Punkt P(i,j) mit dieser durch i bestimmten
z-Koordinate und mit dem Winkel [mm] $\phi_j\ [/mm] =\ j*6$°
(j=0 ...... 59) hat dann die Koordinaten:
P(i,j) : $\ [mm] \left(\,\frac{i*H}{n}*tan(\alpha)+R*cos(\phi_j)\ \right|\ R*sin(\phi_j)\ \left|\ \frac{i*H}{n}\,\right)$
[/mm]
LG , Al-Chw.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 09:22 Di 10.12.2013 | Autor: | pojo |
Danke!
Es lag scheinbar an der Darstellung der x-Koordinate, so funktioniert es nun.
|
|
|
|