Espressione aritmetica

Una raccolta di funzioni e operazioni aritmetiche, che vengono utilizzati da altri elementi Watch Face Format per risolvere valori degli attributi ed effetti giroscopici in tempo reale.

Introdotta in Wear OS 4.

Esempio

Un'espressione di esempio per ruotare un valore fino a 5 gradi in entrambe le direzioni, in base al valore $ x $ dell'accelerometro del dispositivo Wear OS:

(5/90)*clamp([ACCELEROMETER_ANGLE_X],0,90) + (-5/90)*clamp([ACCELEROMETER_ANGLE_X],-90,0)

...che equivale alla seguente espressione matematica, dove $\theta_x $ rappresenta l'angolo dell'accelerometro nella direzione $ x $:

$$ \frac{5}{90} * max(min(\theta_x, 90), -90) $$

Funzioni

Il formato del quadrante riconosce i seguenti valori di stringa come funzioni:

round()
Converti il valore di input in un valore con virgola mobile, quindi esegue l'operazione matematica standard di round().
floor()
Esegue l'operazione matematica standard di floor().
ceil()
Esegue l'operazione matematica standard di ceil().
fract()
Restituisci la parte frazionaria del valore di input, ovvero la parte del valore in virgola mobile che appare a destra del punto decimale.
sin()
Esegue l'operazione trigonometrica standard di sin().
cos()
Esegue l'operazione trigonometrica standard di cos().
tan()
Esegue l'operazione trigonometrica standard di tan().
asin()
Esegue l'operazione trigonometrica standard di asin(). Il valore restituito è sempre compreso nell'intervallo $ [-\frac{\pi}{2}, \frac{\pi}{2}] $.
acos()
Esegue l'operazione trigonometrica standard di acos(). Il valore restituito è sempre compreso nell'intervallo $ [0,0, \pi] $.
atan()
Esegue l'operazione trigonometrica standard di atan(). Il valore restituito è sempre compreso nell'intervallo $ [-\frac{\pi}{2}, \frac{\pi}{2}] $.
abs()
Converti il valore di input in un valore con virgola mobile, quindi esegue l'operazione matematica standard di abs().
clamp(,,)
Converti i valori di input in valori in virgola mobile, quindi esegue l'operazione Jetpack clamp() per adattarsi al primo valore nell'intervallo definito dal secondo e dal terzo valore.
rand(,)

Genera un valore in virgola mobile casuale che soddisfa contemporaneamente le seguenti condizioni:

  • Maggiore o uguale al primo valore.
  • Minore o uguale al secondo valore.

Presuppone che il primo valore sia minore o uguale al secondo valore.

log()

Esegue l'operazione matematica standard in base-$ e $ log().

log2()

Simula un logaritmo in base-2. Questo valore viene calcolato dividendo il logaritmo in base 10 (log10 del valore di input) per il logaritmo in base 10 di 2 $.

log10()

Esegue l'operazione matematica standard in base 10 log10.

sqrt()

Esegue l'operazione matematica standard di sqrt().

cbrt()

Esegue l'operazione matematica standard di cbrt().

exp()

Esegue l'operazione matematica standard di exp().

expm1()

Richiama direttamente l'operazione matematica expm1() se il valore di input è $ 1 $. Per qualsiasi altro valore di input, simula la funzione eseguendo l'operazione matematica standard exp(), quindi sottraendo 1.

deg()

Esegue l'operazione matematica standard di toDegrees(). $ \frac{\pi}{2} $ è definito come 90 gradi e $ \pi $ è definito come 180 gradi.

rad()

Esegue l'operazione matematica standard di toRadians(). 90 gradi sono definiti come $ \frac{\pi}{2} $, mentre 180 gradi sono definiti $ \pi $.

pow(,)

Esegue l'operazione matematica standard di pow(). Il valore di output è sempre un numero con virgola mobile.

numberFormat(,)

Applica il formato numerico nel primo valore al secondo.

Il primo valore può contenere i seguenti caratteri:

  • #: rappresenta una cifra numerica.
  • ,: rappresenta un separatore di virgola per i numeri grandi.
  • .: rappresenta un punto decimale.
icuText()

Converte la stringa del formato della data di input in un pattern corrispondente al formato delle impostazioni internazionali previsto. Se l'elemento PartText principale include un elemento Localization, viene utilizzato il formato di quell'impostazione internazionale. In caso contrario, verranno usate le impostazioni internazionali attuali del dispositivo Wear OS.

