matheraum.de
Raum für Mathematik
Offene Informations- und Nachhilfegemeinschaft

Für Schüler, Studenten, Lehrer, Mathematik-Interessierte.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Mathe
  Status Schulmathe
    Status Primarstufe
    Status Mathe Klassen 5-7
    Status Mathe Klassen 8-10
    Status Oberstufenmathe
    Status Mathe-Wettbewerbe
    Status Sonstiges
  Status Hochschulmathe
    Status Uni-Analysis
    Status Uni-Lin. Algebra
    Status Algebra+Zahlentheo.
    Status Diskrete Mathematik
    Status Fachdidaktik
    Status Finanz+Versicherung
    Status Logik+Mengenlehre
    Status Numerik
    Status Uni-Stochastik
    Status Topologie+Geometrie
    Status Uni-Sonstiges
  Status Mathe-Vorkurse
    Status Organisatorisches
    Status Schule
    Status Universität
  Status Mathe-Software
    Status Derive
    Status DynaGeo
    Status FunkyPlot
    Status GeoGebra
    Status LaTeX
    Status Maple
    Status MathCad
    Status Mathematica
    Status Matlab
    Status Maxima
    Status MuPad
    Status Taschenrechner

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Dt. Schulen im Ausland: Mathe-Seiten:Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
StartseiteMatheForenSonstige TransformationenKoordinatentransformation
Foren für weitere Studienfächer findest Du auf www.vorhilfe.de z.B. Astronomie • Medizin • Elektrotechnik • Maschinenbau • Bauingenieurwesen • Jura • Psychologie • Geowissenschaften
Forum "Sonstige Transformationen" - Koordinatentransformation
Koordinatentransformation < Sonstige < Transformationen < Analysis < Hochschule < Mathe < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Sonstige Transformationen"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Koordinatentransformation: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 20:21 Fr 12.06.2009
Autor: Paddi

Hallo,

ich benötige einen Ratschlag bezgl. einer möglichen Transformation von elliptischen Koordinaten in kartesische Koordinaten.

Ich entwickle zur Zeit ein Programm, welches den abendlichen örtlichen
Sternenhimmel anzeigt.

Dieses Programm verfügt dabei über eine Funktion, welche für jedes Himmelsobjekt elliptische Koordinaten in Form von Höhe (Y-Achse) und Azimut (X-Achse) angibt. (Höhe von 0 bis 90 Grad, Azimut von 0 bis 360 Grad)

Auf dem Monitor wird ein Ausschnitt von 60 Grad an der X-Achse und 50 Grad an der Y-Achse angezeigt. (Mit den Cursor - Tasten kann dann nach oben und zu den Seiten gescrollt werden)

Ich zeichne die Objekte auf der Monitor-Fläche bisher einfach im normalen Kartesischen Koordinatensystem. Dies hat zur Folge, dass die Sterne ab einer Höhe von ca. 60 Grad mehr und mehr in Breite und Höhe verzerrt werden, da es sich ja bei den Koordinaten nicht um kartesische Koordinaten handelt.

Meine Frage lautet nun, ob es möglich ist, eine Abbildung zu finden, welche es ermöglicht aus den elliptischen Koordinaten, entsprechend kartesische Koordinaten zu formen, welche ich dann auf dem Monitor auf dem dortigen kartesischen System ausgeben kann.

Auf dem Bildschirm errechnen sich die letztendlich angezeigten Pixelkoordinaten an der X-Achse, sowie Y-Achse,  durch die Grad-Spanne, welche jeweils angzeigt wird.
Bei der X-Achse sind das, wie oben erwähnt, 60 Grad. Also ist hier
1 Grad = FENSTERBREITE/ 60 Grad.

Bei der Y-Achse geschieht dies analog mit der FENSTERHOEHE / 50 Grad.

Der Koordinatenursprung liegt hier jeweils unten links.

Die Ursprünglichen elliptischen Koordinaten (In Grad) werden so in Pixel bereits umgerechnet. Somit liegen die elliptische Pixelkoordinaten vor, welche gezeichnet werden sollen. Dies erfolgt wie bereits erwähnt bisher kartesisch!

Vielleicht hat ja jemand eine Idee, wie man da vorgehen könnte.




        
Bezug
Koordinatentransformation: Antwort
Status: (Antwort) fertig Status 
Datum: 21:20 Fr 12.06.2009
Autor: Al-Chwarizmi


> Hallo,
>  
> ich benötige einen Ratschlag bezgl. einer möglichen
> Transformation von elliptischen Koordinaten in kartesische
> Koordinaten.
>  
> Ich entwickle zur Zeit ein Programm, welches den
> abendlichen örtlichen
>  Sternenhimmel anzeigt.
>  
> Dieses Programm verfügt dabei über eine Funktion, welche
> für jedes Himmelsobjekt elliptische Koordinaten in Form von
> Höhe (Y-Achse) und Azimut (X-Achse) angibt. (Höhe von 0 bis
> 90 Grad, Azimut von 0 bis 360 Grad)
>  
> Auf dem Monitor wird ein Ausschnitt von 60 Grad an der
> X-Achse und 50 Grad an der Y-Achse angezeigt. (Mit den
> Cursor - Tasten kann dann nach oben und zu den Seiten
> gescrollt werden)
>  
> Ich zeichne die Objekte auf der Monitor-Fläche bisher
> einfach im normalen Kartesischen Koordinatensystem. Dies
> hat zur Folge, dass die Sterne ab einer Höhe von ca. 60
> Grad mehr und mehr in Breite und Höhe verzerrt werden, da
> es sich ja bei den Koordinaten nicht um kartesische
> Koordinaten handelt.
>  
> Meine Frage lautet nun, ob es möglich ist, eine Abbildung
> zu finden, welche es ermöglicht aus den elliptischen
> Koordinaten, entsprechend kartesische Koordinaten zu
> formen, welche ich dann auf dem Monitor auf dem dortigen
> kartesischen System ausgeben kann.
>  
> Auf dem Bildschirm errechnen sich die letztendlich
> angezeigten Pixelkoordinaten an der X-Achse, sowie Y-Achse,
>  durch die Grad-Spanne, welche jeweils angzeigt wird.
> Bei der X-Achse sind das, wie oben erwähnt, 60 Grad. Also
> ist hier
>  1 Grad = FENSTERBREITE/ 60 Grad.
>  
> Bei der Y-Achse geschieht dies analog mit der FENSTERHOEHE
> / 50 Grad.
>  
> Der Koordinatenursprung liegt hier jeweils unten links.
>  
> Die Ursprünglichen elliptischen Koordinaten (In Grad)
> werden so in Pixel bereits umgerechnet. Somit liegen die
> elliptische Pixelkoordinaten vor, welche gezeichnet werden
> sollen. Dies erfolgt wie bereits erwähnt bisher
> kartesisch!
>  
> Vielleicht hat ja jemand eine Idee, wie man da vorgehen
> könnte.



Hallo Paddi,

ich frage mich, ob in dem Zusammenhang, den du schilderst,
der Begriff "elliptische Koordinaten" überhaupt Sinn macht.
Ich glaube eher nicht !
Azimut und Höhe in der Astronomie haben nichts mit ellip-
tischen Koordinaten zu tun, sondern sind Koordinaten in
einem sphärischen Koordinatensystem. Deine Probleme mit
den offensichtlichen Bildverzerrungen kann ich gut verstehen
und nachfühlen.
Wenn ich versuche, deinen Wunsch zu interpretieren, dann
würde ich den etwa so interpretieren:  Du möchtest in dem
rechteckigen Bildschirm ein Bild erhalten analog zu dem Bild,
das man erhalten würde, wenn man den Sternenhimmel
mit einer gewöhnlichen Kamera (natürlich abgesehen von
den Problemen betr. Lichtschwäche etc.) fotografieren
könnte. Ist es so ?  Da ich mich schon verschiedentlich mit
analogen Fragen beschäftigt habe, könnte ich vermutlich
helfen. Nur müsste ich sicher sein, was genau du suchst.

LG    Al-Chwarizmi

Bezug
                
Bezug
Koordinatentransformation: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 11:12 Mo 15.06.2009
Autor: Paddi

Hallo,

