tips014
数値と単位⑤
— Domain
Maths ▸ Domain ▸ Construct Domain / Bounds
Domain(域)は「A から B まで」の範囲を、1つの値として持つ型。
パネルに出すと 2 To 20 のように、両端の数値が To でつながって出る。
範囲を作る
- Construct Domain(キャンバスでの表示は
Dom)のA(Domain start)に始まりの数値、B(Domain end)に終わりの数値を入れる - Bounds(表示は
Bnd)のN(Numbers)に数値のリストを入れると、その中の最小と最大で範囲ができる - Deconstruct Domain(表示は
DeDomain)に範囲を入れると、S(Start)とE(End)に数値が分かれて出る
2 To 20。パネルの To の左が S、右が E にあたる。クリックで拡大。Bounds に 2, 5, 9, 14, 20 | 2 To 20 |
|---|---|
| その域を Deconstruct Domain へ | S = 2 / E = 20 |
Construct Domain に 0 と 20 | 0 To 20 |
作った範囲を Remap Numbers に渡す
Remap Numbers(表示は ReMap)は、V(Value)の数値を S(Source)の範囲から T(Target)の範囲へ置き換える。S も T も Domain なので、ここで範囲の作り方を選ぶことになる。
- ①
Sに Bounds の出力をつなぐ - ②
Sに Construct Domain の0 To 20をつなぐ - どちらも
Vは同じリスト、Tは Construct Domain で作った0 To 1
Dom が2つあるうち、上が S、下が T を作っているほう。右のパネルはどちらも R(Mapped)の出力。クリックで拡大。① BoundsS = 2 To 20
| 2 | 0 |
|---|---|
| 5 | 0.166667 |
| 9 | 0.388889 |
| 14 | 0.666667 |
| 20 | 1 |
② Construct DomainS = 0 To 20
| 2 | 0.1 |
|---|---|
| 5 | 0.25 |
| 9 | 0.45 |
| 14 | 0.7 |
| 20 | 1 |
①は範囲の両端がリストの最小と最大なので、結果はかならず 0 と 1 に収まる。
②は起点が 0 に固定されているので、リストの最小がどこにあっても結果の下は 0 にならない。
元のリストが変わったとき
- ①②のつなぎ方はそのままで、
Vのリストの末尾に40を足して6個にする
① BoundsS = 2 To 40
| 2 | 0 |
|---|---|
| 5 | 0.078947 |
| 9 | 0.184211 |
| 14 | 0.315789 |
| 20 | 0.473684 |
| 40 | 1 |
② Construct DomainS = 2 To 20
| 2 | 0.1 |
|---|---|
| 5 | 0.25 |
| 9 | 0.45 |
| 14 | 0.7 |
| 20 | 1 |
| 40 | 2 |
①は範囲が広がるので、足していない 5 や 20 の結果まで変わる。
②は範囲が動かないので、5 も 20 も前と同じ数値のまま。
使いどころ
- リストの最小と最大をそのまま範囲にしたい = Bounds。リストが変われば範囲も変わる
- 基準を決めて動かしたくない = Construct Domain。リストが変わっても範囲はそのまま
- 範囲の端の数値だけ知りたい = Deconstruct Domain
注意
Bounds を使うと、リストに1個足しただけで、前から入っていた数値の結果まで変わる。警告は出ないので、数値を見るまで気づかない。
範囲の外の数値は R(Mapped)では外に出る(②の 40 は 2)。端で止めたいときは C(Clipped)を使う(ここでは 1)。