• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] MiniMap Berechnungsproblem mit verschiedenen Größen.

terra75

Member
Hallo zusammen,

ich möchte für ein Spiel eine MiniMap erstellen. Dieses funktioniert soweit ganz gut.
Allerdings gilt das nur, wenn ich feste Werte in meine Programmierung eingebe.

Dieses möchte ich aber durch Formeln ersetzen, so das die Werte zu 100% stimmen und nicht ca. Werte sind.

Zu dem Problem:
Ich habe ein DIV Container, in dem eine Karte angezeigt wird, die "natürlich" viel größer ist, als der DIV Container. Die Karte kann ich mit der Maus beliebig verschieben.

Die Karte habe ich geklont und via Maske in ein 2. DIV gezeichnet. Allerdings ist das 2. DIV nicht proportional zum 1. DIV Container, was die Sache kompliziert macht.

Benutzen wir mal nur die X-Koordinate, da es ja für die Y-Koordinate genau so gilt.
Und benennen wir mal folgende Dinge so:
  • x1 = Länge des Main-Container, wo große Karte dargestellt wird.
  • x2 = Länge der Karte selbst.
  • xm1 = Länge des festen DIV der Minimap.
  • xm2 = Länge der MiniMap selbst. (verkleinert auf 0,1% der original Größe)

Um euch eine Berechnung zu erleichtern hier die Werte für die X-Koordinaten.
  • x1 = 960 px
  • x2 = 1280 px
  • xm1 = 117 px
  • xm2 = 128 px

Durch all die Werte müsste ich eine Zahl heraus bekommen, die in etwa 0,04 entspricht.

Kann mir da wer irgendwie helfen. Stehe im Moment voll auf den Schlauch und wüsste nicht, wie ich die Formel setzen müsste.

Liebe Gruß,
Terra
 
Guten Abend,

zu dem Thema gibt es so einiges bereits - u. a. bei SO: klick; vielleicht hilft Dir das bei Deinen Plänen weiter.

Viel Erfolg

Gruß zurück
 
Da sich die meisten Beispiele auf 3D Anwendungen basieren bringen mir diese nicht wirklich viel, da ich eine rein 2D Anwendung habe. Leider habe ich bis jetzt auch kein Beispiel gefunden, welches mein Problem Ansatzweise verfolgt. Von daher stehe ich ja so auf den Schlauch.

Habe bereits viele logische Berechnungen mit meinen Werten durchgeführt (Dreisatz u.s.w) aber kam nie in die nähe meines gewünschten Ergebnis. Also die 0,04. Und ich möchte mich nicht zu dem Ergebnis hinmogeln.

PS: Vielleicht sollte ich noch dazu sagen, das die MiniMap sich wie folgt verhalten soll.
Wenn ich die große Map verschiebe und am hinteren Ende (also ganz rechts) der Map angekommen bin, soll der hintere Teil der MiniMap auch am Ende des "Mini"-DIV´s angezeigt werden. Egal welche Größe (prozentuale Verkleinerung) die MiniMap hat. Habe auch grade mal getestet. Bei einer nur 0,2% Verkleinerung müsste das Formel-Ergebnis etwa 0,4 betragen.

Gruß Terra
 
Zuletzt bearbeitet:
  • x1 = Länge des Main-Container, wo große Karte dargestellt wird.
  • x2 = Länge der Karte selbst.
  • xm1 = Länge des festen DIV der Minimap.
  • xm2 = Länge der MiniMap selbst. (verkleinert auf 0,1% der original Größe)

  • x1 = 960 px
  • x2 = 1280 px
  • xm1 = 117 px
  • xm2 = 128 px
das sind keine %

Durch all die Werte müsste ich eine Zahl heraus bekommen, die in etwa 0,04 entspricht.
mhh, also du willst auf 0,04 kommen
1280 - 960 -117 -128 = 75
75 - 74,96 = 0,04
wenn du uns jetzt noch verrätst, was du eigentlich berechnen willst, kann dir vielleicht auch jemand helfen
 
75 - 74,96 = 0,04 ..... :grin: Warum bin ich nicht darauf gekommen.
wenn du uns jetzt noch verrätst, was du eigentlich berechnen willst, kann dir vielleicht auch jemand helfen

Den Verschiebungswert proportional zum großen DIV.
PHP:
miniMap.x = Math.round(map.x * 0.04 + hud.miniMap.x);

map.x ist die Position der großen Map.
hud.miniMap ist einfach nur die Position, wo die MiniMap sich befindet. Kann also in der Formel erstmal ignoriert werden.

demo.jpg
Vielleicht sagen ja aber Bilder mehr als tausend Worte.
Das graue Fenster ist mein Haupt-DIV. Darin befindet sich eine große Map (bzw. Spielfeld - gepunkteter Rahmen) Dieses kann verschoben werden.
Das rote DIV ist meine MiniMap. (Quadrat - kein Rechteck wie das Haupt-DIV)
 
Den Verschiebungswert proportional zum großen DIV.
was ist der "Verschiebungswert"? der der faktor mit dem du mult. musst, um den offset in der großen karte in minimap koordinaten umzurechnen? der kann aber nicht 0,04 sein, jedenfalls nicht wenn deine x-achse der minimap 10% der x-achse der großen karte entspricht. dann ist der faktor ja 0,1

Das rote DIV ist meine MiniMap. (Quadrat - kein Rechteck wie das Haupt-DIV)
hast du dann in der minimap oben und unten einen leeren streifen, oder wird nicht alles auf der y-achse in der minimap gezeigt?
 
Leider ist mir bei dem Bild oben ein kleiner Fehler unterlaufen, wenn ich jetzt mal auf eine Verkleinerung von 10% gehe, ist die Karte in der MiniMap z.Z. kleiner als die MiniMap selbst. So mit wird in der Y-Position nichts geschehen.

Du hast schon recht. Der Faktor wäre im Normalfall bei proportionaler Sicht 0.1. Aber auch nur, wenn die MiniMap selbst proportional genau so groß wäre wie das große DIV. Das Minimap Fenster ist aber ein Quadrat. Es soll aber die karte in der MiniMap genau so zu sehen sein, wie in dem großen DIV.

Wenn ich das aber grade so schreibe und mir nochmal durch den Kopf gehen lasse, hat in dem Fall die MiniMap gar kein Sinn, da ich ja alles bereits im großen DIV sehe.
Ganz schön blöd von mir.

ich überdenke nochmal meine MiniMap und melde mich später nochmal.

Danke an alle die helfen wollten.
Terra
 
ja, normalerweise stellt man in der minimap ein größeres gebiet dar, als man auf der großen karte sieht, wenn nicht sogar die ganze karte.
dann wäre es das verhältniss von x2/xm1 und xm2 bräuchtest du nicht.
wenn jetzt zusätzlich noch deine minimap ein anderes seitenverhältniss hat als die ganze karte, musst du vorher noch das größte verhältniss von x/xm und y/ym bestimmen
und mit diesem x UND y der minimap scalieren. dann bleibt unten oder rechts im minimap-fenster platz übrig und du könntest die minimapansicht noch zentrieren.
 
Zurück
Oben