ArithmeticExpression

算術関数と算術演算のコレクションです。他の Watch Face Format 要素で、リアルタイムの属性値とジャイロ効果を分析するために使用されます。

Wear OS 4 から導入されました。

以下は Wear OS デバイスの加速度計の $ x $ 値に基づいて、いずれかの方向に値を最大 5 度回転する式の例です。

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

この式は次の数式と同じです。ここで $ \theta_x $ は、$ x $ 方向の加速度計角度を表します。

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

関数

Watch Face Format は、次の文字列値を関数として認識します。

round()
入力値を浮動小数点値に変換したうえで、標準の round() 算術演算を実行します。
floor()
標準の floor() 算術演算を実行します。
ceil()
標準の ceil() 算術演算を実行します。
fract()
入力値の小数部を返します。小数部とは小数点の右側にある浮動小数点値部分です。
sin()
標準の sin() 三角演算を実行します。
cos()
標準の cos() 三角演算を実行します。
tan()
標準の tan() 三角演算を実行します。
asin()
標準の asin() 三角演算を実行します。戻り値は常に $ [-\frac{\pi}{2}, \frac{\pi}{2}] $ の範囲内となります。
acos()
標準の acos() 三角演算を実行します。戻り値は常に $ $[0.0, \pi] $ の範囲内となります。
atan()
標準の atan() 三角演算を実行します。戻り値は常に $ [-\frac{\pi}{2}, \frac{\pi}{2}] $ の範囲内となります。
abs()
入力値を浮動小数点値に変換したうえで、標準の abs() 算術演算を実行します。
clamp(,,)
入力値を浮動小数点値に変換したうえで、clamp() Jetpack 演算を実行し、2 つ目と 3 つ目の値で定義された範囲に 1 つ目の値を合わせます。
rand(,)

次の条件を両方とも満たすランダムな浮動小数点値を生成します。

  • 1 つ目の値以上
  • 2 つ目の値以下

1 つ目の値は 2 つ目の値以下であることが前提条件です。

log()

標準の $ e $ を底とする log() 算術演算を実行します。

log2()

2 を底とする対数をシミュレートします。この値は 10 を底とする対数(入力値の log10)を 10 を底とする $ 2 $ の対数で割って算出されます。

log10()

標準の 10 を底とする log10 算術演算を実行します。

sqrt()

標準の sqrt() 算術演算を実行します。

cbrt()

標準の cbrt() 算術演算を実行します。

exp()

標準の exp() 算術演算を実行します。

expm1()

入力値が $ 1 $ の場合、expm1() 算術演算を直接呼び出します。それ以外の入力値の場合は、標準の exp() 算術演算を実行して 1 を引き、関数をシミュレートします。

deg()

標準の toDegrees() 算術演算を実行します。 $ \frac{\pi}{2} $ は 90 度、$ \pi $ は 180 度と定義されます。

rad()

標準の toRadians() 算術演算を実行します。90 度は $ \frac{\pi}{2} $、180 度は $ \pi $ と定義されます。

pow(,)

標準の pow() 算術演算を実行します。出力値は常に浮動小数点数になります。

numberFormat(,)

1 つ目の値の数値形式を 2 つ目の値に適用します。

1 つ目の値には次の文字を含めることができます。

  • # -- 数字を表します。
  • , -- 桁の大きい数値のカンマ区切りを表します。
  • . -- 小数点を表します。
icuText()

入力日付形式文字列を、想定される「言語 / 地域」形式に一致するパターンに変換します。親 PartText 要素に Localization 要素が含まれている場合、その「言語 / 地域」形式が使用されます。それ以外の場合は、Wear OS デバイスで設定されている「言語 / 地域」を使用します。

たとえば、デバイスが米国で使用されている場合、入力値 EE, MMM d, yyyy h:mm aTue, Mar 14, 2023 1:59 PM と返されます。

icuBestText()

