WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Simulationen > Designer Forum

Designer Forum Treffpunkt für Gedankenaustausch von Simmern, die selbst

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 18.11.2005, 19:42   #1
Isra
Senior Member
 
Registriert seit: 08.06.2004
Beiträge: 132


Isra eine Nachricht über Yahoo! schicken
Frage Simple Moving Map in XML?

Hallo Zusammen!
Ich würde gerne eine einfache Moving Map in ein Panel einbauen, also nicht eine in der Form des GPS im FS2004.
Dazu möchte ich ein BMP (Karte) benützen welches sich so quasi dreht oder bewegt.
Hat jemand eine Ahnung wie sich das in XML umsetzen lässt

Ich stelle mir das irgendwie so vor: Man nimmt dieses BMP und definiert die Mitte davon als Koordinaten nördlich/westlich. Dann müsste man wohl auch noch weitere Koordinaten des BMP definieren wie z.B. links recht oben unten....oder wie geht das?

Vielen Dank für jede Hilfestellung
____________________________________
Gruss Beat
Isra ist offline   Mit Zitat antworten
Alt 23.11.2005, 11:03   #2
Schulli
Senior Member
 
Registriert seit: 02.09.2004
Alter: 53
Beiträge: 124


Standard

du meinst bestimmt sowas wie auf der airshow.

mittelpunkt definieren, nach N,S,W,E in abhängigkeit vom abstand vom ausgangspunkt verschieben und danach entsprechend aircraft heading drehen. zum zoomen einfach verschiedene bmp mit unterschiedlicher auflösung verwenden und über tags anwählen.

aber wo kriegste denn ne bmp her, die die gesamte erde abdeckt und ne gute detaillierte auflösung bringt? so ein bmp von nem abgerollten globus ist doch zu weit weg, da siehste ja nicht, wenn sich der flieger bewegt.
____________________________________
Schulli
Gruß aus EDDB

Project Global - Freeware Global Express
Schulli ist offline   Mit Zitat antworten
Alt 23.11.2005, 19:10   #3
derBruchpilot
Master
 
Registriert seit: 16.10.2003
Alter: 63
Beiträge: 736


Standard

Ich sehe da ein grundsätzliches Problem:

Die Karte könnte man als Hintergrund-bitmap in das gauge übernehmen. Oder als Element, dass unter einer Maske verschoben wird. Allerdings könnte man sie nicht wechseln oder zoomen, sondern nur die jeweils benötigte Karte sichtbar schalten. Der gesamte Kartensatz müsste also im gauge "fest verdrahtet" sein, ebenso die Referenzierung. Damit ließe sich nur ein sehr begrenzter Teil der Erdoberfläche abdecken.

Zum "Wechseln" der Kartenblätter müsste man Dateien lesen können, diese Funktion wird aber von xml meines Wissens nicht unterstützt.



Harry, übernehmen Sie!

Gruß R.
____________________________________
Glück bedeutet einen anständigen Martini, ein anständiges Essen, eine anständige Zigarre und eine anständige Frau ... oder eine unanständige Frau - je nachdem, wieviel Glück man verkraften kann. -Robert Burns
http://www.derbruchpilot.net/html/msfs.html
derBruchpilot ist offline   Mit Zitat antworten
Alt 23.11.2005, 20:23   #4
harry3
Inventar
 
Registriert seit: 11.06.2001
Alter: 39
Beiträge: 2.397


harry3 eine Nachricht über ICQ schicken
Standard

Also solange die Karte klein genug ist, ist das möglich. Also eine Karte von deinem Heimatland, der Schweiz, wird sicher möglich sein. Dort fällt die Erdkrümmung auch noch nicht so ins Gewicht.

Aber ein viel größeres Gebiet halte ich für unmachbar.

Grundsätzlich würde ich es so machen wie Schulli geschrieben hat. Also 2 Shift für x und y Richtung. Damit kannst du die Karte im "North Up" Modus verschieben. North Up ist das einfachste.

Schwieriger wirds mit Kursverfolgung, also wenn die Karte immer in Flugrichtung gedreht wird.
Dann musst du zusätzlich ein Rotate für die Himmelsrichtung einbauen.
Außerdem kannst du die Karte dann nicht mehr so ohne weiteres verschieben. Denn es kann ja sein dass Norden dann nicht oben ist, sondern z.B. rechts.
Du musst also mit den Winkelfunktionen sin und cos herausrechnen, in welche Richtung verschoben werden muss.
Also z.B.:

Shift x = Breite*sin(Flugrichtung)+Länge*cos(Flugrichtung)
(ich hoffe ich hab mich jetzt nicht mit sin und cos vertan...!)



Grüße,
Harri
harry3 ist offline   Mit Zitat antworten
Alt 23.11.2005, 22:14   #5
Isra
Senior Member
 
Registriert seit: 08.06.2004
Beiträge: 132


Isra eine Nachricht über Yahoo! schicken
Standard

Hallo Zusammen!
Danke für Eure Inputs
Ich hab wohl vergessen zu erwähnen dass sich die Map nur auf das schweizer Ländle beziehen soll.
Also mit freundlicher Mithilfe gestaltet sich die Sache so:
Die Koordinaten beziehen sich nicht auf die Schweiz im folgenden Beispiel (noch nicht)! Das Problem dass ich dabei noch habe ist wie und wo ich die Koordinaten genau eingebe.
Bei diesem gauge gibt es also 2 Maps, full und small wo man also eine Zoom Position hat. Kann mir evtl. jemand helfen wie man die Koordinaten einträgt?

Gruss Beat

PHP-Code:
<Gauge Name="moving map" Version="1.0">

<
Element>
 <
Size X="350" Y="338"/>
  
<
Visible>(A:Circuit general panel onbool)</Visible>

<
Element>
  