danke für die schnelle Antwort.

Genauso wird es sein. Wenn man eine Koordinate eines Objektes auf dem Bildschirm einfach so zeichnet, so wandert Sie, je höher die Höhe des Himmelsobjektes ist, zu weit an den Bildschirmrand.
(Weil die X-Punkte normalerweise, je höher das Objekt steht enger zu einander stehen müssten. Das tun sie jedoch nicht, wenn so gezeichnet wird, wie bisher)

Wenn jetzt zum Beispiel der Große Wagen sehr weit oben am Himmel steht, so werden sein Proportionen nicht korrekt angezeigt. Er wirkt unnatürlich und verzerrt.

Die X-Achse des Objektes verläuft eben nicht parallel zum Boden, sondern eher in Form einer nach oben geöffneten Parabel, welche je nach Höhe des Objektes eine stärkere oder schwächere Steigung hat.

Im Prinzip müsste man eine Abbildung finden, mit der man diese Objekte "sphärisch" aus der Sicht eines Betrachters, der auf der Erde steht zeichnen kann.

Ich versuche gerade einfach den Negativ-Effekt zu verringern, in dem ich eine Funktion schreibe, die die gezeichneten Objekte je nach Höhe, und Abstand zum Mittelpunkt des Bildschirmes, etwas mehr in Richtung des Bildschirmmittelpunktes zeichnet.

Ich bin für jede Idee offen!


Grüsse


Paddi

Bezug
                        
Bezug
Koordinatentransformation: pas de bricolage !
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 12:03 Mo 15.06.2009
Autor: Al-Chwarizmi

Hallo Paddi,

  

> Genauso wird es sein. Wenn man eine Koordinate eines
> Objektes auf dem Bildschirm einfach so zeichnet, so wandert
> Sie, je höher die Höhe des Himmelsobjektes ist, zu weit an
> den Bildschirmrand.
> (Weil die X-Punkte normalerweise, je höher das Objekt steht
> enger zu einander stehen müssten. Das tun sie jedoch nicht,
> wenn so gezeichnet wird, wie bisher)
>  
> Wenn jetzt zum Beispiel der Große Wagen sehr weit oben am
> Himmel steht, so werden sein Proportionen nicht korrekt
> angezeigt. Er wirkt unnatürlich und verzerrt.

Das ist ganz analog zu den Verzerrungen der []Mercator-Karte,
auf welcher Grönland so groß wie Afrika und die Antarktis
theoretisch unendlich groß ist.
  

> Die X-Achse des Objektes verläuft eben nicht parallel zum
> Boden, sondern eher in Form einer nach oben geöffneten
> Parabel, welche je nach Höhe des Objektes eine stärkere
> oder schwächere Steigung hat.
>  
> Im Prinzip müsste man eine Abbildung finden, mit der man
> diese Objekte "sphärisch" aus der Sicht eines Betrachters,
> der auf der Erde steht zeichnen kann.

Eigentlich nicht sphärisch, sondern als Zentralprojektion
auf eine Ebene, die senkrecht zur Blickrichtung steht.
  

> Ich versuche gerade einfach den Negativ-Effekt zu
> verringern, in dem ich eine Funktion schreibe, die die
> gezeichneten Objekte je nach Höhe, und Abstand zum
> Mittelpunkt des Bildschirmes, etwas mehr in Richtung des
> Bildschirmmittelpunktes zeichnet.

C' est du bricolage ...
Machen wir 's doch exakt !
  
LG    Al-Chwarizmi

Bezug
                        
Bezug
Koordinatentransformation: Antwort
Status: (Antwort) fertig Status 
Datum: 13:06 Mo 15.06.2009
Autor: Al-Chwarizmi

Hallo Paddi,

ein Ansatz für eine "korrekte" Projektion:

Wir denken uns im x-y-z-Koordinatensystem eine
Kugel vom Radius 1, welche ausserdem mit Azimut-
Höhen-Koordinaten  a und h versehen ist.
Der Punkt P(a,h) hat die Koordinaten

      [mm] x_P=cos(h)\,cos(a) [/mm]
      [mm] y_P=cos(h)\,sin(a) [/mm]
      [mm] z_P=sin(h) [/mm]

Wenn wir nun in eine Richtung blicken, die durch
einen Punkt [mm] P_0(a_0,h_0)=(x_0/y_0/z_0) [/mm] gegeben ist, denken
wir uns nun einen rechteckigen Rahmen, der das
Bild aufnehmen soll. Dieses Rechteck liegt in der
Tangentialebene T der Kugel im Punkt [mm] P_0 [/mm] . Unter-
und Oberkante verlaufen horizontal. Die Größe des
Rahmens wird am besten durch Winkel definiert.
In der Ebene T denken wir uns ein rechtwinkliges
u-v-Koordinatensystem mit Nullpunkt in [mm] P_0 [/mm] .
u und v werden dann zu den Bildschirmkoordinaten.
Den zum Punkt P(a,h) gehörigen Bildpunkt erhält
man, indem man (in den x-y-z-Koordinaten) den
Strahl OP mit der Tangentialebene T schneidet und
dann die x-y-z-Koordinaten des Schnittpunktes in
u-v-Koordinaten umrechnet.
Es gibt jetzt also verschiedene Teilaufgaben:

1.)  Gleichung der Ebene $\ T$ aufstellen
2.)  Gleichung für die Gerade $\ [mm] p\,=\,OP$ [/mm]
3.)  Schnittpunkt  [mm] S=T\cap{p} [/mm]  berechnen
4.)  Koordinatentransformation


LG    Al-Chw.




Bezug
        
Bezug
Koordinatentransformation: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 19:09 Mo 15.06.2009
Autor: Paddi

Hallo,

das hört sich schon mal sehr gut an. Nur leider hapert es etwas an meinen Lineare Algebra und Trigometrie Kenntnissen.

Eine Tangentialebene ist ja eine Ebene die sich genau einen Punkt mit der Kugel teilt.
Dieser Punkt ist dann wahrscheinlicht mein Punkt P0 der unten in der Mitte meines Fensters liegt.

Diese liegt dann also auf unserer Kugel in einem Punkt auf.

Ich kenne die Ebenen-Gleichungen der Form:

Ortsvektor + u1 * Richtungsvektor1 + u2 * Richtungsvektor2

Nur was sind dann Ortsvektor und Richtungsvektoren?

Der Ortsvektor müsste doch der Mittelpunkt der Kugel - P0 sein, Oder?

Ich gehe jetzt mal davon aus, dass die Kugel im Mittelpunkt am Koordinatenurprung des dreidimensionalen Koordinatensystems liegt.

Die Geradengleichung hat ja so ähnlich funktioniert, wie bei der Ebene.

Das war:

Ortsvektor + u * Richtungsvektor

Für einen beliebigen Punkt Pi im R3 wäre dies ja dann:

(0 0 0)-P0 + u * (Pi1 Pi2 Pi3)

Dann muss man wahrscheinlich beide Gleichungen nehmen, gleich setzen und die Gleichung nach u auflösen.

So hab ich das dunkel in Errinerung (Das hatten wir mal damals mal im 1. Semester)

Dann weis ich aber leider noch nicht, wie ich das in mein Koordinatensystem einbaue.

Ich habe auf dem PC bisher ein System, wo der Ursprung unten links liegt.
(Normalerweise sitzt dieser oben links. Das habe ich aber bereits umgeändert.)

Ich zeichne auf dem Bildschirm eine Spanne von 60 Grad. Das ist bisher fix.
Bisher habe ich mir in einer Variable die Azimut Koordinaten des linken und rechten Bildschirmrandes gemerkt.

Wenn das Programm startet steht links = 0 Grad, rechts = 60 Grad.
Bei 0 Grad ist Norden. Das fenster schaut also am Anfang genau nach 30 Grad Azimut.

In der Höhe wird eine Spanne von 40 Grad gezeigt. Auch hier wird in Variablen der untere und obere Rand gespeichert.

Der untere Rand steht also am Anfang bei 0 Grad. Der Obere bei 40 Grad.

Bisher habe ich einfach die Azimut bzw. Höhe-Koordinate genommen und diese entsprechend der Breite und Höhe des Fensters in Pixel umgewandelt und ins Fenster gezeichnet.

