Skalierung auf x-Achse

Hydralisk

Grünschnabel
Hi ich möche auf einem Koordinatensystem die X-Achse vergrößern,
die X-Achse hatt zu Beginn die Weite von 500 pixeln und alle 100 pixel einen Achsenabschnitt
0,100,200,300,400,500
jetzt möchte ich zb von 200 nach 300 zoomen sodas die komplette Achse, immernoch 500 Pixel weit ist
aber die Skalierung nun bei 200 beginnt und bei 300 ended.

200,220,240,260,280,300

wenn ich nun von 220 auf 240 zoome

220,224,228,232,236,240

das ganze soll also wiederholbar sein.
Hätte da jemand eine Funktion dafür?

mfg Hydralisk
 
Das hört sich nach linearer Interpolation an.

ich stelle mir das für die labels irgendwie so vor, habs aber gerade nicht getestet.
Code:
int anfang
int ende
int steps
int[] labels = new int[steps];

for(int ii=0; ii<steps; ii++)
{
labels[ii] = anfang + (ende - anfang)*ii/steps;
}

anfang und ende passt du dann dementsprechend an.
Hoffe ich habe jetzt auf die Schnelle keinen Denkfehler gemacht.

EH.
 
japp also für den ersten Zoom klappt das auch, jedoch beim zweiten Zoom
ist das Problem das die Pixelwerte immernoch denen des Orginals entsprechen und ich bräuchte eine Funktion die mir jetzt sagt bsp. auf punkt 300 ist jetzt wert 77.
also die Scherung sozusagen.
 
Vieleicht versteh ich dich falsch aber versuch doch meinen Codeschnipsel in eine Methode zu packen, an die du die jeweiligen Anfangs- und Endwerte übergibst.

Code:
public int[] zoomIt(int anfang, int ende, int steps)
{
  int[] labels = new int[steps];

  for(int ii=0; ii<steps; ii++)
  {
    labels[ii] = anfang + (ende - anfang)*ii/steps;
  }

  return labels;
}

und die Methode rufst du dann immer wieder auf, mit den entsprechenden Werten, die du benötigst.
Unter Umständen brauchst du 'steps' nicht übergeben wenn es sich eh nie ändert und verdrahtest es fest in der Methode selbst.

Also z.B.
Code:
public void main()
{
  int[] currentlabels;
  int a, b;

  for(int ii=0; int<10; ii++)
  {
    a=ii*100;
    b=5000-ii*100;
    currentLabels = zoomIt(a, b, 5)
  }
}
 
Zuletzt bearbeitet:
Zurück