Seite 1 von 1

2d-Grafik aufgrund von array-infos in isobarer Darstellung

Verfasst: 03.08.2005 13:52
von r7mk4
Ja hallo erstmal,

folgendes ist dann mein Problem:

Ich zieh mir Sensordaten über die serielle Schnittstelle rein und visualisiere sie. Das Feld besteht derzeit aus 16x16 Sensoren.

So, jetzt sieht das ganze natürlich recht klobig aus, wenn man die Info als Sprite, ich sag mal, 30x30 darstellt. (Nein, sie kleiner darzustellen ist zwar ein Lösungsvorschlag, aber nicht dienlich :? )

Was ich gerne hätte wäre eine Darstellung (isobar) nacht dem Typ einer Wettertemperaturkarte.

Kleines Beispiel:

http://weather.unisys.com/surface/sfc_con_pres.gif

Kann mir da bitte jemand weiterhelfen. Ich weiß, daß dieser Algorithmus irgendwo da draußen ist, aber den zu googlen ist mir bisher leider nicht gelungen.

Gruß
R7mk4

Verfasst: 03.08.2005 15:23
von Batze
Ist das einfach ein Quadratisches Feld?

Verfasst: 03.08.2005 15:53
von freedimension
Stichwort:
Interpolation

Vorgehensweise:
Mit einer beliebig hohen Auflösung einfach für jedes Pixel ausrechnen, wieviel Einfluss die vier umgebenden Messpunkte haben und daraus dann den Wert berechnen.

Beispiel:

Code: Alles auswählen

 50|190
---|---
140| 10
Das Pixel liegt jetzt irgendwo in der Mitte, z.B. in der Nähe der 50. Einfach den Abstand zu den einzelnen Sensorpunkten ausrechnen (so etwas kann für bessere Performance auch einmalig in einer LUT erledigt werden):

Code: Alles auswählen

dXS1: 10
dXS2: 30
dXS3: 20
dXS4: 40
(stark vereinfacht).
S1 hat also den meisten Einfluss auf das Pixel und S4 den geringsten, die Werte müssen also umgekehrt betrachtet werden, hierfür am Besten den maximal möglichen Abstand ausrechnen und die Abstände von diesem abziehen (oder sowas Ähnliches).
Der Rest ist einfache Mathematik, sprich Multiplikation und Normierung usw.

Um solch eine Isobar-Darstellung zu erhalten, sollten die Ergebnisse der Interpolation dann noch in Mengen zusammengefasst werden, also Pixel mit Werten von 0 bis 49 werden in blau dargestellt, 50-99 in hellgrün, 100-149 in grün usw.