NOTA! Questo sito utilizza i cookie e tecnologie simili.

Se non si modificano le impostazioni del browser, l'utente accetta. Per saperne di piu'

Approvo

Capitolo 125: Alpha.

 

Un oggetto Alpha fornisce un valore tra 0 e 1 (estremi inclusi) basandosi sul tempo: è una funzione f(t) = [0, 1].

 

E' possibile inserire più oggetti Alpha in un universo virtuale per associarli a vari interpolatori.

Gli Alpha, se non specificato diversamente (vedremo in seguito come fare), partiranno tutti allo stesso istante.

 

 

Alpha ha una gran quantità di parametri che servono a definire come deve variare il valore restituito in funzione del tempo: durata di un ciclo, forma d'onda, ...

La forma d'onda di un Alpha è il grafico della funzione f(t) = [0, 1].

Un esempio di forma d'onda, con indicate le zone che la compongono, è visibile nell'immagine seguente.

Java 3D Curva base oggetto Alpha parametri

 

 

 

I cicli possono essere eseguiti una o più volte, specificando il numero di esecuzioni con il parametro loopCount, un intero positivo.

Utilizzando il valore 1, l'Alpha ciclerà all'infinito.

Il phaseDelay, un valore che ritarda l'esecuzione del ciclo, verrà applicato se presente solo alla prima iterazione del ciclo.

Come è possibile notare dalla figura, le fasi del fronte d'onda sono 4:

 

  • incremento;

  • valore di Alpha a 1;

  • decremento;

  • valore di Alpha a 0.

 

E' possibile comunque scegliere quali fasi della forma d'onda implementare, con INCREASING_ENABLE, che abilita la prima fase, DECREASING_ENABLE, che abilita la terza fase, e una combinazione delle due.

Java 3D Combinazioni fronte onda per curva Alpha

 

Le forme d'onda presentate nelle immagini precedenti avevano andamenti lineari, tuttavia è possibile 'smussare' tali forme al fine di ottenere cambiamenti più graduali, necessari, ad esempio, per definire il moto di un pendolo, impostando opportunamente i valori dei parametri Ramp, corrispondenti a determinate fasi della funzione d'onda, come mostrato in figura.

Come detto precedentemente, tutti gli Alpha avranno lo stesso START TIME e tutti gli Interpolator saranno sincronizzati sullo start time di sistema; tuttavia, è possibile definire ritardi nell'avvio sfruttando i parametri:

 

  • TriggerTime: il tempo che intercorre tra lo 0 del sistema (all'avvio del programma) e l'inizio del primo ciclo di Alpha;

  • PhaseDelay: ulteriore ritardo posto tra il TriggerTime e l'inizio vero e proprio del primo ciclo.

La durata dell'intero ciclo è data dalla somma dei tempi dedicati a ciascuna delle 4 fasi del ciclo (incremento, 1, decremento, 0).

 

E' giunto il momento di presentare i costruttori e i metodi di Alpha.

Costruttori:

  • Alpha(); valori di default: increasing enable, loop count a -1, increasingAlphaDuration: 1000, tutti gli altri valori a 0.

  • Alpha(int loopCount, long increasingAlphaDuration).

  • Alpha(int loopCount, long triggerTime, long phaseDelayDuration, long increasingAlphaDuration, long increasingAlphaRampDuration, long alphaAtOneDuration).

  • Alpha(int loopCount, int mode, long triggerTime, long phaseDelayDuration, long increasingAlphaDuration, long increasingAlphaRampDuration, long alphaAtOneDuration, long decreasingAlphaDuration, long decreasingAlphaRampDuration, long alphaAtZeroDuration).

Java 3D AlphaRamp rampa della curva Alpha

Metodi utili messi a disposizione da Alpha (il loro significato è ovvio):

  • setLoopCount(int loopCount) : void;

  • setMode(int mode) : void;

  • value() : float;

  • value(long atTime) : float;

  • setStartTime(long startTime) : void; se non specificato, di default è quello di sistema;

  • setTriggerTime(long triggerTime) : void;

  • setPhaseDelayDuration(long phaseDelayDuration) : void;

  • setIncreasingAlphaDuration(long increasingAlphaDuration) : void;

  • setAlphaAtOneDuration(long alphaAtOneDuration) : void;

  • setDecreasingAlphaDuration(long decreasingAlphaDuration) : void;

  • setAlphaAtZeroDuration(long alphaAtZeroDuration) : void;

  • setIncreasingAlphaRampDuration(long increasingAlphaRampDuration) : void;

  • setDecreasingAlphaRampDuration(long decreasingAlphaRampDuration) : void;

  • pause() : void;

  • pause(long time) : void;

  • resume() : void;

  • resume(long time) : void;

  • isPaused() : boolean; .

 

 
Vai all'inizio della pagina