Da treten ja dann diese Verzerrungen auf.

Wenn der Bildschirm dann in Form des Rechteckes auf der Ebene liegt, wie kann ich denn dann den errechneten Schnittpunkt in meine Bildschirmkoordinaten umrechnen?

Es wäre super, wenn du mir noch etwas auf die Sprünge helfen könntest.






Bezug
                
Bezug
Koordinatentransformation: Antwort
Status: (Antwort) fertig Status 
Datum: 20:08 Mo 15.06.2009
Autor: Al-Chwarizmi


> Hallo,
>  
> das hört sich schon mal sehr gut an. Nur leider hapert es
> etwas an meinen Lineare Algebra und Trigonometrie
> Kenntnissen.
>  
> Eine Tangentialebene ist ja eine Ebene die sich genau einen
> Punkt mit der Kugel teilt.
>  Dieser Punkt ist dann wahrscheinlicht mein Punkt P0 der
> unten in der Mitte meines Fensters liegt.

Ich würde [mm] P_0 [/mm] ins Zentrum des Bildschirms setzen !
Dann ergeben sich am wenigsten Verzerrungen.
  

> Diese liegt dann also auf unserer Kugel in einem Punkt
> auf.  [ok]
>  
> Ich kenne die Ebenen-Gleichungen der Form:
>  
> [mm] \blue{\vektor{x\\y\\z}=}\, [/mm] Ortsvektor + u1 * Richtungsvektor1 + u2 * Richtungsvektor2

Ich vermute, dass dir auch die Ebenengleichung in der
Form

         $\ a*x+b*y+c*z=d$

bekannt sein sollte, wobei [mm] \vec{n}=\vektor{a\\b\\c} [/mm] ein zur
Ebene normaler Vektor ist.
Die Ebene T, deren Gleichung wir brauchen, geht durch
den Punkt [mm] P_0 [/mm] und ist natürlich senkrecht zum Radius
der Kugel, der dort auftrifft.
  

> Ich gehe jetzt mal davon aus, dass die Kugel im Mittelpunkt
> am Koordinatenurprung des dreidimensionalen
> Koordinatensystems liegt.    [ok]

Klar. Das macht man sinnvollerweise natürlich so !
  

> Die Geradengleichung hat ja so ähnlich funktioniert, wie
> bei der Ebene.
>  
> Das war:
>  
> Ortsvektor + u * Richtungsvektor

Genauer:

        [mm] \vektor{x\\y\\z}= [/mm] Stützvektor + t * Richtungsvektor

(hier lieber t, um Variablenkollision mit dem u der
Bildschirmkoordinaten zu vermeiden)

Hier wollen wir die Gerade p durch die Punkte O(0/0/0) und
[mm] P(x_P/y_P/z_P) [/mm] darstellen. Als Stützvektor nimmt man also
den Nullvektor und als Richtungsvektor den Vektor [mm] \overrightarrow{OP} [/mm] .  

> Dann muss man wahrscheinlich beide Gleichungen nehmen,
> gleich setzen und die Gleichung nach u auflösen.   [ok]

> Ich habe auf dem PC bisher ein System, wo der Ursprung
> unten links liegt.
>  (Normalerweise sitzt dieser oben links. Das habe ich aber
> bereits umgeändert.)

Solche Details lassen sich am Schluss leicht einrichten.
Ich würde vorschlagen, den Nullpunkt ins Zentrum des
Bildschirms zu legen.
  

> Ich zeichne auf dem Bildschirm eine Spanne von 60 Grad. Das
> ist bisher fix.
>  Bisher habe ich mir in einer Variable die Azimut
> Koordinaten des linken und rechten Bildschirmrandes
> gemerkt.
>  
> Wenn das Programm startet steht links = 0 Grad, rechts = 60
> Grad.
>  Bei 0 Grad ist Norden. Das fenster schaut also am Anfang
> genau nach 30 Grad Azimut.
>  
> In der Höhe wird eine Spanne von 40 Grad gezeigt. Auch hier
> wird in Variablen der untere und obere Rand gespeichert.
>  
> Der untere Rand steht also am Anfang bei 0 Grad. Der obere
> bei 40 Grad.
>  
> Bisher habe ich einfach die Azimut bzw. Höhe-Koordinate
> genommen und diese entsprechend der Breite und Höhe des
> Fensters in Pixel umgewandelt und ins Fenster gezeichnet.
>  
> Da treten ja dann diese Verzerrungen auf.
>  
> Wenn der Bildschirm dann in Form des Rechteckes auf der
> Ebene liegt, wie kann ich denn dann den errechneten
> Schnittpunkt in meine Bildschirmkoordinaten umrechnen?

Die "neuen" Bildschirmkoordinaten u und v sind keine Winkel
mehr, sondern gewöhnliche rechtwinklige Koordinaten.
Um die Größe des Blickfeldes zu definieren, kann man aber
durchaus Winkel verwenden. Wenn du also ein 60° breites
und 40° hohes Blickfeld im Bildschirm einfangen willst,
ist die Breite des Bildrechtecks, in der Ebene T gemessen,
gleich 2*tan(30°)  und seine Höhe gleich 2*tan(20°).
Also setze am linken Bildrand u:=-tan(30°)=0.577, am
rechten Rand u:=+0.577. Am unteren Bildrand ist
v=-tan(20°)=-0.364, am oberen Rand v=+0.364 .

Bleibt als schwierigste Teilaufgabe die Umrechnung der
Koordinaten eines Bildpunktes in der Ebene T von dessen
x-y-z-Koordinaten in das Zahlenpaar (u/v) für die Dar-
stellung auf dem Bildschirm ...


LG     Al-Chw.



Bezug
                        
Bezug
Koordinatentransformation: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 11:01 Di 16.06.2009
Autor: Paddi

Hallo,

ich habe mich jetzt mal eine Weile damit beschäftigt. So langsam kommt das Wissen wieder (ein wenig) zum Vorschein.

Ich rechne das Ganze jetzt einfach mal an einem Beispiel durch.

Nehmen wir an, unser Punkt P0 ist der Mittelpunkt unseres Rechtecks auf der Ebene.

Ich wähle diesen jetzt mal als: Azimut: 30 Grad, Hoehe: 20 Grad

Dann ergibt sich der folgende Punkt im R3:

(XP0, YP0, ZP0) = (0.8137, 0.4698, 0.3420)

Dies ist ja dann unser Berührungspunkt zur Kugel und der Normalen-
vektor der Tagentialebene.

Also können wir die Ebenengleichung aufbauen:

0.8137 * X + 0.4698 * y + 0.3420 * z = d

Aber was ist dann d ?

Nun nehmen wir uns einen beliebigen Punkt Pi, den wir auf unser Rechteck projezieren möchten.

Wir setzen Azimut = 10 Grad, Hoehe = 10 Grad

Dann ist der Punkt P im R3 = (0.9698, 0.1710, 0.1736)

Dann ist die Geradengleichung:

(X Y Z) = (0 0 0) + ( (0.9698, 0.1710, 0.1736) - (0 0 0))
           = (0 0 0) + (0.9698, 0.1710, 0.1736)

Ich bin mir nicht ganz sicher, ob diese Dinge so korrekt sind.

Aber wie kann ich dann das Ganze gleichsetzen und Auflösen?

Da sind mir irgendwie zu viele Variablen im Spiel.

Es wäre nett, wenn du mir das noch mal zeigen könntest. Mir fehlt da mittlerweile etwas die Praxis.


Gruesse

Paddi


Bezug
                                
Bezug
Koordinatentransformation: Antwort
Status: (Antwort) fertig Status 
Datum: 18:39 Di 16.06.2009
Autor: Al-Chwarizmi


> Hallo,
>  
> ich habe mich jetzt mal eine Weile damit beschäftigt. So
> langsam kommt das Wissen wieder (ein wenig) zum Vorschein.
>  
> Ich rechne das Ganze jetzt einfach mal an einem Beispiel
> durch.
>  
> Nehmen wir an, unser Punkt P0 ist der Mittelpunkt unseres
> Rechtecks auf der Ebene.
>  
> Ich wähle diesen jetzt mal als: Azimut: 30 Grad, Hoehe: 20
> Grad
>  
> Dann ergibt sich der folgende Punkt im R3:
>
> (XP0, YP0, ZP0) = (0.8137, 0.4698, 0.3420)

      (aufrunden !)
  

