うしブログ

うしブログ

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

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

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

有名角のとき分数表示

課題

角度のスライダーを動かして、cosの値を表示する教材を作成する。

30°や60°など、いわゆる有名角のときは、

f:id:usiblog:20190904162046p:plainf:id:usiblog:20190904162057p:plain

のように、分数表示せよ。それ以外の角度のときは、小数で表示せよ。

 

サンプルアプレット 

https://www.geogebra.org/m/ndgqfykm

上記サンプルアプレットでは、おまけ機能として、「有名角に吸い付く機能」をつけた。磁石アイコンをクリックすると、機能をON(オレンジ色)にできる(デフォルトはON)。

 

解説

前提オブジェクト

角度オブジェクトα=0°

αのスライダーは、以下のように設定する。

f:id:usiblog:20190904153233p:plain

 

数値オブジェクトa = 180α / π + 0

αは角度オブジェクトであり、見かけ上は度数法による表記であっても、値は弧度法による。たとえば、αが45°と表記されていても、αの値は45ではなく、π/4である。このことは、下図のように、点(α,0)を作って、その位置を目視すれば明らかである。

f:id:usiblog:20190904154207p:plain

したがって、αは、度数法を用いた処理をする際には使いづらい。そこで、「αを度数法で表記した場合の数字」を値にもつような数値オブジェクト(たとえば、α=π/4のとき、値45をもつ数値オブジェクト)を作っておくと良い。それがaである。

aの定義式のうち、

180α / π

の部分では、弧度法から度数法への変換を行っている。しかし、このままでは、依然として角度オブジェクトのままである。そこで、

+ 0

を行うことで、オブジェクトの型を、角度から数値に変換している。

 

リストオブジェクトl1 = {30, 45}

l2 = Unique[Flatten[Zip[Sequence[δ γ, γ, 1, 360 / δ], δ, l1]]]

f:id:usiblog:20190904155026p:plain

0〜360のうち、有名角を表す数値のリストを取得する。l1に30を入れれば、l2には、その(360以下の)倍数が、自動的に入る。もし、15や18等を加えたい場合は、それらをl1に加えればよい。

 

真偽値オブジェクトdecider = a ∈ l2

αが有名角であるか否かを判断する。

 

cosαの値を表示するテキストの作成

rightSideText = If[decider, SurdText[cos(α)], Text[cos(α)]]

有名角の場合(true)、cosαを分数表示するため、SurdText[cos(α)]としている。

 

equationText = FormulaText["cosα=" + rightSideText]

なお、equationTextは、以下のようにダイヤログから設定しても作成できる。

f:id:usiblog:20190904155624p:plain

 

おまけ機能:吸い付き

真偽値オブジェクトmag = true

点のリストl3 = Zip[[β, 0], β, l2]

点A = ClosestPoint[l3, (a, 0)]

数値b = Distance[A, (a, 0)]

αのOn Update スクリプトに以下を設定

If[mag,UpdateConstruction[]]
If[mag&&b<=4,SetValue[α,x(A)°]]

磁石アイコンの図オブジェクトの、On Click スクリプトに以下を設定

SetValue[mag,!mag]