=============================================================================== ジャグリングパターンの解説 =============================================================================== < サイトスワップ Siteswap Notation >  サイトスワップとは、'80年代に考案された、ジャグリングのボールの動きを表す ための表示法です。私は、'94年の科学朝日の記事で知ったのですが、すでにかなり 以前から広まっているらしく、AT互換機などではこの表示法を使ったジャグリングプ ログラムが数多く存在します。現在では、いろいろ拡張されて、複雑なボールの動き でも表現できるようになっています。  サイトスワップの基本的なルールは、以下の2つだけです。 +------------------------------------------------------------+ |1.ボールは同じ間隔で、左右交互に投げる | +------------------------------------------------------------+  時刻0に右から投げ始めたなら、偶数の時刻には右手、奇数の時刻には左手で投げ ることになります。ただし、後述するシンクロパターンでは、同じ間隔で、左右同時 に投げます。 時刻 0 1 2 3 4 5 6 7 8 9 …… 投げる手 R L R L R L R L R L …… ( R:右手 L:左手) +------------------------------------------------------------+ |2.パターンの値は、今投げたボールを次に投げるまでの時間を表す| +------------------------------------------------------------+  例えば、時刻2に3のパターンであるボールを投げたら、次に同じボールを投げる のは、時刻5になります。1と2のルールを合わせると、偶数のパターンで投げたと きは同じ手に、奇数のパターンで投げたときは反対の手に投げることになります。 パターンの値が、0,1,2の時は特別な動きをします。  1の時は、素早く反対の手に渡します。  2の時は、すぐ後に同じ手で受けるのですから、投げる必要はありません。  0の時は、投げるボールが手にないことを示します。1回休みです。  パターンは最後まできたら、最初に戻って繰り返します。例えば、"3"と"333"、 "441"と"441441441"は、同じ意味になります。 時刻 0 1 2 3 4 5 6 7 8 9 …… パターン 4 4 1 4 4 1 4 4 1 4 ……  一般的なサイトスワップの投げ方は、左右どちらかで受け取って、中央に近い位置 で投げるようにします。しかし、サイトスワップでは、手の動かし方は自由に決めら れるので、ボールがぶつからない限り、どんな投げ方でも可能です。このソフトでは、 後述するスタイルによって、自由に受ける位置と投げる位置を指定することができま す。  パターンの平均がボールの数になるという定理があります。証明はさておき、整数 にならないようなパターンは、ジャグリング不可能です。  以上の法則を使って、ボールの動きがどうなるか表にしてみましょう。  ジャグリングパターンは、以下のような表にすると、比較的分かりやすく理解でき ます。1行目は、時刻を表します。表の右に行くほど時刻が進んでいます。2行目には、 ジャグリングパターンを繰り返し並べます。1つおきに右、左と交互の位置に書き入れ ます。3行目が、その時刻に投げるボール(ABC)を表します。  パターン : 3  ボールの数 : 3/1=3 +----+-----+-----+-----+-----+-----+-----+ |時刻|0 1 |2 3 |4 5 |6 7 |8 9 |10 11| +----+-----+-----+-----+-----+-----+-----+ |右手|3 |3 |3 |3 |3 |3 | |左手| 3 | 3 | 3 | 3 | 3 | 3 | +----+-----+-----+-----+-----+-----+-----+ |右手|A |C |B |A |C |B | |左手| B | A | C | B | A | C | +----+-----+-----+-----+-----+-----+-----+  3行目は次のように書き入れて下さい。時刻0にAを書いたら、表の最後までAを埋め ます(0,3,6,9の時刻)。次に、空いている位置(時刻1)にBを入れて、同様に最後 までBを埋めます(1,4,7,10の時刻)。さらにC(2,5,8,11の時刻)。こうして重複も 空欄も無く書き込めたなら、そのパターンはジャグリング可能になります。ただし、 パターンの値が0のところは、空欄にならなければなりません。  別のパターンで、もう一つ表を作ってみましょう。  パターン : 441  ボールの数 : (4+4+1)/3=3 +----+-----+-----+-----+-----+-----+-----+ |時刻|0 1 |2 3 |4 5 |6 7 |8 9 |10 11| +----+-----+-----+-----+-----+-----+-----+ |右手|4 |1 |4 |4 |1 |4 | |左手| 4 | 4 | 1 | 4 | 4 | 1 | +----+-----+-----+-----+-----+-----+-----+ |右手|A |C |A |B |A |B | |左手| B | C | B | C | A | C | +----+-----+-----+-----+-----+-----+-----+  自分でパターンを作るときは、最初に3行目のボールを書き入れた後で、2行目の値 を入れるようにすると、思い通りのパターンが作れると思います。 < マルチ Multiplex >  上のパターンでは、1度に投げるボールは1つだけですが、複数のボールを同じ手で 同時に投げる場合があります。これを表現するのには、[] を使います。[43] であれ ば、同じ手で、同じ時刻に、2個のボールをそれぞれ4、3のパターンで投げることにな ります。当然、2個のボールを投げるためには、直前に2個のボールを同時に受け取っ ていなければなりません。表にすると、以下のようになります。  パターン : 4[43]1  ボールの数 : {4+(4+3)+1}/3=4 +----+-----+-----+-----+-----+-----+-----+ |時刻|0 1 |2 3 |4 5 |6 7 |8 9 |10 11| +----+-----+-----+-----+-----+-----+-----+ |右手|4 |1 |43 |4 |1 |43 | |左手| 43| 4 | 1 | 43| 4 | 1 | +----+-----+-----+-----+-----+-----+-----+ |右手|A |D |AC |B |A |BC | |左手| BC| D | B | DC| A | D | +----+-----+-----+-----+-----+-----+-----+  [] の中に0を含めることは意味がありません。また、[] の中の数字は順番を変え ても同じです。ボールの数を計算するには、[]で囲まれた数字を足し合わせて、一つ の数字として扱います。 < シンクロ Synchronous >  今までは、左右交互に投げていましたが、左右同時に投げる場合もあります。左右 同時に投げるには、() を使います。(2,4)は、同じ時刻に、左手2、右手4のパターン で投げることを意味します。左右同時に投げる場合は、どちらの手にボールを投げる かは、自由に決められます。そこで、反対側に投げるときには、値の後に x を付け ます。  左右同時のパターンでは、値はすべて偶数にします。それなら、すべて1/2にして も同じじゃないかと、おっしゃるかもしれませんが、プログラマにとっては、偶数に した方が都合がいいのです。偶数にすれば、左右交互のルーチンをほんの少し修正す るだけで共通化できて……、こんな話はどうでもいいですね。  左右同時と、左右交互のパターンを混在させることはできません。人間ならば出来 そうですが、プログラムにするのはややこしくなるので……、あぁ、これもプログラ マの独り言でした。ともかく、今標準的に使われているサイトスワップがそういう仕 様になっているのですから。  パターン : (2x,4)(4,2x)  ボールの数 : {2+4+4+2}/4=3 +----+-----+-----+-----+-----+-----+-----+ |時刻|0 |2 |4 |6 |8 |10 | +----+-----+-----+-----+-----+-----+-----+ |右手|4 |2x |4 |2x |4 |2x | |左手|2x |4 |2x |4 |2x |4 | +----+-----+-----+-----+-----+-----+-----+ |右手|A |B |A |B |A |B | |左手|B |C |B |C |B |C | +----+-----+-----+-----+-----+-----+-----+  これは有名な、「ボックス」というトリックです。このトリックは、左右交互の パターンでは正確には表せません。 < スタイル Style >  スタイルとは、手の動かし方を記述したデータのことです。私がこのプログラムの ために勝手に定めたものなので、一般的なものではありません。  サイトスワップでは、投げる手、受ける手が決まっているだけで、どの位置で受け、 投げるかは自由に決めることができます。そこで、スタイルによって、受ける位置、 投げる位置の座標を指定します。  スタイルは、1行が4つの数字で表されます。 { x1, y1 }{ x2, y2 }  x1,y1 は、ボールを受ける位置の横座標、高さ座標  x2,y2 は、ボールを投げる位置の横座標、高さ座標  値と、実際の位置は以下のような関係になっています。 +-+----+------------------+----------+--------+ | | 値 | 位置 |長さの単位|値の範囲| +-+----+------------------+----------+--------+ |x| 10 | 投げる手の肩の下 | | x>=-30 | | | 0 | 中央 | 2.5cm | x<= 30 | | |-10 | 反対の手の肩の下 | | | +-+----+------------------+----------+--------+ |y| 10 | 顔の前 | 5cm | y>=-10 | | | 0 | へその高さ | | y<= 20 | +-+----+------------------+----------+--------+  スタイルは、1行以上の行から成り立っています。最初の行を0と数えると、0行目 は、時刻0に投げるボールの動きを表し、1行目は時刻1、2行目は時刻2……、と続き ます。最後の行になったら、最初に戻って繰り返します。シンクロパターンの場合は、 01行目が時刻0、23行目が時刻2、45行目が時刻4……、となります。  サイトスワップと同じように、偶数行は右手、奇数行は左手の位置を示します。 これはシンクロでも同じです。x座標は、中央が0、投げる手に近い向きが+、反対の 手の向きが-になります。  スタイルが同じなら、どんなパターンで投げても、手の動きは同じです。ただし、 手を動かす必要の無いとき(値が0,2の時など)は、その限りではありません。 パターンが0,2の時、受けた位置と、次に受ける位置が一致するなら、その間手は 静止します。また、受けた位置と、投げる位置が一致するなら、その間も静止します。 それ以外の場合は、パターンが0,2でも手やボールは動きます。 ・例 %Exchange { 0, 11}{ 10, 11} { 10, 0}{ 0, 0} { 0, 12}{-10, 12} { 10, 0}{ 0, 0} 2334 Exchange (Pendulum,Drop)  ☆時刻は、投げる時(ボールが手から離れる瞬間)の時刻 +----+--------+--------+-----------+-----------+ |時刻|投げる手|パターン|受ける位置 |投げる位置 | +----+--------+--------+-----------+-----------+ | 0 | 右 | 2 | { 0, 11} | { 10, 11} | 持ったまま右に移動 | 1 | 左 | 3 | { 10, 0} | { 0, 0} | 左下から右手にパス | 2 | 右 | 3 | { 0, 12} | {-10, 12} | 左に移動して落とす | 3 | 左 | 4 | { 10, 0} | { 0, 0} | 左下から同じ手に投げる +----+--------+--------+-----------+-----------+  繰り返し ・シンクロの例 %Chop { 4, 9}{-10, -3} { 10, 6}{ 7, 9} { 10, 6}{ 7, 9} { 4, 9}{-10, -3} (2,4x)(4x,2) Chop +----+--------+--------+-----------+-----------+ |時刻|投げる手|パターン|受ける位置 |投げる位置 | +----+--------+--------+-----------+-----------+ | 0 | 右 | 4x | { 4, 9} | {-10, -3} | 右手を振り下ろす | 0 | 左 | 2 | { 10, 6} | { 7, 9} | 左手を上げる | 2 | 右 | 2 | { 10, 6} | { 7, 9} | 右手を上げる | 2 | 左 | 4x | { 4, 9} | {-10, -3} | 左手を振り下ろす +----+--------+--------+-----------+-----------+  繰り返し < その他 >  サイトスワップパターンでは、10以上の数字を、アルファベットを使って表す ことにします。以下のような対応になります。 a b c d e f g h i j k l m n o p q r s t u v w x y z 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35  'x'は、シンクロで反対の手に投げる意味の'x'と重なりそうですが、幸い'x'はシン クロでは使わない奇数なので、間違う恐れはありません。  こんなややこしい理屈を知らなくても、プログラムを使うことはできますが、この ソフトは、サイトスワップの視覚化がしたくて、作り始めたものですから、できるだ け以上の表示法を理解した上で、ご使用いただければ幸いです。 ------------------------------------------------------------------------------ Ken Matsuoka NIFTY-Serve GBA03100:COSTA(FMAGIC) E-mail: GBA03100@niftyserve.or.jp ------------------------------------------------------------------------------