うしブログ

うしブログ

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

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

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

テキストの描画開始点を中心としたズーム実行による、Cornerコマンドの描画のずれについて

前提となるアプレットの構成

 

上記アプレットのように、「画面上の固定された位置」に設定(pin to screen)されていないテキストオブジェクトを用意した。名前をtext1とした。

 

自由な点オブジェクトEを作成し、「プリファレンス」画面の「位置」タブから、text1の描画開始点を、Eに設定した。

f:id:usiblog:20180824014147p:plain

text1の四隅を表す点

Corner[text1, 1]:左下

Corner[text1, 2]:右下

Corner[text1, 3]:右上

Corner[text1, 4]:左上

を作成した。

観察された問題点

GeoGebraをPCデバイスで使用する場合、マウスホイールや(Macにおける)トラックパッドによるスクロール操作で、グラフィックスビューをズームできる(以下このズーム操作を、「スクロールによるズーム操作」という)*1

上記アプレットの点E上にポインタを置いて、スクロールによるズーム操作を行うと、Corner[text1, 1〜4]が、text1の隅からずれて描画される場合があることが確認された(下図参照)*2

f:id:usiblog:20180824020319g:plain

また、点Eを中心とするズーム操作

ZoomIn[<倍率>, E]

を、倍率1以外で実行した場合も、上図と同様の描画のずれが確認された。

 

なお、点Eを削除すると、text1の描画開始点として、新たな点が設定される。この点は、「プリファレンス」画面の「位置」タブから確認可能である。

f:id:usiblog:20180824020944p:plain

そして、この点を中心とするズーム操作

ZoomIn[ <倍率>, (2.29123, 7.66923)]

を、倍率1以外で実行した場合も、上記と同様のずれが確認された。

問題点のまとめ

以上で観察されたことをまとめると、以下のようになろう。

すなわち、「画面上の固定された位置」に設定(pin to screen)されていないテキストオブジェクトの描画開始点(「プレファレンス」画面の「位置」タブから確認可能)を中心とするズーム操作を、(倍率1以外で)実行した場合、そのテキストに係るCorner[<text>, 1〜4]の座標が、そのテキストの隅の点からずれてしまう場合がある、ということである。

問題の回避方法

この描画のずれは、テキストの描画開始点(上記アプレットでは、点E)をドラッグしたり、描画開始点以外を中心とするズーム操作を行ったり、グラフィックスビューをドラッグすることによるパン操作を行ったりすることで、解消される。

これらの方法は、グラフィックスビューの描画に見かけ上の変更を加えることで、問題を回避するものである。

グラフィックスビューの描画に見かけ上の変更を加えずに、描画のずれを解消する方法はないだろうか。

そこで試してみると、UpdateConstruction[ ]や、ZoomIn[1]を実行しても、描画のずれは解消されなかった。

これに対して、テキストのOn Update スクリプトに、

SetValue[E,Translate[E,(0,1)]]
SetValue[E,Translate[E,(0,-1)]]

と記述すると、グラフィックスビューの描画に見かけ上の変更を加えずに、描画のずれを解消することができた(下図)。

f:id:usiblog:20180824022935g:plain

これは、テキストの描画開始点である点Eの座標を、いったん変更し(スクリプト1行目)、ただちに元の座標に戻す(スクリプト2行目)という方法である。さしあたりの方法として記しておく。

 

*1:https://wiki.geogebra.org/en/Customizing_the_Graphics_View を参照。

*2:確認時点のGeoGebraのバージョンは、6.0.486.0-w (18 August 2018)である。