> Dies ist ja dann unser Berührungspunkt zur Kugel und der
> Normalenvektor der Tagentialebene.      [ok]
>  
> Also können wir die Ebenengleichung aufbauen:
>  
> 0.8137 * X + 0.4698 * y + 0.3420 * z = d
>  
> Aber was ist dann d ?

Die Koordinaten von P0 müssen diese Ebenengleichung
auch erfüllen. Daraus ergibt sich d=1.
  

> Nun nehmen wir uns einen beliebigen Punkt Pi, den wir auf
> unser Rechteck projizieren möchten.
>  
> Wir setzen Azimut = 10 Grad, Hoehe = 10 Grad
>  
> Dann ist der Punkt P im R3 = (0.9698, 0.1710, 0.1736)     [ok]
>  
> Dann ist die Geradengleichung:
>  
> (X Y Z) = (0 0 0) + ( (0.9698, 0.1710, 0.1736) - (0 0 0))
>             = (0 0 0) + (0.9698, 0.1710, 0.1736)


Hier fehlt der Parameter t !

Richtig:

(X Y Z) = (0 0 0) + t*( (0.9698, 0.1710, 0.1736) - (0 0 0))
           = (0 0 0) +t* (0.9698, 0.1710, 0.1736)=(0.9698 t, 0.1710 t, 1.1736 t)

  

> Ich bin mir nicht ganz sicher, ob diese Dinge so korrekt
> sind.
>  
> Aber wie kann ich dann das Ganze gleichsetzen und
> Auflösen?
> Da sind mir irgendwie zu viele Variablen im Spiel.

in der fertigen Ebenengleichung das x durch 0.9698 t ersetzen  etc.
Dann entsteht eine Gleichung nur für t.


Der berechnete t-Wert, in die Geradengl. eingesetzt, liefert
dann die (x,y,z)-Koordinaten des projizierten Punktes in T.


LG

Bezug
                        
Bezug
Koordinatentransformation: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 18:11 Di 16.06.2009
Autor: Paddi

Hallo nochmal,

ich habe mal weiter geforscht.

Wenn ich also für P0 mal den Punkt (0.8137, 0.4698, 0.3420) nehme und dies dann der Normalenvektor der Ebene ist, so ist dieser doch sicher auch der Ortsvektor.

Daher wäre dann die Gleichung der Ebene E:

[mm] \vektor{x \\ y \\ z} [/mm] = 0.8137 x + 0.4698 y + 0.3420 z = d

d ergibt sich aus dem Skalarprodukt vom Ortsvektor und Normalenvektor.

d ist dann = 0.6621 + 0.2207 + 0.1169 = 0.9997

Dann haben wir folglich für die Ebene die Gleichung:

[mm] \vektor{x \\ y \\ z} [/mm] = 0.8137 x + 0.4698 y + 0.3420 z = 0.9997

Wir wollen den Schnittpunkt mit dem Punkt: Pi = (0.9698, 0.1710, 0.1736)
bestimmen.

Die Geradengleichung ist dann:

[mm] \vektor{x \\ y \\ z} [/mm] = [mm] \vektor{0 \\ 0 \\ 0} [/mm] + t * [mm] \vektor{0.9698 \\ 0.1710 \\ 0.1736} [/mm]

Dann setze ich die Komponenten der Gerade in die Ebenengleichung ein:

0.8137 * (0+0.9698*t) + 0.4698 * (0 + 0.1710 * t) + 0.3420 * (0+ 0.1736 * t) = 0.9997

Am Ende steht dann in der Gleichung:

0.9284 * t = 0.997 // durch 0.997 teilen
t = 0.9311

Das t setzen wir jetzt wieder in die Geradengleichung ein und erhalten dann den Schnittpunkt.

G = [mm] \vektor{0 \\ 0 \\ 0} [/mm] + 0.9311 [mm] \* \vektor{0.9698 \\ 0.1710 \\ 0.1736} [/mm]

Ergebnis: [mm] \vektor{0.9029 \\ 0.1592 \\ 0.1616} [/mm]

Ich hoffe, dass ich mich bei der Wahl der Ortsvektoren bzw. Normalenvektoren nicht vertan habe.

So wie ich das jetzt gelöst habe, habe ich mir das heute aus meinen alten Vorlesungsunterlagen erarbeitet.

Du kannst ja mal sagen, in weit das so korrekt ist.


Liebe Grüße

Paddi




Bezug
                                
Bezug
Koordinatentransformation: Antwort
Status: (Antwort) fertig Status 
Datum: 19:08 Di 16.06.2009
Autor: Al-Chwarizmi


> Hallo nochmal,
>  
> ich habe mal weiter geforscht.
>  
> Wenn ich also für P0 mal den Punkt (0.8137, 0.4698, 0.3420)
> nehme und dies dann der Normalenvektor der Ebene ist, so
> ist dieser doch sicher auch der Ortsvektor.
>  
> Daher wäre dann die Gleichung der Ebene E:
>  
> [mm]\vektor{x \\ y \\ z}[/mm] = 0.8137 x + 0.4698 y + 0.3420 z = d
>  
> d ergibt sich aus dem Skalarprodukt vom Ortsvektor und
> Normalenvektor.
>  
> d ist dann = 0.6621 + 0.2207 + 0.1169 = 0.9997

     das müsste rechts eigentlich exakt Eins sein, da ja der
     Ortsvektor von P0 den Betrag 1 hat. Sein Skalarprodukt
     mit sich selber ergibt also 1*1*cos(0°)=1
  

> Dann haben wir folglich für die Ebene die Gleichung:
>  
> [mm]\vektor{x \\ y \\ z}[/mm] = 0.8137 x + 0.4698 y + 0.3420 z = 0.9997
>  
> Wir wollen den Schnittpunkt mit dem Punkt: Pi = (0.9698,
> 0.1710, 0.1736)
>  bestimmen.
>  
> Die Geradengleichung ist dann:
>  
> [mm]\vektor{x \\ y \\ z}=\vektor{0 \\ 0 \\ 0} + t *\vektor{0.9698 \\ 0.1710 \\ 0.1736}[/mm]

Aha, das t ist auch wieder aus den Tiefen der halbver-
gessenen Dinge aufgetaucht ;-)
  

> Dann setze ich die Komponenten der Gerade in die
> Ebenengleichung ein:
>  
> 0.8137 * (0+0.9698*t) + 0.4698 * (0 + 0.1710 * t) + 0.3420 * (0+ 0.1736 * t) = 0.9997
>  
> Am Ende steht dann in der Gleichung:
>  
> 0.9284 * t = 0.997 // durch 0.997 teilen
>  t = 0.9311
>  
> Das t setzen wir jetzt wieder in die Geradengleichung ein
> und erhalten dann den Schnittpunkt.
>  
> G = [mm]\vektor{0 \\ 0 \\ 0}[/mm] + 0.9311 [mm]\* \vektor{0.9698 \\ 0.1710 \\ 0.1736}[/mm]
>  
> Ergebnis: [mm]\vektor{0.9029 \\ 0.1592 \\ 0.1616}[/mm]
>  
> Ich hoffe, dass ich mich bei der Wahl der Ortsvektoren bzw.
> Normalenvektoren nicht vertan habe.
>  
> So wie ich das jetzt gelöst habe, habe ich mir das heute
> aus meinen alten Vorlesungsunterlagen erarbeitet.
>  
> Du kannst ja mal sagen, inwieweit das so korrekt ist.

Das hab ich jetzt nicht im Detail nachgerechnet ...
der Weg ist jedenfalls so korrekt.

> Liebe Grüße
>  
> Paddi


Natürlich wird es nun darum gehen, diesen ganzen
Vorgang in allgemeiner Form mit geeigneten Hilfs-
bezeichnungen zu notieren, um das Ganze dann
ins Programm packen zu können.
Und was noch fehlt, ist die Umrechnung der x-y-z-
Koordinaten des projizierten Punktes in die Bildschirm-
koordinaten u und v. Da kann man z.B. so vorgehen:

