うしブログ

うしブログ

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

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

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

現在の縮尺に最適なグリッド間隔を取得するオリジナルツール「GridIntervalPoint」

はじめに

GeoGebraでは、グリッド間隔を特に指定しなければ、現在の縮尺に最適な間隔を自動で計算して、グリッドを描画してくれます。

f:id:usiblog:20180609210456g:plain

今回は、このときのグリッド間隔の情報を取得するオリジナルツールを紹介します。

 

オリジナルツール「GridIntervalPoint」

GridIntervalPoint Tool - GeoGebra

引数

GridIntervalPoint[ <始点A>, <整数n> ]

戻り値

点Aを通るグリッドで、現在の縮尺に最適なグリッドを引いた場合に、始点を通る縦グリッドのn個右のグリッドと、始点を通る横グリッドのn個上のグリッドとの交点を返します。

f:id:usiblog:20180609211523g:plain

 

使用例

点 O, A, C1, C3を、以下の定義に従って作成します。

O = (0, 0)

A = GridIntervalPoint[O, 1]

C1 = Corner[1]

C3 = Corner[3]

変数 minX, maxX, minY, maxYを、以下の定義に従って作成します。

minX = floor( x(C1) / x(A) )

maxX = ceil( x(C3) / x(A) )

minY = floor( y(C1) / y(A) )

maxY = ceil( y(C3) / y(A) )

リスト list1を、以下の定義に従って作成します。

list1 = Flatten[ { Sequence[ x = x( GridIntervalPoint[ O, s ] ), s, minX, maxX ], Sequence[ y = y( GridIntervalPoint[ O, t ] ), t, minY, maxY ] } ]

すると、list1は、現在の縮尺に最適なグリッドを表すオブジェクトとなります。

f:id:usiblog:20180609212739g:plain

 

また、リスト list2を、以下の定義に従って作成します。

list2 = Flatten[ Sequence[ Sequence[ ( x( GridIntervalPoint[ O, s ] ), y( GridIntervalPoint[ O, t ] ) ), t, minY, maxY ], s, minX, maxX ] ]

すると、list2は、現在の縮尺に最適なグリッドの格子点のリストを表します。

f:id:usiblog:20180609220207g:plain