入力日付形式文字列を、想定される形式に一致するパターンをもつ現在の時刻に変換します。親 PartText 要素に Localization 要素が含まれている場合、その「言語 / 地域」形式が使用されます。それ以外の場合は、Wear OS デバイスで設定されている「言語 / 地域」を使用します。

たとえば、デバイスが米国で 2023 年 3 月 14 日午後 1 時 59 分に使用されている場合、入力値 yyyy MMM d EE a h:mmTue, Mar 14, 2023, 1:59 PM と返されます。

subText(,,)

1 つ目の値から部分文字列を抽出します。2 つ目の値は最初の値のゼロベース インデックスで、その値に当たる文字から部分文字列の抽出を開始します。3 つ目の値も最初の値のゼロベース インデックスで、その値に当たる文字の前で部分文字列の抽出を終了します(抽出されるのは、2 つ目の値に当たる文字から 3 つ目の値に当たる文字の前の文字まで)。

例:

  • subText("abc def", 2, 5) の場合は c d
  • subText("abc def", 2, 7) の場合は c def
textLength()

入力文字列の長さを計算します。

演算子

Watch Face Format は、次の文字列値を演算子として認識します。

+
単項プラス(複数値の加算)。 整数値と浮動小数点値の両方をサポートします。
-
単項マイナス(複数値の減算)。整数値と浮動小数点値の両方をサポートします。
*
複数値(整数値または浮動小数点値)の乗算。
/

2 つの値(整数値または浮動小数点値)の除算。

2 つの整数値を除算して整数以外の値になった場合、小数点以下は浮動小数点数で表されます。たとえば、$ \frac{1}{2} = 0.5 $ となります。

また、$ x $ に任意の整数を取る $ \frac{x}{0} $ という式は 0 となります。

%

2 つの値(整数値または浮動小数点値)の剰余除算。

両方のオペランドが整数の場合、結果は 2 つの値を除算した解の「余り」です。たとえば、$ 19 \bmod 7 = 5 $ となります。

少なくとも 1 つのオペランドが浮動小数点数である場合、結果は解の「余り」を浮動小数点数で表した値です。たとえば、$ 19.0 \bmod 7 = 5.0 $ となります。

~

ビット演算子「NOT」。次に例を示します。

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

論理演算子「NOT」。二重否定をサポートします。次に例を示します。

  • $ !2 $ は false
  • $ !!0 $ は true
|

ビット演算子「OR」。3 つ以上の入力値をサポートします。次に例を示します。

  • $ 1 | 0 = 1 $
  • $ 1 | 2 | 4 = 7 $
||
論理演算子「OR」。
&
ビット演算「AND」。2 つの入力値のみをサポートします。
&&
論理演算子「AND」。
(
開きかっこ。通常の演算順序では乗算と除算が加算と減算より優先されますが、その演算順序を変更する場合に使用します。
)
閉じかっこ。通常の演算順序では乗算と除算が加算と減算より優先されますが、その演算順序を変更する場合に使用します。
<
比較演算子「小なり」。整数値と浮動小数点数で表した同じ値とを比較すると、結果は false になります。
<=
比較演算子「小なりイコール」整数値と浮動小数点数で表した同じ値とを比較すると、結果は true になります。
>
比較演算子「大なり」。整数値と浮動小数点数で表した同じ値とを比較すると、結果は false になります。
>=
比較演算子「大なりイコール」。整数値と浮動小数点数で表した同じ値とを比較すると、結果は true になります。
?:

3 項演算をサポートします。一般的な形式は次のとおりです。

condition ? value_if_true : value_if_false

かっこを使用して、ネストされた 3 項演算をサポートします。

,

複数の引数を取る関数で、値を区切ります。

"

値の先頭と末尾に挿入すると、Watch Face Format に対して値を文字列として認識するよう指示できます。

==

左辺と右辺の値が等しいことを示します。整数値と浮動小数点数で表した同じ値とを比較すると、結果は true になります。

!=

左辺と右辺の値が等しくないことを示します。整数値と浮動小数点数で表した同じ値とを比較すると、結果は false になります。