有名角のとき分数表示
課題
角度のスライダーを動かして、cosの値を表示する教材を作成する。
30°や60°など、いわゆる有名角のときは、
や
のように、分数表示せよ。それ以外の角度のときは、小数で表示せよ。
サンプルアプレット
https://www.geogebra.org/m/ndgqfykm
上記サンプルアプレットでは、おまけ機能として、「有名角に吸い付く機能」をつけた。磁石アイコンをクリックすると、機能をON(オレンジ色)にできる(デフォルトはON)。
解説
前提オブジェクト
角度オブジェクトα=0°
αのスライダーは、以下のように設定する。
数値オブジェクトa = 180α / π + 0
αは角度オブジェクトであり、見かけ上は度数法による表記であっても、値は弧度法による。たとえば、αが45°と表記されていても、αの値は45ではなく、π/4である。このことは、下図のように、点(α,0)を作って、その位置を目視すれば明らかである。
したがって、αは、度数法を用いた処理をする際には使いづらい。そこで、「αを度数法で表記した場合の数字」を値にもつような数値オブジェクト(たとえば、α=π/4のとき、値45をもつ数値オブジェクト)を作っておくと良い。それがaである。
aの定義式のうち、
180α / π
の部分では、弧度法から度数法への変換を行っている。しかし、このままでは、依然として角度オブジェクトのままである。そこで、
+ 0
を行うことで、オブジェクトの型を、角度から数値に変換している。
リストオブジェクトl1 = {30, 45}
l2 = Unique[Flatten[Zip[Sequence[δ γ, γ, 1, 360 / δ], δ, l1]]]
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は、以下のようにダイヤログから設定しても作成できる。
おまけ機能:吸い付き
真偽値オブジェクト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]