うしブログ

うしブログ

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

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

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

Geogebraスキルアップ問題集(009解答)

見本

Geogebraファイル

 

必要なオブジェクトの作成

点P, Q:図の直線を作成するための前提

直線a:Line[P, Q]として定義する。図の点A, Bがこの直線上の点として定義されることになる。

点A, B:Point[a]として定義する。

点M:Point[a]として定義する。AとBの中点とさせるための点である。しかしMidPoint[A,B]としては定義しない。これは、仮に点MをMidPoint[A,B]として定義してしまうと、点Mをドラッグすることができなくなるからである。

半直線b:Ray[M, A]として定義する。

半直線d:Ray[M, B]として定義する。

数値r:下記の円cの半径となる数値。

円c:Circle[M, r]として定義する。

点C:Intersect[c, b, 1]として定義する。

点D:Intersect[c, d, 1]として定義する。

 

スクリプティング

 点A(On Update)

SetValue[r,Distance[A,M]]
SetValue[B,Reflect[A,M]]

 

点B(On Update)

SetValue[r,Distance[B,M]]
SetValue[A,Reflect[B,M]]

 

点C(On Update)

SetValue[A,C]

 

点D(On Update)

SetValue[B,D]

 

各点をドラッグしたときの挙動

※以下、「On Update スクリプトのn行目」のことを、「OUS-n」と略記します。

 

<点Aをドラッグすると>

点AのOUS-1が実行され、円cの半径rがAMの長さになる。

点AのOUS-2が実行され、点Bが、点Mを中心として点Aと対象となるような位置に移動する。

円c、点C、点Dが再計算される。

点CのOUS、点DのOUSが実行され、点A, Bがそれぞれ再計算後の点C, Dに移動する。

 

補足:点Cと点DのOUSの実行順序は、作図順序に従います。また、これらのOUSの実行によって、点A, Bが更新されますが、点A, BのOUSは実行されません。OUSの実行によってオブジェクトが更新されたとしても、そのオブジェクトのOUSは実行されません。これは、手動またはOn Click スクリプトによってオブジェクトを更新しない限り、そのオブジェクトのOUSは実行されないという、Geogebraの仕様によるものです。

 

<点Bをドラッグすると>

点BのOUS-1が実行され、円cの半径rがBMの長さになる。

点BのOUS-2が実行され、点Aが、点Mを中心として点Bと対象となるような位置に移動する。

円c、点C、点Dが再計算される。

点CのOUS、点DのOUSが実行され、点A, Bがそれぞれ再計算後の点C, Dに移動する。

 

<点Mをドラッグすると>

円c、点C、点Dが再計算される。

点CのOUS、点DのOUSが実行され、点A, Bがそれぞれ再計算後の点C, Dに移動する。