うしブログ

うしブログ

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

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

GeoGebra-応用的な使い方

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

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

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] と入力すれば良いです。

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

課題 たとえば、以下のオブジェクトを、上から順に作成する。 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を、他のオブジェクトの従属オブジェクトとして再定義すること…

webappで画面表示をコントロールするスクリプトの試作

webappのアプレット作成画面では、グラフィックスビューだけでなく、数式ビューやプロパティ画面などを同時に開いていることが多いです。 そのまま保存すると、「生徒向けワークシート」ページやアプレット埋め込みページでも、数式ビューやプロパティ画面が…

On Update スクリプト内で「オブジェクト更新前の値」を参照する方法

設例 数値オブジェクトnを作成する。最小値1、最大値10、増分1に設定して、スライダーを作成する。 ブランクのテキストオブジェクトtext1 = ""を作成する。 いま、nのスライダーを動かす直前のnの値が、n_{previous}であったとする。そして、nのスライダーを…

「頭文字+通し番号」のオブジェクトに対する一括操作に使えるJavaScript関数まとめ

作成 //str command〔例:'POINTα=(α,0)'〕, str index〔例:'α'〕, int 実行回数function evalSequenceCommand(command,index,time){ index = RegExp(index,'g'); for(var k = 1; k<=time; k++){ ggbApplet.evalCommand(command.replace(index,k)); }} 現在…

点と線分との位置関係の測定

点Pと線分fとの位置関係を特定するために有用な測定値と、それをGeoGebraで表現する際の数式の書き方を紹介します。 水平方向の位置関係 点Pと線分fとの、水平方向の位置関係を表現する値としては、線分fの端点Point[f,0]およびPoint[f,1]における、点Pからf…

自由な点オブジェクトを、PointIn[ <多角形> ]と同じ挙動にする、あるいはその逆の挙動にする

自由な点オブジェクトPを作成する。多角形オブジェクトpoly1を作成する。 点Pの可動領域を、poly1の内部(および辺上)に限定するには、点PのOn Update ハンドラに、以下のスクリプトを記述すれば良い。 If[P!=ClosestPointRegion[poly1,P],SetValue[P,Close…

グラフィックスビュー上のオブジェクトのドラッグ解除を監視する

このアプレットは、点A(0,0)をドラッグして動かした後、ドラッグを解除する(点Aを離す)と、Aが(0,0)に戻るように作られています。 このように、グラフィックスビュー上のオブジェクトのドラッグ解除を監視するには、タッチデバイスならtouchend イベント, …

javascriptで図の位置(隅1,2,4)を指定するスクリプト

//図オブジェクトobjNameの隅1,2,4を、式expC1,2,4で表される点に設定する function setImgCorner(objName, expC1,expC2,expC4){ //オブジェクト存在確認 var isexist = ggbApplet.exists(objName); if(isexist){ var xmlText = '<element type=\"image\" label=\"'+objName+'\"><startPoint number=\"0\" exp=\"'+expC1+'\"/></startpoint></element>

javascriptでOn Update / Click スクリプトを編集する

スクリプトをクリアしたいときは、引数scriptを、' '(半角スペース1文字)としてください。 ※このスクリプトはβ版です。引数の内容によっては、正常に動作しない可能性があります。 変数scriptにおける各種記号の書き方は、下記記事を参照してください。 「…

パン・ズームをしても消えない残像

テキストを特定の位置に揃えるには?

問題 図のように、任意の場所にテキストオブジェクト(名前は「text1」)を作成する。text1は、画面上に固定しないものとする。 いま、text1の左下隅の座標を、正確に、( sqrt(2), sqrt(3) )に揃えたい。 text1をドラッグすれば、見かけ上、おおまかに揃える…

テキストサイズをピクセル単位で微調整する

はじめに 過去記事「テキストの高さ、および描画開始点の位置」*1(以下、単に「過去記事」という)では、テキストの高さ(単位はピクセル。heightとおく)が、テキストのxmlデータにおける「sizeM」という数値、および、フォントサイズ(pt)の2変数関数で…

点がパス上にあるか否かを表す真偽値オブジェクト

点が領域内にあるか否かを表す真偽値オブジェクトは、 IsInRegion[ <点>, <領域> ] で作成できる。 これに対して、点がパス内にあるか否かを表す真偽値オブジェクトは、どうすれば作成できるだろうか。これを作成するためのコマンドは用意されていないので、…

多角形オブジェクトを用いて、頂点または辺のリストを返す

多角形の名前を poly1 とする。 poly1の頂点のリストは、 {Vertex[poly1]} と表せる。 また、poly1の辺のリストは、 Sequence[Segment[Element[{Vertex[poly1]}, t], Element[{Vertex[poly1]}, If[t ≠ Length[{Vertex[poly1]}], t + 1, 1]]], t, 1, Length[{…

任意の多角形における全頂点の集合の凸包を多角形オブジェクトで返す

GeoGebraでは、任意の多角形オブジェクト(名前をpoly1とする)における全頂点の集合 {Vertex[poly1]} の凸包は、 ConvexHull[{Vertex[poly1]}] で得ることができる。 しかし、この方法で得られる凸包は、軌跡オブジェクトであり、多角形オブジェクトではな…

テキストサイズを取得する

現在、GeoGebraには、テキストサイズを取得するメソッドが存在しないので、自作しました。 引数:サイズを取得したいテキストオブジェクトの名前(string) 戻り値:テキストサイズを表す文字列(string) function getTextSize(objName){ // この関数は、Ge…

垂線の足を作成するオリジナルツール「PerpendicularFoot」

PerpendicularFoot Tool - GeoGebra 点と直線を選択すると、その点から、その直線に下ろした垂線の足を作成します。

ベクトルの一次結合の係数を求める方法(結論のみ)

ベクトルtargetが、一次独立なvector1とvector2との一次結合 target = a * vector1 + b * vector2 で表せるとする。 このとき、GeoGebraで、係数a、bの値を、点オブジェクト(a, b)の形で求めるために、入力バーに入力すべき数式を、2つ紹介する。 幾何学的に…

テキストの高さ、および描画開始点の位置

テキストのピクセル数 テキストオブジェクトは、スタイルバーまたはプリファレンスで、サイズを指定できる。選べるサイズは、微小(Extra Small)、特小(Very Small)、小(Small)、中(Medium)、大(Large)、特大(Very Large)、巨大(Extra Large)で…

画面上の固定された位置に点を作成する

はじめに アプレット画面をパン・ズームしても、画面上の定位置を保持するような点の作成方法をまとめます。 なお、この方法は、前提として、オリジナルツール「PixelCoords」および「PixelPoint」をGeoGebraにインポートする必要があります。これらのツール…

Webサイトに埋め込んだGeoGebraアプレットの画面上に、ダウンロードアイコンを設置する方法

ダウンロードアイコンを設置したアプレット(見本) インラインフレームによって、アプレットをブログ等のサイトに埋め込む方法で、GeoGebra アプレットをユーザーに見せている場合には、アプレット画面から直接、ggbファイルをダウンロードするオプションは…