Ad esempio, se il dispositivo viene utilizzato negli Stati Uniti, un valore di input di EE, MMM d, yyyy h:mm a restituisce il seguente output: Tue, Mar 14, 2023 1:59 PM

icuBestText()

Converte la stringa del formato della data di input nell'ora attuale il cui pattern corrisponde al formato previsto. Se l'elemento PartText principale include un elemento Localization, viene utilizzato il formato di quell'impostazione internazionale. In caso contrario, verranno usate le impostazioni internazionali attuali del dispositivo Wear OS.

Ad esempio, se il dispositivo viene utilizzato negli Stati Uniti il 14 marzo 2023 alle 13:59, un valore di input di yyyy MMM d EE a h:mm restituisce il seguente output: Tue, Mar 14, 2023, 1:59 PM

subText(,,)

Estrae una sottostringa dal primo valore. Il secondo valore indica l'indice in base 0 nel primo valore in cui deve iniziare la sottostringa. Il terzo valore indica l'indice in base 0 nel primo valore in cui deve essere interrotta l'estrazione delle sottostringhe ("dal secondo valore fino al terzo valore escluso").

Esempi:

  • subText("abc def", 2, 5) è c d
  • subText("abc def", 2, 7) è c def
textLength()

Calcola la lunghezza della stringa di input.

Operatori

Watch Face Format riconosce i seguenti valori di stringa come operatori:

+
Più unario o aggiunta di più valori. Supporta sia valori interi sia valori in virgola mobile.
-
Meno unitario o sottrazione di più valori. Supporta sia valori interi sia valori in virgola mobile.
*
Moltiplicazione di più valori interi o con virgola mobile.
/

Divisione di 2 valori interi o in virgola mobile.

Se la divisione di 2 numeri interi restituisce un valore non intero, la parte decimale viene conservata nel risultato in virgola mobile. Ad esempio, $ \frac{1}{2} = 0.5 $.

Inoltre, l'espressione $ \frac{x}{0} $ viene valutata come 0, dove $ x $ è qualsiasi numero intero.

%

Divisione modulare di 2 valori interi o in virgola mobile.

Se entrambi gli operandi sono numeri interi, il risultato è il resto della divisione dei 2 valori. Ad esempio, $ 19 \bmod 7 = 5 $.

Se almeno un operando è un numero con virgola mobile, il risultato è un equivalente in virgola mobile del resto, ad esempio: $ 19.0 \bmod 7 = 5.0 $.

~

Operatore "not" a livello di bit. Alcuni esempi:

  • ~1 costa -2 $
  • ~0 costa -1 $
!

Operatore logico "not", che supporta i doppi negativi. Alcuni esempi:

  • !2 $ equivale a false
  • $ !!0 $ è true
|

Operatore "or" a livello di bit. Supporta più di due valori di input. Alcuni esempi:

  • 1 € | 0 = 1 €
  • 1 € | 2 | 4 = 7 €
||
Operatore logico "or".
&
Operatore "and" per bit. Supporta esattamente 2 valori di input.
&&
Operatore logico "and".
(
Parentesi aperta. Utilizzato per cambiare l'ordine standard delle operazioni, in cui la moltiplicazione e la divisione hanno solitamente la priorità sull'addizione e sulla sottrazione.
)
Parentesi chiusa. Utilizzato per cambiare l'ordine standard delle operazioni, in cui la moltiplicazione e la divisione hanno solitamente la priorità sull'addizione e sulla sottrazione.
<
L'operatore di confronto "minore di". Quando confronti un valore intero con il suo equivalente in virgola mobile, il risultato è false.
<=
L'operatore di confronto "minore di o uguale a". Quando confronti un valore intero con il suo equivalente in virgola mobile, il risultato è true.
>
L'operatore di confronto "maggiore di". Quando confronti un valore intero con il suo equivalente in virgola mobile, il risultato è false.
>=
L'operatore di confronto "maggiore di o uguale a". Quando confronti un valore intero con il suo equivalente in virgola mobile, il risultato è true.
? e :

Offre supporto per le operazioni ternarie. Il formato generale è il seguente:

condition ? value_if_true : value_if_false

Supporta operazioni ternarie nidificate che utilizzano parentesi.

,

Separa i valori nelle funzioni che richiedono più di un argomento.

"

Se posizionato all'inizio e alla fine di un valore, indica che il formato del quadrante deve interpretare il valore come una stringa.

==

Confrontare per determinare l'uguaglianza. Quando confronti un valore intero con il suo equivalente in virgola mobile, il risultato è true.

!=

Confrontare la disuguaglianza. Quando confronti un valore intero con il suo equivalente in virgola mobile, il risultato è false.