How to | 動的なグラフィックスを作成する方法

Wolfram言語のグラフィックス言語は,動的なインタラクティブ機能に完全に統合されている.このため,さまざまな方法で入力デバイスに反応するグラフィックスを作成することができる.

まずGraphicsを使ってDisk(円板)を作成する:

In[1]:=
Click for copyable input
Out[1]=

Wolfram言語では,グラフィックスにツールチップを埋め込むことができる.ツールチップは,グラフィックスに注釈を加えたい場合に便利な方法である.

TooltipGraphicsの中で使って,ツールチップを円板に埋め込む.円板の上にマウスを持ってくると,ツールチップが表示される:

In[2]:=
Click for copyable input
Out[2]=

その他のマウスオーバーの機能をグラフィックスに加えることもできる.

例えば,Mouseoverを使ってマウスを円板の上に持ってきたときに円板が赤色に変わるようにすることができる:

In[3]:=
Click for copyable input
Out[3]=

ButtonDiskを囲むことによって,グラフィックス内部でのマウスクリックを扱うこともできる.以下では,円板をクリックすると,ビープ音が鳴る:

In[4]:=
Click for copyable input
Out[4]=

Wolfram言語ではグラフィックスからのハイパーリンクを作成することさえできる.以下では,円板をクリックすると,Wolfram Researchのホームページが開く:

In[5]:=
Click for copyable input
Out[5]=

Graphics式内部の適切な場所にDynamicを置くことによって,グラフィックス内部でマウスポインタを動かすと更新されるグラフィックスを作成することができる.

例えば,以下の枠内でマウスポインタを動かしてみる.円板は動的にマウスポインタに合わせて中心を移動させる.MousePositionDynamicの中で使って,マウスがどこに動かされても,その位置を返すようにする:

In[6]:=
Click for copyable input
Out[6]=

上記のグラフィックスは,マウスポインタが他のどのグラフィックス上にある場合にでも更新される.例えば,ハイパーリンクでもある先ほどの円板の上でマウスを動かすと,この枠に入った円板もマウスポインタの動きに従って枠内で動くことが分かる.

グラフィックスがこのように動作しないようにしたい場合には,特定の囲まれたグラフィックス内部にマウスがある場合にだけ,グラフィックスの動きがトリガされるように制約を加えるとよい.

例えば,以下のグラフィックス上でマウスポインタを動かすと,枠に入った両方のグラフィックスにある円板の位置が同じになる.しかし,逆のことは起らない.事実,上のどのグラフィックス上でマウスを動かしても,下の円板の位置は変わらない:

In[7]:=
Click for copyable input
Out[7]=