うしブログ

うしブログ

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

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

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

GeoGebra-応用的な使い方

nPr(順列)、nCr(組合せ)のパターンを返すオリジナルツール

ggtファイルのダウンロード nPrList tool - GeoGebra nCrList tool - GeoGebra 構文 nPrList[ <数値n>, <数値r>, <index> ] は、自然数1〜nの中から、r個を取り出して、順番を考慮して並べる場合のパターンを返す。各パターンは、index(1〜nPrの範囲内で指定してく</index>…

「要素を戻さずに取り出していく」をGeoGebraで表現する

課題 list1 = {1,2,3,4,5,6,7,8,9,10} list2 = {3,3,6,2,1} とする。list1から要素を取り出していく。一度取り出したものは戻さない。list2は、取り出す要素のインデックスを指示している。ただし、当該インデックスは、list1におけるインデックスではなく、…

「ベクトルのリスト」から行列を返すオリジナルツール

課題 ベクトルのリストvectorList の各要素を列ベクトルと考えて、行列を得たい。たとえば、ベクトル u = (1,2) v = (3,4) に対して、 vectorList = {u, v} を作成したとする。vectorListを引数として、行列 を得られるような、オリジナルツールを作成する方…

(覚書)「nCrの中身」をリストで取得する

数値n, rを指定して、「nCrの中身」をリストで取得したい。 たとえば、n=5, r=4で、 { {1,2,3,4}, {1,2,3,5}, {1,2,4,5}, {1,3,4,5}, {2,3,4,5} } を取得する方法である。 数値オブジェクトn, rを作成のうえ、 Execute[{"usiList =" + (Sum[Join[{Sequence["…

数値をリサイズする

たとえば、下図のように、11〜34のスライダーaを動かして、0〜1を得られるようにしたい。 このためのオリジナルツール「Resize」を作成した。 Resize tool - GeoGebra 構文は、 Resize[<数値>, <元の最小値>, <元の最大値>, <新たな最小値>, <新たな最大値>]…

(覚書)3つの線分のリストから三角形を返す

前提オブジェクト 任意の3つの線分からなるリストsegmentList 目的のオブジェクト If[Length[Unique[Flatten[Zip[{Point[α, 0], Point[α, 1]}, α, segmentList]]]] ≟ 3 ∧ (Min[Unique[segmentList]] ≠ 0) ∧ Length[Unique[segmentList]] ≟ 3 ∧ (Area[Polygon…

「0 < 数値 <= 最大値」をループさせる

0,1,2,3, 0,1,2,3, 0,1,2,3,... のように、 0を含み、最大値を含まないループ(0 <= 数値 < 最大値)は、 Mod[ <数値>, <最大値> ] で得られます。 上の例では、数値オブジェクトnを作成し、さらに、数値オブジェクト loop = Mod[n, 4] を作成すれば、nをス…

ドロネー図の三角形をリストとして取得する

前提オブジェクト 点のリスト originalPointList ドロネー図 graph1 = DelaunayTriangulation[originalPointList] 課題 ドロネー図の三角形を、リストオブジェクトとして取得したい。 上図の例では、下図のように、5つの三角形からなるリストを取得したいと…

画面上に大量の点をランダムに生成する

設例 指定した個数の点オブジェクトを、画面上のランダムな位置に生成できるボタンを作りたい。ただし、最も近い点との距離が0.1を下回るような点ができてはならない。 ボタンのOn Click スクリプトを記述せよ。 解答例 以下の関数を、「グローバルJavaスク…

スライダー内で数値を自由に泳がせる方法

下記記事の1次元バージョンです。 数値nを、スライダー内で自由に泳がせる方法を紹介する。 min = -5 max = 5 n = 0 nのスライダーを、最小値min, 最大値maxで作成する。 updater = 0 スライダーを作成、増分0.01 target = 0 nの目標 v = 0 速度 a = 0.005sg…

多角形内で点を自由に泳がせる方法

多角形内で点を自由に泳がせる – GeoGebra 上記アプレットのように、点Pを、多角形poly1内で自由に泳がせる方法を紹介する。 前提として、オリジナルツール「Sides」(下記記事参照)のインポートが必要である。 多角形オブジェクトを用いて、頂点または…

多角形を、直線に沿って滑らずに転がす

はじめに 下図のように、GeoGebraで、多角形を、直線に沿って滑らずに転がす(以下単に「転がす」という)方法を紹介する。 はじめに 解説 前提オブジェクト 環境整備 ステップ① poly1を直線まで持ってくる ステップ② α=0に対応する初期位置を決める ステッ…

10×10の格子点を作成するいくつかの方法

図のように、(0,0)から(9,9)に至る、10×10の格子点を作成する方法を考える。 ①地道に入力する方法 (0,0) (0,1) (0,2) ... (0,9) (1,0) (1,1) (1,2) ... (1,9) ... (9,0) (9,1) (9,2) ... (9,9) ②Sequenceコマンドを使う方法 単に点を描くだけであれば、 Sequ…

関数の定義域内における、最大点・最小点を、「すべて」返すオリジナルツール

はじめに GeoGebraのコマンド Max[ <関数>, <xの開始値>, <xの終了値> ] および Min[ <関数>, <xの開始値>, <xの終了値> ] は、関数の最大点*1および最小点*2を、それぞれ「1つだけ」返してくれる。 下図の点Hは、Maxコマンドで描いている。最大点を「1つだけ」返してくれる。しかし、複数ある最大点のう</xの終了値></xの開始値></xの終了値></xの開始値>…

円を直角で切り取った領域

下図で、Pは、円cの内側の任意の点である。角APBは、常に90度である。AP=BPである。この緑の領域、あなたなら、どうやって作る? 解説 はじめに 見本アプレットは、こちらからDL可能です。 円と2直線で作られる領域 – GeoGebra 以下に出てくるオブジェクト名…

自由なリストオブジェクトの特定の要素のみにSetValueを実行するJavaScript

//リストの特定の要素にSetValueを実行する function setElementValue(listName, index, value) { //フェイルセーフ if (!ggbApplet.exists(listName)) { alert('Error on function setElementValue: ' + listName + ' does not exist.'); return; } if (!gg…

引力っぽい動きを再現する

図のように、点Pが、点Targetに引っ張られる動きを再現する方法を紹介する。 自由な点 P = (0,0) Target = (1,1) を作成する。 自由なベクトルオブジェクト v = (0,0) を作成する。これは速度ベクトルとして使う。 ベクトルオブジェクトaを、以下の定義で作…

任意の点から関数グラフに接線を引く

任意の点を通る、関数グラフの接線を、すべて取得して、リストオブジェクトとして返す方法を紹介する。 GeoGebraで描けるオブジェクトの中でも、かなり設計が難しい部類に入ると思われる。 任意の点から関数グラフに接線を引く – GeoGebra 解説 はじめに こ…

「デザインに強い人が使う黒、黄、赤、青」をGeoGebraで使ってみた。

「デザインに強い人が使う黒、黄、赤、青」*1というツイートに出会った。 素敵な色だったので、GeoGebraでも使えるように、カラーデータをまとめておきたい。 黒 カラーコード:#201F2C RGB:32, 31, 44 HSL:0.67, 0.17, 0.14 黄 カラーコード:#E5D76B RGB…

タッチデバイスで点をドラッグする際に、点が指で隠れて見えない問題について

タイトルの通り。これを解決するための方法を考える。 さしあたり、点をドラッグすると、点が指位置の1つ上に来るようにしてみた。 何も設定しないよりは、点の位置を狙いやすいのではないだろうか。 方法① 動的座標(DynamicCoordinates)を使う 自由な点オ…

iframe埋め込み時に、フルスクリーン(最大化)ボタンを非表示にする

ggbOnInit関数内に、以下ようにスクリプトを記述すれば、iframe埋め込み時に、フルスクリーン(最大化)ボタンを非表示にすることができます。 function ggbOnInit() { var fullButton = document.getElementsByClassName('zoomPanelBtn zoomPanelBtn-up')[0…

AffineRatioとDilateを拡張する

AffineRatioの拡張 定義 AffineRatioを拡張して、オリジナルコマンド「ExtendedAffineRatio」を作成した。 その定義は、以下の通りである。 ExtendedAffineRatio[A,B,C] = (AffineRatio[A, B, Intersect[PerpendicularLine[C, Segment[A, B]], Line[A, B]]],…

テキストの幅に応じて自動改行する

テキストの幅に応じて自動改行する – GeoGebra 上記リンク先のアプレットは、下図のように、テキストの幅を指定して、それに応じてテキストを自動的に改行します。 (参考)グローバルJavaスクリプト //指定したテキストの、現在の設定のもとでの幅ピクセ…

指定した文字列を、GeoGebraのテキストオブジェクトにした場合の、幅ピクセル数を取得する

//指定したテキストの、現在の設定のもとでの幅ピクセル数を取得 function getTextWidth(textToMeasure){ ggbApplet.evalCommand('USITEXT=\"'+textToMeasure+'\"'); var actualWidth = ggbApplet.getValue('x(Corner[USITEXT, 2]) - x(Corner[USITEXT, 1])'…

【RGB, HSL, HSV対応】GeoGebraのオブジェクトに動的な色をセットするJavaScript関数

特定のオブジェクトだけにセット //特定のオブジェクトに対して、動的な色をセットするfunction setDynamicColor(objName, colorMode, rVal, gVal, bVal, aVal){ //フェイルセーフ var exists = ggbApplet.exists(objName); if(!exists){return 'object '+ob…

テキストの枠囲み、一部色づけ

Texの記法を用いて、テキストオブジェクトに枠囲みや色づけを施す方法です。 テキストの枠囲み、一部色づけ – GeoGebra

負の数のときにだけカッコをつける

負の数のときにだけカッコをつける – GeoGebra 数値aが負の数のときにのみ、カッコをつけて表示したいときには、入力バーに If[a < 0, "(" + a + ")", "" + a] と入力すれば良いです。 オリジナルツール:NegativeParen[ <数値> ]

従属オブジェクトの定義をネストする

課題 たとえば、以下のオブジェクトを、上から順に作成する。 C = (1,1) r = 2 s = r+1 d = Circle[C,r] e = Circle[C,s] output = (Area[e] - Area[d]) / (s^2-r^2) ここで、JavaScript関数 nest( 'output', ['C','r'] ); を実行することで、outputを、Cとr…

GeoGebraで増減表を作成するオリジナルツール「DerivativeChart」

使用例 ダウンロード DerivativeChart Tool - GeoGebra 説明 指定した区間における、関数の増減表を返します。同時に、指定した区間における極大点、極小点、変曲点のリストを返します。 ただし、関数は、指定区間において微分可能でなければ、正しい結果を…

On Update スクリプトで点の動きを制御する

設問 GeoGebraで、自由な点オブジェクトAを作成した。いま、点AのOn Update スクリプトを記述することで、点Aの挙動を以下のように制御したい。そのためのスクリプトを記述しなさい。ただし、点Aを、他のオブジェクトの従属オブジェクトとして再定義すること…