Domanda

Per tutti i matematici là fuori Si prega di leggere tutta la questione, questo potrebbe essere risolta senza alcuna conoscenza HTML5: -)

Io sono lo zoom (ridimensionamento) un HTML5 canvas e voglio farlo in un sacco di piccoli passi, invece di un grande passo per rendere la scrooling sembra "liscio". Per spiegare che:

Quando l'utente gira la scroolwheel una volta che il mio obiettivo è quello di scalare la tela del 20% in totale. Ora voglio dividere questo in diciamo 20 piccoli passi.

Il mio problema è, che a causa della libreria ristretta della tela posso usare solo la scala (xscale, yscale) il metodo del Contesto 2d a farlo. Quindi, non posso impostare le unità ad una dimensione specifica, che renderebbe più facile. Devo usare un fattore in ogni singolo passaggio e io non riesco a capire come questo potrebbe essere fatto.

Quindi, le unità di mia tela è stata 100 nella fase 1 che voglio loro di essere 130 al passo 20 con 19 piccoli passi in mezzo.

  1. oldscale: 100,: Fattore: x, newScale: 101
  2. oldscale: 101,: fattore: x, newScale: 102
  3. oldscale: 102,: fattore: x, newScale: 103

......

Le variabili che ora è lo STEPNUMBER corrente (0-19), totalsteps (20) e bersaglio-zoom in percentuale (20)

Questo è un esempio molto semplice di quello che mi serve. Il problema principale è che ho solo l'accesso al X e non posso influenzare direttamente la bilancia.

chiunque aiutare

Can? Spero che ho spiegato bene.

È stato utile?

Soluzione

È necessario il 20-esima radice di 130/100. Per calcolare esso uso

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

k elevata a 20-esima potenza sarà 130/100.

Altri suggerimenti

Non sur ciò che il tuo problema è il seguente:

Ma io credo che si desidera trovare x tale che:

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

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

per numberofStep = 20 e pourcentageOfIncrease = 20

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

Nota: Questo è simile al calcolo interesse composto ma per zoom. Si calcola lo zoom ad ogni passo per ottenere lo zoom totale.

La speranza ho capito il problema e aiuta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top