Stell dir mal in der Tangentialebene T das u-v-Koordi-
natensystem vor. Vom Betrachter in O(0/0/0) aus
gesehen soll die u-Achse nach rechts und die v-Achse
nach oben zeigen. Der Grundvektor in u-Richtung ist
also ein von [mm] P_0 [/mm] ausgehender, in T liegender Vektor
der Länge 1, der tangential zu dem durch [mm] P_0 [/mm] gehenden
"Höhenkreis" [mm] h=h_0 [/mm] der "Himmelssphäre" ist. Man
kann sich leicht klar machen, dass dieser Vektor, nennen
wir ihn [mm] \vec{e}_u [/mm] , im x-y-z-System so aussieht:

        [mm] \vec{e}_u=\vektor{sin(a_0)\\-cos(a_0)\\0} [/mm]

Der von P0 aus tangential nach oben zeigende Grund-
vektor [mm] \vec{e}_v [/mm]  kann ebenso im  x-y-z-System
dargestellt werden.
Wenn diese Vektoren bereitstehen, ist es ganz
leicht, die (u,v)-Koordinaten eines Punktes [mm] P_T [/mm] in T
zu berechnen, nämlich:

     [mm] u=\overrightarrow{P_0 P_T}*\vec{e}_u [/mm]

     [mm] v=\overrightarrow{P_0 P_T}*\vec{e}_v [/mm]



Bezug
                                        
Bezug
Koordinatentransformation: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 21:15 Di 16.06.2009
Autor: Paddi

Hallo,

ich stelle mir also vor, dass ich in der Kugel am Nullvektor stehe.

Dann schaue ich nach oben. Da liegt dann im Punkt P0 die T-Ebene an.

Um diesen Punkt herum ist mein Rechteckiger Bildschirm aufgebaut.

V geht nach oben, U nach rechts.

Der U-Vektor liegt in seinem Ursprung in P0. Der V-Vektor auch.
U zeigt nach rechts, V nach oben.

Aber wie komme ich nun auf die Komponeten dieser beiden Vektoren?

Und was ist a0 ?

Damit fange ich irgendwie noch nicht so super viel an.

Zu dem muss ich später wissen, wenn ich mal die u und v Koordinaten habe, wie groß diese jeweils sein dürfen, damit sie noch im Rechteck liegen.

Wenn ich die Proportionen des Rechteckes kenne oder errechnen kann, ist es nicht mehr schweer die Koordinaten in das Koordinatensystem des PC umzurechnen.

Ich habe schon mal begonnen den Vorgang bis einschließlich Koordinatenschnittpunkt im Programm zu implementieren. Das klappt ohne Probleme. Sobald ich es auf dem Papier kann, so klappt es meistens auch ohne Probleme im Quellcode.


Gruesse


Paddi



Bezug
                                                
Bezug
Koordinatentransformation: Antwort
Status: (Antwort) fertig Status 
Datum: 22:00 Di 16.06.2009
Autor: Al-Chwarizmi


> Hallo,
>  
> ich stelle mir also vor, dass ich in der Kugel am
> Nullvektor stehe.
>  
> Dann schaue ich nach oben. Da liegt dann im Punkt P0 die
> T-Ebene an.
>  
> Um diesen Punkt herum ist mein Rechteckiger Bildschirm
> aufgebaut.
>  
> V geht nach oben, U nach rechts.
>  
> Der U-Vektor liegt in seinem Ursprung in P0. Der V-Vektor
> auch.
>  U zeigt nach rechts, V nach oben.
>  
> Aber wie komme ich nun auf die Komponeten dieser beiden
> Vektoren?

Den Vektor [mm] \vec{e}_u [/mm] habe ich schon angegeben. Er ist parallel
zur x-y-Ebene, seine z-Komponente ist also gleich Null.
Man erhält ihn, indem man den in der x-y-Ebene liegenden
Einheitsvektor mit dem Azimutwinkel [mm] a_0 [/mm] um 90° nach rechts
dreht.

> Und was ist a0 ?

Mit [mm] a_0 [/mm] bezeichne ich den Azimutwinkel der Blickrichtung,
also das Azimut von [mm] P_0. [/mm]   Analog:  [mm] h_0= [/mm] Höhe(nwinkel) von [mm] P_0 [/mm] .

> Damit fange ich irgendwie noch nicht so super viel an.
>  
> Zu dem muss ich später wissen, wenn ich mal die u und v
> Koordinaten habe, wie groß diese jeweils sein dürfen, damit
> sie noch im Rechteck liegen.

Bei deinem (bisherigen) horizontalen Blickwinkel von 60°
sollten u-Werte von -tan(30°) bis +tan(30°) in den Bild-
schirm passen, also  [mm] -0.577\le [/mm] u [mm] \le [/mm] +0.577.

> Wenn ich die Proportionen des Rechteckes kenne oder
> errechnen kann, ist es nicht mehr schwer die Koordinaten
> in das Koordinatensystem des PC umzurechnen.

   Klar. Solche Fragen kann man normalerweise auch
   "experimentell" klären.
  

> Ich habe schon mal begonnen den Vorgang bis einschließlich
> Koordinatenschnittpunkt im Programm zu implementieren. Das
> klappt ohne Probleme. Sobald ich es auf dem Papier kann, so
> klappt es meistens auch ohne Probleme im Quellcode.

Das ist auch das richtige Vorgehen. Etwas mehr Papier-,
Bleistift- und Hirnschmalzverbrauch spart oft manche Stunde
ziellosen Herumprobierens vor dem Computer.
  

> Gruesse
> Paddi



Bezug
                                                        
Bezug
Koordinatentransformation: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 13:17 Mi 17.06.2009
Autor: Paddi

Hallo,

ich habe jetzt mal den kompletten Vorgang implementiert. Ich bekomme da auch das selbe heraus, wie wenn ich es auf dem Papier rechne.

Nur leider kann ich mit den U-V-Koordinaten nicht wirklich was anfangen.

Ich rechne jetzt mal nochmal kurz ein Beispiel zur Kontrolle vor. Vielleicht steckt da ja noch irgendwo ein Fehler drin.

Wir wählen also zu Begin den Punkt P0 mit Azimut = 30, Höhe = 20.

Dies ist dann der Mittelpunkt des Bildschirms. Das heist im Bild unter ihm liegen an der Y-Achse 20 Grad, ganau wie darüber 20 Grad.
Links und Rechts daneben liegt jeweils eine Spanne von 30 Grad.

P0 im R3 = (0.8137, 0.4698, 0.3420)

Den Punkt Pi, der Projeziert werden soll wählen wir mit
Azimut = 10, Hoehe = 10. Er liegt also unten links im Bild.

Pi im R3 = (0.9698, 0.1710, 0.1736)

Dann die Gleichungen:

E: [mm] \overrightarrow{x} [/mm] = 0.8137 * x + 0.4698 * y + 0.3420 *z = d
mit d = 1, weil das Skalarprodukt von P0 = 1 ist

G: [mm] \overrightarrow{x} [/mm] = [mm] \vektor{0 \\ 0 \\ 0} [/mm] + t *  [mm] \vektor{0.9698 \\ 0.1710 \\ 0.1736} [/mm]

Dann setzen wir G in E ein:

0.8137 * (0 + t * 0.9698) + 0.4698 * (0 + t * 0.1710) + 0.3420 * (0 + t * 0.1736) = 1

Die Gleichung für t auflösen und wir erhalten t = 1.0771

Das setzen wir in die Geradengleichung ein und erhalten den
Schnittpunkt:

PT = [mm] \vektor{1.0446 \\ 0.1841 \\ 0.1869} [/mm]

Dann müssen die Einheitsvektoren errechnet werden:

[mm] \overrightarrow{Cu} [/mm] = [mm] \vektor{sin(30) \\ -cos(30) \\ 0} [/mm]
[mm] \overrightarrow{Cv} [/mm] = [mm] \vektor{sin(20) \\ -cos(20) \\ 0} [/mm]

[mm] \overrightarrow{Cu} [/mm] = [mm] \vektor{0.5\\ -0.866 \\ 0} [/mm]
[mm] \overrightarrow{Cv} [/mm] = [mm] \vektor{0.342 \\ -0.939 \\ 0} [/mm]

