Frage

Alle Mathematiker da draußen bitte lesen Sie die ganze Frage, dies könnte ohne HTML5-Wissen beantwortet werden :-)

Ich zoomiere (skalieren) eine HTML5 -Leinwand und ich möchte das in vielen kleinen Schritten anstelle eines großen Schritts tun, um das Scoling "glatt" erscheinen zu lassen. Um das zu erklären:

Wenn der Benutzer das Scoolrad dreht, sobald ich die Leinwand insgesamt um 20% skalieren soll. Jetzt möchte ich dies in 20 kleine Schritte unterteilen.

Mein Problem ist, dass ich aufgrund der eingeschränkten Bibliothek der Leinwand nur die Maßstab (XScale, Yscale) des 2D -Kontextes verwenden kann. Ich kann die Einheiten also nicht auf eine bestimmte Größe einstellen, das würde es einfach machen. Ich muss in jedem einzelnen Schritt einen Faktor verwenden und kann nicht herausfinden, wie dies getan werden könnte.

Die Einheiten meiner Leinwand waren also in Schritt 1 100 Jahre alt. Ich möchte, dass sie in Schritt 20 130 mit 19 kleinen Schritten dazwischen sind.

  1. OldScale: 100 ,: Faktor: x, Newscale: 101
  2. OldScale: 101 ,: Faktor: x, Newscale: 102
  3. OldScale: 102 ,: Faktor: x, Newscale: 103

......

Die Variablen I sind jetzt die aktuelle StepNumber (0-19), die Gesamtstufe (20) und das Ziel-Zoom in Prozent (20)

Das ist ein sehr einfaches Beispiel für das, was ich brauche. Das Hauptproblem ist, dass ich nur Zugriff auf das X habe und die Skalen nicht direkt beeinflussen kann.

Kann jemand helfen? Ich hoffe ich habe es gut erklärt.

War es hilfreich?

Lösung

Sie benötigen die 20-te Wurzel von 130/100. Um es zu berechnen, verwenden Sie es

k = Math.exp(Math.log(130/100) / 20)

K bis zum 20-ten Power wird 130/100 sein.

Andere Tipps

Nicht, was Ihr Problem ist:

Aber ich glaube, Sie möchten X so finden, dass:

(1+x)**numberofStep - 1 = pourcentageOfIncrease  //** is power

=> x= numberOfStepsNTHROOTOF(1+pourcentageOfIncrease) -1

für die nummerOfstep = 20 und pourcentageofincrease = 20

Sie finden : x=pow(1+20%,1/20.)-1= 0.00916 = 0.916% increase at each step

Notiz: Dies ähnelt der Berechnung Zinseszins Aber zum Zoomen. Sie berechnen den Zoom bei jedem Schritt, um den gesamten Zoom zu erhalten.

Ich hoffe, ich habe dein Problem verstanden und es hilft

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top