eToysのベクトル関係ボキャブラリ

リリース前のある時期まで Squeakland2005では、デフォルトで「ベクトル」カテゴリのタイルが表示されていました。しかし、使い方もよくわからないしうまく動かないタイルもあるので、エンドユーザリリースでは無い方がよいのではなどと言っていたら、デフォルトでは表示されず、プリファレンス useVectorVocabularyで表示できるようになっていました。
その後忘れていたのですが、http://bugs.impara.de/view.php?id=2690 のやりとりで、由来や現在の状況について書き込みがあったのに刺激され、少し調べてみました。
Alanさんに近いところでお仕事をされている方々は、デモでのこの機能の使われ方を何度かご覧になっているのではないかと思います。

Morphでベクトルを表現する

Morphは(X座標、Y座標)を持っているので、この位置ベクトルを直接演算の対象とします。ベクトルカテゴリがなくても、Θ値・距離などのタイルは使えます。
ワールドや遊び場の赤ハロメニューの「原点を中心にする」を指定しておくと、マイナス値成分を含むベクトルを表現できるようになります。
abeeさんの http://squeakland.jp/super/186 ではここまでの機能を使って、ベクトル合成を表現されています。

ベクトルとスカラー値との演算タイル

receiverのMorphをベクトルとして扱います。

  • [divided by] : X/Y両方の成分に対して同じ値を掛け算する
  • [multiplied by] : X/Y両方の成分に対して同じ値を掛け算する

ベクトルどうしの演算タイル

receiver,引数両方のMorphをベクトルとして解釈します。

  • [から以下を引く]
  • [に以下を足す]

ちゃんと動かない?機能

「+-*/」といったタイルがあるのですが、実際に使おうとするとエラーになります。ソースを読む限り、Playerクラスにある同名のメソッドが引数を期待しているのに対して、タイル側でそれを指定できるようになっていないと思われます。

感想

Scottさんは「Alanさんしか使えないよう、わかりにくいところに隠しておくべき」みたいに書いてますが、まあそんなとこかもしれません。
私自身の感想としては、

  • 座標系を自由にいじれる(原点、スケール)
  • ベクトルの矢印を視覚的に表示できる

といった機能があれば、使い道もありそうに感じました。
Connectorの原点側を束縛しておけばベクトルの矢印を表現できる?と一瞬思って試しかけたのですが、Morphを遊び場に埋め込んでおいてもドラッグすると親がワールドに戻ってしまったり、X,Y座標に値を代入して操作しても思ったように動かないとかいろいろあって、あきらめてしまいました。