Dann brauchen wir den Vektor

[mm] \overrightarrow{P0PT} [/mm] = PT - P0 = [mm] \vektor{ 0.2309 \\ -0.2857 \\ -0.1551} [/mm]

Jetzt können u und v errechnet werden:

u = [mm] \overrightarrow{P0PT} [/mm] * [mm] \overrightarrow{Cu}= [/mm] 0.36287


v = [mm] \overrightarrow{P0PT} [/mm] * [mm] \overrightarrow{Cv}= [/mm] 0.34716

So weit, so gut.

Wir haben gesagt, das -0.577 <= u <= 0.577
und                               -0.364 <= v <= 0.364
gelten.

Bei einer Höhe von 10 Grad kommt mir der v-Wert viel zu hoch vor.

Die Funktion, die ich geschrieben habe, errechnet die gleichen Werte, scheint also einigermaßen korrekt zu sein.

Ich habe da mal z.B. für Pi den Azimut =20, Hoehe = 10 genommen.

Da kommt dann für u = 0.1761 und für v = 0.1631 raus.

Da wir hier die gleiche Höhe haben, müsste doch eigentlich der v - Wert gleich sein.

Und wenn ich jetzt für Pi den Azimut = 30, Hoehe = 10 nehme, erhalte ich:
u = -1.7347 und v = -0.0104

Das kommt mir irgendwie spanisch vor.

Vielleicht hab ich ja auch irgendwo in dem Algorithmus einen Fehler drin stecken.

Wäre lieb, wenn du mir noch mal helfen könntest.

Gruss

Paddi





Bezug
                                                                
Bezug
Koordinatentransformation: Antwort
Status: (Antwort) fertig Status 
Datum: 14:21 Mi 17.06.2009
Autor: Al-Chwarizmi

Hallo Paddi,

möglicherweise liegt da noch ein Problem bei der genauen
Festlegung der Koordinatensysteme. In diesem Beitrag
habe ich definiert, wie ich mir die Koordinatensysteme
zurechtgelegt habe:

Azimut 0° in Richtung der x-Achse, Azimut 90° in Richtung
der y-Achse etc.  Vom Betrachter aus dreht also der Azimut-
Winkel links rum, so wie es in der Astronomie üblich ist
(0° im Süden, 90° im Osten, 180° im Norden, 270° im
Westen). Allerdings werden da manchmal auch andere
Systeme verwendet, was dann oft ärgerlich ist !    (***)


> Hallo,
>  
> ich habe jetzt mal den kompletten Vorgang implementiert.
> Ich bekomme da auch das selbe heraus, wie wenn ich es auf
> dem Papier rechne.
>  
> Nur leider kann ich mit den U-V-Koordinaten nicht wirklich
> was anfangen.
>  
> Ich rechne jetzt mal nochmal kurz ein Beispiel zur
> Kontrolle vor. Vielleicht steckt da ja noch irgendwo ein
> Fehler drin.
>  
> Wir wählen also zu Begin den Punkt P0 mit Azimut = 30, Höhe = 20.

Nach meiner Interpretation wäre dies also ein Blickpunkt
am südöstlichen Himmel (von der Südrichtung um 30°
nach links abweichend), 20° über dem Horizont. Für
diesen Punkt legen wir u=v=0 fest.
  

> Dies ist dann der Mittelpunkt des Bildschirms. Das heisst im
> Bild unter ihm liegen an der Y-Achse 20 Grad, ganau wie
> darüber 20 Grad.
>  Links und Rechts daneben liegt jeweils eine Spanne von 30
> Grad.
>  
> P0 im R3 = (0.8137, 0.4698, 0.3420)
>  
> Den Punkt Pi, der Projeziert werden soll wählen wir mit
> Azimut = 10, Hoehe = 10. Er liegt also unten links im
> Bild.

Nach meiner Vorstellung unten rechts ...
Pi liegt nur 10° links von der Südrichtung, also erscheint
er rechts von P0 !
  

> Pi im R3 = (0.9698, 0.1710, 0.1736)
>  
> Dann die Gleichungen:
>  
> E: [mm] $\overrightarrow{x}= [/mm] 0.8137 * x + 0.4698 * y + 0.3420 *z = d$

>  mit d = 1, weil das Skalarprodukt von P0 mit
>  sich selbst = 1 ist   [ok]
>  
> G: [mm]\overrightarrow{x}\ =\ \vektor{0 \\ 0 \\ 0}+ t *\vektor{0.9698 \\ 0.1710 \\ 0.1736}[/mm]    [ok]
>  
> Dann setzen wir G in E ein:
>  
> 0.8137 * (0 + t * 0.9698) + 0.4698 * (0 + t * 0.1710) +
> 0.3420 * (0 + t * 0.1736) = 1
>  
> Die Gleichung für t auflösen und wir erhalten t = 1.0771
>  
> Das setzen wir in die Geradengleichung ein und erhalten den
> Schnittpunkt:
>  
> PT = [mm]\vektor{1.0446 \\ 0.1841 \\ 0.1869}[/mm]
>  
> Dann müssen die Einheitsvektoren errechnet werden:
>  
> [mm]\overrightarrow{Cu}=\vektor{sin(30) \\ -cos(30) \\ 0}[/mm]    [ok]
>  
> [mm]\overrightarrow{Cv}=\vektor{sin(20) \\ -cos(20) \\ 0}[/mm]    [notok]
>  
> [mm]\overrightarrow{Cu}=\vektor{0.5\\ -0.866 \\ 0}[/mm]     [ok]
>  
> [mm]\overrightarrow{Cv}=\vektor{0.342 \\ -0.939 \\ 0}[/mm]    [notok]


Der Vektor  [mm] \overrightarrow{Cv}, [/mm] den ich mit [mm] \vec{e}_v [/mm] bezeichnet habe, muss
folgendermaßen lauten:

       [mm] $\overrightarrow{Cv}\ [/mm] =\ [mm] \vektor{-sin\,h_0\ cos\,a_0\\-sin\,h_0\ sin\,a_0\\cos\,h_0}$ [/mm]

Man kann ihn z.B. als Vektorprodukt berechnen:

       [mm] $\overrightarrow{Cv}\ [/mm] =\ [mm] \overrightarrow{Cu}\times \overrightarrow{P_0}$ [/mm]

>  
> Dann brauchen wir den Vektor
>  
> [mm]\overrightarrow{P0PT}[/mm] = PT - P0 = [mm]\vektor{ 0.2309 \\ -0.2857 \\ -0.1551}[/mm]
>  
> Jetzt können u und v errechnet werden:
>  
> u = [mm]\overrightarrow{P0PT}[/mm] * [mm]\overrightarrow{Cu}=[/mm] 0.36287
>  
>
> v = [mm]\overrightarrow{P0PT}[/mm] * [mm]\overrightarrow{Cv}=[/mm] 0.34716

>  
> Das kommt mir irgendwie spanisch vor.


Das u wird wohl stimmen, das v sicher nicht, aus den oben
genannten Gründen. Für v muss ein negativer Wert heraus-
kommen, da Pi ja eine kleinere Höhe als [mm] P_0 [/mm] hat.


Gruß    Al-Chw.


Nachtrag:

(***) Ich habe mich da offenbar gerade selber geirrt:
In der Astronomie ist die gängigste Definition des
Azimuts doch genau umgekehrt: es wird von Süden
aus über Westen gemessen. Dies bedeutet, dass man
in den Formeln, die ich bisher angegeben habe, ent-
weder a durch -a oder aber y durch -y ersetzen sollte.
Sorry für die Verwirrung, die ich damit angerichtet
habe ...

Bezug
                                                                        
Bezug
Koordinatentransformation: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 15:46 Mi 17.06.2009
Autor: Paddi

Hallo,

also bisher wurden die Koordinaten der Himmelsobjekte in folgender Form von meinem Programm produziert.

Bei Norden liegt 0 Grad.

Von da aus wird in Richtung Osten gezählt. Ich hatte mir damals ein paar andere Programme angeschaut. Die machten das auch so.

Weiterhin ist dann:

Osten: 90 Grad