<
Visible>(G:Var1== (A:PLANE LATITUDEdegreess0 58.2 < && l0 49.8 > && (A:PLANE LONGITUDEdegreess1 -10.8 > && l1 2.2 < &&
</
Visible>
  <
Position X="0" Y="0"/>
  
<
MaskImage Name="map_mask.bmp" Bright="Yes" ImageSizes="350,338,0,0">
    
<
Axis X="0" Y="0"/>
     
</
MaskImage>
      <
Image Name="swiss_full.bmp" Bright="Yes" ImageSizes="4480,4800,0,0">
        
<
Axis X="2149" Y="1822"/>
        
</
Image>
         
<
Shift>
          
<
Value>55 (A:PLANE LATITUDEdegrees) - 96 s0 -3.5 (A:PLANE LONGITUDEdegrees) - 2.5 s1 l0 s2 l1 801 l2 
</
Value>
         
<
Scale X="1.00"/>
         
</
Shift>
         
<
Shift>
          
<
Value>1500 3.7 dgrd tan 46 s0 -3.5 (A:PLANE LONGITUDEdegrees) - 4.5 3.7 abs dgrd cos l0 s1 l0 l1 s2 (>G:Var255 (A:PLANE LATITUDEdegrees) - / -2777 l2 
</
Value>
         
<
Scale Y="1.00"/>
         
</
Shift>

</
Element>


<
Element>
  
<
Visible>(G:Var1) (A:PLANE LATITUDEdegreess0 58.2 < && l0 49.8 > && (A:PLANE LONGITUDEdegreess1 -10.8 > && l1 2.2 < &&
</
Visible>
  
<
Position X="0" Y="0"/>
   
<
MaskImage Name="map_mask.bmp" Bright="Yes" ImageSizes="350,338,0,0">
    <
Axis X="0" Y="0"/>
     
</
MaskImage>
      
<
Image Name="swiss_small.bmp" Bright="Yes" ImageSizes="1493,1600,0,0">
        <
Axis X="600" Y="495"/>
        </
Image>
         
<
Shift>
          
<
Value>55 (A:PLANE LATITUDEdegrees) - 32 s0 -3.5 (A:PLANE LONGITUDEdegrees) - 2.5 s1 l0 s2 l1 267 l2 
</
Value>
         
<
Scale X="1.00"/>
         
</
Shift>
         
<
Shift>
          
<
Value>55 (A:PLANE LATITUDEdegrees) - / -926 s0 (G:Var2l0 
</
Value>
         
<
Scale Y="1.00"/>
         
</
Shift>

</
Element>


<
Element>
  
<
Visible>(A:PLANE LATITUDEdegreess0 58.2 >= l0 49.8 <= || (A:PLANE LONGITUDEdegreess1 -10.8 <= || l1 2.2 >= ||
</
Visible>
      
<
Image Name="Out_Of_Range.bmp" Bright="Yes" ImageSizes="350,338,0,0"/>

</
Element>


<
Element>
  
<
Visible>(A:PLANE LATITUDEdegreess0 58.2 l0 49.8 > && (A:PLANE LONGITUDEdegreess1 -10.8 > && l1 2.2 < &&
</
Visible>
 
<
Position X="175" Y="169"/>
  
<
Image Name="map_pointer.bmp" Bright="Yes" ImageSizes="61,61,0,0">
   
<
Axis X="30.5" Y="30.5"/>
  
</
Image>
    
<
Rotate>
     
<
Value>(A:Plane heading degrees gyroradians)
</
Value>
    
</
Rotate>

</
Element>


</
Element>

  
<
Mouse>
   
<
Tooltip>%Moving Sectional Chart</Tooltip>
    
<
Area Left="0" Top="278" Width="60" Height="60">
     
<
Tooltip>%Zoom (%((G:Var1))%{if}%In%{else}%Out%{end})</Tooltip>
      
<
Cursor Type="Hand"/>
       
<
Click>(G:Var1) ! (>G:Var1)</Click>
    
</
Area>
  
</
Mouse>
 
</
Gauge
____________________________________
Gruss Beat
Isra ist offline   Mit Zitat antworten
Alt 23.11.2005, 23:44   #6
derBruchpilot
Master
 
Registriert seit: 16.10.2003
Alter: 63
Beiträge: 736


Standard

So, ich habe Deinen Code der Form halber mal in eine andere Form gebracht:
PHP-Code:

<Element
       <
Visible>
        (
G:Var1== 
        (
A:PLANE LATITUDEdegreess0 58.2 < && 
        
l0 49.8 > && 
        (
A:PLANE LONGITUDEdegreess1 -10.8 > && 
        
l1 2.2 < && 
    </
Visible
      <
Position X="0" Y="0"/> 
                   
    <
MaskImage Name="map_mask.bmp" Bright="Yes" ImageSizes="350,338,0,0"
             <
Axis X="0" Y="0"/> 
          </
MaskImage>
 
          <
Image Name="swiss_full.bmp" Bright="Yes" ImageSizes="4480,4800,0,0"
             <
Axis X="2149" Y="1822"/> 
         </
Image
          
    <
Shift>            
        <
Value>
            
55 (A:PLANE LATITUDEdegrees) - 96 s0 -3.5 
            
(A:PLANE LONGITUDEdegrees) - 2.5 s1 l0 s2 l1 801 l2 
        </
Value>           
        <
Scale X="1.00"/> 
          </
Shift
          
    <
Shift
               <
Value>
            
1500 3.7 dgrd tan 46 s0 -3.5 
            
(A:PLANE LONGITUDEdegrees) - 4.5 3.7 abs dgrd cos l0 s1 l0 l1 s2 (>G:Var2)                     55 (A:PLANE LATITUDEdegrees) - / -2777 l2 
        </
Value
              <
Scale Y="1.00"/> 
          
    </
Shift
</
Element
____________________________________
Glück bedeutet einen anständigen Martini, ein anständiges Essen, eine anständige Zigarre und eine anständige Frau ... oder eine unanständige Frau - je nachdem, wieviel Glück man verkraften kann. -Robert Burns
http://www.derbruchpilot.net/html/msfs.html
derBruchpilot ist offline   Mit Zitat antworten
Alt 24.11.2005, 00:07   #7
derBruchpilot
Master
 
Registriert seit: 16.10.2003
Alter: 63
Beiträge: 736


Standard

Weenn ich es richtih interpreteiren, steuert der Ausdruck
PHP-Code:
       <Visible>
        (
G:Var1== 
        (
A:PLANE LATITUDEdegreess0 58.2 < && 
        
l0 49.8 > && 
        (
A:PLANE LONGITUDEdegreess1 -10.8 > && 
        
l1 2.2 < && 
    </
Visible
die Sichtbarkeit der ersten Karte. Sie soll sichtbar sein, wenn
1. die Variable G1 gleich Null ist:
PHP-Code:
(G:Var1== 
2. die geogr Breite kleiner als 58.2 und größer als 49.8 ist:
PHP-Code:
        (A:PLANE LATITUDEdegreess0 58.2 < && 
        
l0 49.8 > && 
3. die geogr Länge kleiner als 2.2 und größer als 10.8 ist:
PHP-Code:
        (A:PLANE LONGITUDEdegreess1 -10.8 > && 
        
l1 2.2 < && 
damit hättest Du doch schon mal Koordinaten angegeben?

Anschließend verschiebst Du. Da Du kein rotate vorgesehen hast, also die Karte nicht drehst, halte ich die sin- und cos-Geschichte erst einmal für entbehrlich.

Zum Berechnen der Shift-größe folgende Überlegung:
Der Abstand zwischen zwei Längengraden (Meridianen) beträgt am Äquator ca. 111 km. Deine Karte hat eine Ausdehnung von -10.8 bis 2.2 in der Breite, also 13 Längengrade, macht 1443 km.
Das bitmap ist 4480 Pixel breit, also deckt ein Pixel 0,3 KM ab. Oder anders herum, bei einer Flugstecke von 1km müsstest Du die Karte ca. 3 Pixel in x-Richtung verschieben.
Dazu müsstest Du Deinen momentanen Standort vom gedachten Kartenmittelpunkt (-4.3) subtrahieren, und, da sich die Karte unter dem flugzeug wegschiebt, mit -1 multiplizieren:
PHP-Code:
<Value>
  (
A:PLANE LONGITUDEdegrees)  4.3 /-/ - /-/ 
</
Value
Wenn Du genau die Entfernung zwischen zwei Meridianen zurückgelegt hättest, müsstest Du die Karte um 113km * 3 Pixel = 339 Pixel verschieben:
PHP-Code:
<Shift>            
  <
Value>
    (
A:PLANE LONGITUDEdegrees)  4.3 /-/ - /-/ 
  </
Value
  <
Scale X="339.00"/> 
</
Shift
Soweit, sogut. Da der Abstand zwischen zwei Meridianen zu den Polen hin immer kleiner wird, kannst Du ja noch eine Breitenkorrektur anbringen. Unter der Annahme, das MS eine Kugeloberfläche verwendet, ließe sich das über den Kosinus bewerkstelligen:
PHP-Code:
<Shift
 <
Value>
   (
A:PLANE LONGITUDEdegrees)  (A:PLANE LATITUDEradianscos *   4.3 /-/ - /-/ 
  </
Value
  <
Scale X="339.00"/> 
</
Shift
____________________________________
Glück bedeutet einen anständigen Martini, ein anständiges Essen, eine anständige Zigarre und eine anständige Frau ... oder eine unanständige Frau - je nachdem, wieviel Glück man verkraften kann. -Robert Burns
http://www.derbruchpilot.net/html/msfs.html
derBruchpilot ist offline   Mit Zitat antworten
Alt 24.11.2005, 01:22   #8
derBruchpilot
Master
 
Registriert seit: 16.10.2003
Alter: 63
Beiträge: 736


Standard

BTW: Du solltest vielleicht auch bdedenken, dass das von Dir gewählte Bitmap swiss_full in der gedachten Größe 63Mb schwer ist.


Gruß R.
____________________________________
Glück bedeutet einen anständigen Martini, ein anständiges Essen, eine anständige Zigarre und eine anständige Frau ... oder eine unanständige Frau - je nachdem, wieviel Glück man verkraften kann. -Robert Burns
http://www.derbruchpilot.net/html/msfs.html
derBruchpilot ist offline   Mit Zitat antworten
Alt 25.11.2005, 18:50   #9
Isra
Senior Member
 
Registriert seit: 08.06.2004
Beiträge: 132


Isra eine Nachricht über Yahoo! schicken
Standard

Guten Abend!
Vielen Dank für die Übersetzung !!! Ich hab damit nun noch etwas rumgebastelt und das Ganze in ein Hornet-Panel eingebaut was nun folgendermassen ausschaut:



Womit Du absolut Recht hast ist das Problem mit der Grösse der Karte.
Meines ist zwar nicht ganz so gross wie Du genannt hast, aber dennnoch sehr unattraktiv für ein Gauge. Es müsste immense Ausmasse haben um wirklich reinzoomen zu können um überhaupt noch scharfe Konturen erkennen zu können.
Da bleibt mir wohl nichts anderes übrig als zu der Vektoren-Version zurück zu kehren.

Beim traditionellen GPS des FS9 lässt sich soweit ich weiss die Farbgebung des Terrains nicht ändern. Da ich eben dieses blaustichige Terrain benötige, müsste ich wohl eine einfärbende Folie über das Terrain legen. Weiss jemand in welchem Format ich dieses erstellen/speichern müsste?
____________________________________
Gruss Beat
Isra ist offline   Mit Zitat antworten
Alt 25.11.2005, 19:30   #10
harry3
Inventar
 
Registriert seit: 11.06.2001
Alter: 39
Beiträge: 2.397


harry3 eine Nachricht über ICQ schicken
Standard

Du könntest aber auch die Karte in mehrere eile zerhacken.
Und auch nicht zu bviele Zoomstufen einbauen, z.B. nur 2.

Die bmp's für die Karten am besten nur als 16Farben BMP abspeichern.

Irgendwie müsste es also schon möglich sein das Gauge lauffähig zu machen!


Grüße,
Harri
harry3 ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist an.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:00 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag