うしブログ

うしブログ

趣味で運営する、GeoGebraの専門ブログ。

(作業メモ)StartPoint要検証(2行の場合;テキスト変更時未定義問題)

(要修復)ToggleButton・RollPolygonWithoutSlipping・貯金時計・直感力トレーニング

ポインタ

マウスポインタを作ってみました。アプレット画面の任意の場所でドラッグないしスワイプすることで、ポインタを動かすことができます。

今回はこれだけですが、これを応用すれば、「ポインタが特定の場所に来たときに、このオブジェクトを表示しよう」といったことが可能になります。

GeoGebraでは、現在のところ、「いまユーザーの指(ないしマウスポインタ)がどこにいて、どの座標をクリックしたのか」という情報を得る手段がありません。

ところが、今回のように、こちらでマウスポインタを作ってやって、ユーザーにそれを動かしてもらうようにすれば、その情報を得ることができます。

 

 

方法

百聞は一見に如かずと言いますので、まずはファイルを置いておきます。

pointer - GeoGebra

 

ファイルにもとづいて簡単に説明します。

マウスポインタ(黒い矢印)は、「図1」という画像ファイルです。「位置」タブで、隅4をpoly1(後述します)内の点であるPに、隅1をPに依存する点

A = P + (0, -0.5)

にしています。

自由な点B,C,D,Eを作成し、

poly1 = Polygon[B, C, D, E]

を作成します。

poly1の色は白、透過率は5%にします。

poly1のOn Update ハンドラに、以下を記述します。

SetValue[P,Translate[P,Vector[Corner[1],B]]]
SetValue[B,Corner[1]]
SetValue[C,Corner[2]]
SetValue[D,Corner[3]]
SetValue[E,Corner[4]]

これで、poly1が画面をすべて覆う長方形となります。

poly1をドラッグすると、その頂点の1つである点Bが動きます。上記ハンドラの1行目は、これを利用して、ドラッグした方向に点P(つまりマウスポインタの左上)が移動する仕掛けです。

以上です。今後応用できるといいなと思っております。