Süden: 180 Grad

Westen: 270 Grad

Ich hatte vorher schon mal die Funktion, die die Azimut + Hoehe Koordinaten liefert, so gebaut, dass Sie die Koordinaten von Süden herr über Osten ausgibt.

Da wäre dann:

Süden: 0 Grad
Osten: 90 Grad
Norden: 180 Grad
Westen: 270 Grad

Generell ist die Funktion schnell in alle möglichen Systeme geändert.

Wir wäre es jedoch am liebsten, wenn es irgendwie möglich wäre, das System mit dem ersten System laufen zu lassen (Wo Norden = 0 Grad ist und über Osten gezählt wird).
Sonst müsste ich ziemlich viele Änderungen am bisherigen Code vornehmen.

Gruss


Paddi





Bezug
                                                                                
Bezug
Koordinatentransformation: kontrolliert das jemand ?
Status: (Antwort) fertig Status 
Datum: 16:56 Mi 17.06.2009
Autor: Al-Chwarizmi


> Hallo,
>  
> also bisher wurden die Koordinaten der Himmelsobjekte in
> folgender Form von meinem Programm produziert.
>  
> Bei Norden liegt 0 Grad.

Das sieht nach einem amerikanischen Koordinatensystem aus.
  

> Von da aus wird in Richtung Osten gezählt. Ich hatte mir
> damals ein paar andere Programme angeschaut. Die machten
> das auch so.
>  
> Weiterhin ist dann:
>  
> Osten: 90 Grad
>  
> Süden: 180 Grad
>  
> Westen: 270 Grad
>  
> Ich hatte vorher schon mal die Funktion, die die Azimut +
> Hoehe Koordinaten liefert, so gebaut, dass sie die
> Koordinaten von Süden her über Osten ausgibt.
>  
> Da wäre dann:
>  
> Süden: 0 Grad
>  Osten: 90 Grad
>  Norden: 180 Grad
>  Westen: 270 Grad
>  
> Generell ist die Funktion schnell in alle möglichen Systeme
> geändert.
>  
> Mir wäre es jedoch am liebsten, wenn es irgendwie möglich
> wäre, das System mit dem ersten System laufen zu lassen (Wo
> Norden = 0 Grad ist und über Osten gezählt wird).
>  Sonst müsste ich ziemlich viele Änderungen am bisherigen
> Code vornehmen.
>  
> Gruss
>  
> Paddi

  

Ach ja, das ist eben genau die etwas verwirrende Viel-
falt unterschiedlicher Definitionen.

Die bisherigen grundsätzlichen Überlegungen bleiben
natürlich alle bestehen. Es bleibt also bei recht wenigen
Änderungen. Lassen wir also in der Horizontalebene
die x-Achse nach Norden und die y-Achse nach Osten
zeigen. Die z-Achse zeigt zum Zenit (das gibt dann
zwar ein Linkssystem, was aber - abgesehen etwa von
Vektorprodukten) kein Problem darstellt.
Die Umrechnungsformeln für (a,h)--->(x,y,z) sind dann:    

      x:=cos(h)*cos(a)
      y:=cos(h)*sin(a)
      z:=sin(h)

(dies ist genau gleich wie vorher !)

Für die Einheitsvektoren des u-v-Systems hat man in
x-y-z-Koordinaten:

      [mm] \vec{e}_u=\vektor{-sin\,a_0\\cos\,a_0\\0} [/mm]

      [mm] \vec{e}_v=\vektor{-sin\,h_0\ cos\,a_0\\-sin\,h_0\ sin\,a_0\\cos\,h_0} [/mm]

Ich hoffe nun mal, dass ich dies richtig hingekriegt
habe, würde es aber schätzen, wenn das jemand genau
kontrolliert ...
Von einem in O(0/0) vertikal auf der positiven Seite
(z>0) der x-y-Ebene stehenden Beobachter gesehen,
soll [mm] \vec{e}_u [/mm] nach rechts und [mm] \vec{e}_v [/mm] nach oben zeigen.


Gruß     Al-Chwarizmi


Bezug
                                                                                        
Bezug
Koordinatentransformation: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 20:09 Mi 17.06.2009
Autor: Paddi

Hallo,

ich werde morgen mal im Laufe des Tages die Geschichte mal implementieren und dann werde ich ja sehen, wie die Objekte gezeichnet werden.

Abgabe von dem Teil ist erst Mitte Juli. Die Software ist meine Bachelor-Abschlußarbeit.
Es hat eigentlich nur an der einen Sache gehangen. Der ganze andere Kram drum herum ist schon fertig.
Ich denke, ich werde das Jetzt auch noch hinkriegen.

Ich wünsche noch einen schönen Abend.


Gruesse


Paddi

Bezug
                                                                                        
Bezug
Koordinatentransformation: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 20:57 Mi 17.06.2009
Autor: Paddi

Hallo,

ich bin es mal wieder.

Ich habe jetzt mal die Geschichte mit dem u und v berechnen soweit fertig implementiert.

Die Funktion arbeitet (fast) perfekt. Wenn aber der Pi Punkt gleich dem P0 ist, oder nur eine von beiden Komponenten gleich (also entweder Azimut oder Hoehe), so kommt für den Wert für V bzw. U jeweils eine riesen Fließkommazahl mit einem Monster Exponenten heraus.

Ich kann die Geschichte im Programm mit einer Fallunterscheidung umgehen, jedoch wäre mir lieber, wenn man da die Ursache noch finden könnte.

Ich habe das eben für etliche Testwerte ausprobiert. Es ist so egal ob ich nach rechts oder nach links mich drehe.

Noch was:

Ich kann dir später, wenn ich mal damit fertig bin, mal einen FTP-Zugang geben, wo du dir das Programm dann runter laden kannst.

Wenn ich das Zeichnen der Objekte fertig habe, muss ich den Code nur noch überarbeiten und eine Doku schreiben. Danach ist es fertig.

Gruesse


Paddi

Bezug
                                                                                                
Bezug
Koordinatentransformation: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 22:59 Mi 17.06.2009
Autor: Al-Chwarizmi


> Die Funktion arbeitet (fast) perfekt. Wenn aber der Pi
> Punkt gleich dem P0 ist, oder nur eine von beiden
> Komponenten gleich (also entweder Azimut oder Hoehe), so
> kommt für den Wert für V bzw. U jeweils eine riesen
> Fließkommazahl mit einem Monster Exponenten heraus.


Das sollte sicher nicht sein. An sich sollte das Verfahren
numerisch stabil sein. Vielleicht hast du in den Formeln
irgendwo noch nicht gekürzt, wo man kürzen könnte, so
dass es zu diesem sonderbaren Effekt kommen kann.

LG    Al-Chw.

Bezug
                                                                        
Bezug
Koordinatentransformation: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 16:29 Mi 17.06.2009
Autor: Paddi

Hallo,

ich bins nochmal.

Ich habe mich da eben bei der zweiten Anordnung der Himmelsrichtungen
etwas vertan.

Diese zählte so weit ich weis doch über Westen, d.h.:

Süden: 0 Grad
Westen: 90 Grad
Norden: 180 Grad
Osten: 270 Grad

Das System, was ich aber bisher genutzt habe zum Zeichnen war:

Norden 0 Grad
Osten: 90 Grad
Süden: 180 Grad
Westen: 270 Grad

Ich hoffe, dass ich dich jetzt nicht damit total verwirrt habe.


Gruesse

Paddi

Bezug
                                                                                
Bezug
Koordinatentransformation: Antwort
Status: (Antwort) fertig Status 
Datum: 17:01 Mi 17.06.2009
Autor: Al-Chwarizmi


> Hallo,
>
> ich bins nochmal.
>  
> Ich habe mich da eben bei der zweiten Anordnung der
> Himmelsrichtungen
>  etwas vertan.
>  
> Diese zählte so weit ich weiß doch über Westen, d.h.:
>  
> Süden: 0 Grad
>  Westen: 90 Grad
>  Norden: 180 Grad
>  Osten: 270 Grad
>  
> Das System, was ich aber bisher genutzt habe zum Zeichnen
> war:
>  
> Norden 0 Grad
>  Osten: 90 Grad
>  Süden: 180 Grad
>  Westen: 270 Grad
>  
> Ich hoffe, dass ich dich jetzt nicht damit total verwirrt
> habe.


