Geogebraスキルアップ問題集(009解答)
見本
必要なオブジェクトの作成
点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に移動する。