Siteswap.separate()
separate() メソッドは、サイトスワップデータを解析して道具ごとの投げ方データを返します。例えばサイトスワップが 531 なら、3個の道具 A, B, C は各時刻において次の表のように投げられます。
時刻 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
右手 | A | C | B | A | C | B | ||||||
左手 | B | C | A | B | C | A |
このとき道具ごとに見てみると
- A を最初に投げる時刻は 0 で、そこから 5 → 1 → 5 → 1 → ... という順に投げる
- B を最初に投げる時刻は 1 で、そこから 3 → 3 → 3 → 3 → ... という順に投げる
- C を最初に投げる時刻は 2 で、そこから 1 → 5 → 1 → 5 → ... という順に投げる
ということが分かります。これらが「道具ごとの投げ方データ」です。
構文
separate(throws, sync)
引数
返値
以下のようなプロパティを持ったオブジェクトの配列を返します。配列の大きさは道具の個数です。
- length
- 1周期の長さです。この道具を最初に投げてから、再び同じ手の同じ状態に戻るまでの投げる回数を表します。numbers および times の配列の大きさと一致します。
- numbers
- 1周期分の投げる高さを表す整数の配列です。シンクロの場合 x の代わりにマイナスが付きます。例えば 4x なら -4 です。
- start
- 最初に投げる時刻を表す 0 以上の整数です。
- times
- 1周期分の投げる時刻を表す 1 以上の整数の配列です。シンクロの場合 x が付く数字は奇数に変換されますが、左側の数字には +1、右側の数字には -1 が加えられます。例えば (4x,2x) の 4x なら 5、2x なら 1 です。それ以外は numbers の値と同じになります。
例
const result = jmotion.Siteswap.analyze("(4x,2x)");
const table = jmotion.Siteswap.separate(result.throws, result.sync);
// table = [
// {
// "length": 2,
// "numbers": [-4, -2],
// "start": 0,
// "times": [5, 1],
// },
// {
// "length": 2,
// "numbers": [-2, -4],
// "start": 1,
// "times": [1, 5],
// },
// {
// "length": 2,
// "numbers": [-2, -4],
// "start": 3,
// "times": [1, 5],
// },
// ]