kein Problem; viel schlimmer kann 's ja gar nicht
kommen, und man gewöhnt sich relativ leicht an
solche Situationen, so wie man mit ein wenig Übung
auch einen Text lesen kann, der auf dem Kopf steht
oder in Spiegelschrift zu sehen ist, oder beides zu-
sammen ...   ;-)

Bezug
        
Bezug
Koordinatentransformation: Wunsch
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 17:50 Mi 17.06.2009
Autor: Al-Chwarizmi

Hallo Paddi,

wenn nach diesen gemeinschaftlichen Bemühungen dein
Programm steht, würde ich mir wünschen, dass du das
Resultat in der Art von "vorher-nachher-Bildern" hier
präsentieren wirst:

Einen Himmelsausschnitt - möglichst mit mindestens
einem nicht weit vom Zenit entfernten bekannten
Sternbild - einmal in der ziemlich verzerrten a-h-Dar-
stellung und dann in der "korrekten" u-v-Darstellung.

Man sollte doch mathematische Ergebnisse auch ein
Stück weit publikumswirksam präsentieren können,
wenn auch mal nur in dem relativ kleinen Kreis des
MatheRaums !

Lieben Gruß  

ål-Chwarizmi



Bezug
                
Bezug
Koordinatentransformation: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 20:38 Mi 17.06.2009
Autor: Paddi

Auf jeden Fall.

Wird aber wie gesagt noch ne Weile dauern bis es fertig ist.

Bezug
        
Bezug
Koordinatentransformation: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 16:50 Do 18.06.2009
Autor: Paddi

Hallo,

ich bin es nochmal.

Ich habe jetzt fast den Ganzen Tag Testfälle für die Funktion, die die u-v-Koordindaten liefert geschrieben.

Das Problem war:

Bei den ganzen Fließkommaaktionen, die im 64 Bit-Datentyp Double in Java durchgeführt werden, kamen immer wieder für U oder V Werte raus, die einfach einen viel zu großen Nachkommateil hatten.

Da kam dann z.B. da, wo ein gewöhnlich Taschenrechner einfach kapituliert und 0 zurück gibt eine Zahl wie i = 0,000000.....012337 raus.

Der Rechner gibt dann das was in Fließkommaarithmetik in die Mantisse und den Exponent reinpasst aus und hängt für die Restlichen Nachkommastellen bei der Ausgabe ein E-x an.

Das heist dann, dass das Komma um x Stellen nach vorne verschoben werden muss.

Ich caste am Ende das Ding auf int (Ganzzahl 32 Bit) runter, da ich im Koordinatensystem eh nur ganze Pixel zeichnen kann. Vorher mulitipliziere ich v und u mit 1000.

Da, wo dann nach der 3. Stelle hinterm Komma noch nullen stehen, kommt dann einfach ne 0 raus.

Und bei den Zahlen kommen ja erstmal nur etliche nullen hinter dem Komma.

Zu dem sind v und u dann Ganzzahlen.

Ich habe das Ganze dann mal in den verbleibenden Programmalgorithmus eingebaut.

Und Voila:

Es funktioniert perfekt!!!!!!!!!!!!!!!!!!!!!!!!! (Bisher)

Sogar die Proportionen zwischen den Sternen stimmen recht genau.

Was ich jetzt nur hinbekommen muss, ist die Sternbilder zu zeichnen.

Da muss ich mir jetzt was neues einfallen lassen, weil der Algorithmus, den ich vorher genutzt habe, jetzt nicht mehr passt.
Das bekomme ich aber auch noch hin.

Auf jeden Fall muss ich mich bei dir bedanken.

Du hast mir echt super zu Seite gestanden!

Ich melde mich wieder.

Gruesse

Paddi



Bezug
                
Bezug
Koordinatentransformation: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 17:56 Do 18.06.2009
Autor: Al-Chwarizmi

Hallo Paddi,

schön zu hören, dass es nun doch funktioniert. Ich kenne
das übrigens auch, dass man manchmal stundenlang oder
fast Tage lang grübelt und sucht, bis man einen recht
trivialen Fehler findet ...
Herzlichen Dank für das freundliche Feedback !

Al

Bezug
                        
Bezug
Koordinatentransformation: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 21:58 Mi 01.07.2009
Autor: Paddi

Hi,

ich wollte mich noch mal melden.

Ich habe die Software jetzt soweit fertig und würde eigentlich gerne ein paar Bilder hier posten.

Weist du ob man das hier irgendwie bewerkstelligen kann?

Gruß

Paddi

Bezug
                                
Bezug
Koordinatentransformation: Bilder posten
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 23:44 Mi 01.07.2009
Autor: Al-Chwarizmi


> Hi,
>  
> ich wollte mich noch mal melden.
>  
> Ich habe die Software jetzt soweit fertig und würde
> eigentlich gerne ein paar Bilder hier posten.
>  
> Weißt du ob man das hier irgendwie bewerkstelligen kann?
>  
> Gruß
>  
> Paddi


Hallo Paddi,

das geht ganz einfach. Schau da nach:  Bilder einfügen


Und ich freue mich schon auf die Bilder !


:-)     Al-Chwarizmi  

Bezug
                                        
Bezug
Koordinatentransformation: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 13:36 Di 07.07.2009
Autor: Paddi

Hi,

hier mal einige Bilder:

[Dateianhang nicht öffentlich]

Die Sterne dieser Sternbilder stehen recht weit oben am himmel. Dort gibt es keine Verzerrungen. Dies ist die sphärische Variante.

[Dateianhang nicht öffentlich]

Hier das Gleiche mal ohne Sphärisches Zeichnen. (Also in der alten Variante) Man kann erkennen, dass das Bild sehr verzerrt ist.

[Dateianhang nicht öffentlich]

Hier einmal der Sternenhimmel vom Boden aus. (Sieht der Boden nicht nett aus?)


[Dateianhang nicht öffentlich]

Hier das Ganze nochmal in der alten Variante. Hier sind die Verzerrungen geringer, da die Objekte noch näher am Boden sind.

Das ist alles nur ein kleiner Teil dieser Software.

Ich werde die Arbeit in kürze abgeben und bin dann mit meinem Bachelor - Studium fertig. Da ich aber noch den Master of Sience machen werde, wird diese Anwendung in einem der nächsten Master-Projektarbeiten noch weiter entwickelt.

Es ist geplant IO (so ist der Name der Software) zu einem sozialen Netzwerk für Astronomen zu erweitern. Da können dann Astrofreunde aller Art über die Software in Verbindung treten und miteinander Informationen austauschen.

Demnächst gibt es zu dem unter der webdomain "io.patrickganser.de" weitere Infos über die Anwendung und geplante Erweiterungen.
Das wird aber noch ein paar Wochen dauern, bis sich da was tut.

Falls also Interesse besteht, kann dort das Ganze hin und wieder beobachtet werden.

Ich danke dir nochmals für deine professionelle Hilfe. Die Zusammenarbeit mit dir hat mich in diesem Projekt wirklich voran gebracht und hat vor allem Spaß gemacht.


Gruesse

Paddi






Dateianhänge:
Anhang Nr. 1 (Typ: jpg) [nicht öffentlich]
Anhang Nr. 2 (Typ: jpg) [nicht öffentlich]
Anhang Nr. 3 (Typ: jpg) [nicht öffentlich]
Anhang Nr. 4 (Typ: jpg) [nicht öffentlich]
Bezug
                                                
Bezug
Koordinatentransformation: Danke
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 14:15 Di 07.07.2009
Autor: Al-Chwarizmi

Hallo Paddi,

herzlichen Dank ! Die Bilder sind wirklich super, besonders
auch die geheimnisvollen Bäume (und anderen Objekte ?)
am Boden.
Und wie jämmerlich der grosse Wagen vorher verzerrt war.
Da war wirklich dringender mathematischer Handlungsbe-
darf. Jetzt freu ich mich auch für dich, dass es so gut ge-
klappt hat.

Viel Erfolg im weiteren Studium !

LG    Al

Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Sonstige Transformationen"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.matheraum.de
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]