GGB API GGBScript http www geogebra orgmanualenComm ands
GGB API • GGBScript http: //www. geogebra. org/manual/en/Comm ands • Java. Script http: //wiki. geogebra. org/en/Reference: Java Script
Java. Script API • 指揮GGBScript. eval. Command() • 存取物件屬性. get. Xcoord(). get. Ycoord(). get. Value(). get. Color(). get. Object. Number(). get. Layer(). get. Line. Style(). get. Line. Thickness(). get. Point. Style(). get. Filling() • 設定物件屬性. set. Value(). set. Coords(). set. Color(). set. Visible(). set. Label. Visible(). set. Fixed(). set. Trace(). set. Layer(). set. Line. Style(). set. Thickness(). set. Point. Style(). set. Point. Size()
Java. Script API • 動態處理 • 更改名稱. set. Animation(). rename. Object(). set. Animation. Speed() • 物件處理. start. Animation(). exist(). stop. Animation(). is. Defined(). is. Animation. Running() • 刪除指定物件. delete. Object()
Java. Script 編輯器 • http: //jsbin. com GGB內建Java. Script • On. Click • On. Update • 全域Java. Script ggb. On. Init()
常用 Geo. Gebra Script • • • b=b+1 Set. Value[b, b+1] Star. Aanimation[t, false] Start. Animation[t, true] Zoom. In[1] If[n==1, Set. Value[t, 0]] If[n==1, Start. Animation[t, true]] If[n==2, Start. Animation[t, false]] If[n<5, Set. Value[n, n+1], Set. Value[n, 0]] Execute[{"A=(1, 1)", “c = Circle[A, 1]" }]
範例 • 做任意點A,向量u=(5, 0),做整數滑竿s, 範 圍為 0到 2。數值滑竿t 1。角度滑竿t 2, 範圍為 0度到 360度。 • B=A+t 1 u , C=A+(cos(t 2), sin(t 2)) • If[s==0, Set. Value[t 1, 0]] If[s==0, Set. Value[t 2, 0]] • If[s==0, Start. Animation[t 1, false]] • If[s==0, Start. Animation[t 2, false]] • If[s==1, Start. Animation[t 1, true]] • If[s==1, Start. Animation[t 2, true]]
好用的 Sequence • • 做一個整數的數值滑竿n, 範圍為 1到 10 取任意點O, A, B 向量u=Vector[O, A], v=Vector[O, B] list 1=Sequence[Curve[x(O+t u+s v), y(O+t u+s v), t, -n, n], s, -n, n, 0. 5] • list 2=Sequence[Curve[x(O+t u+s v), y(O+t u+s v), s, -n, n], t, -n, n, 0. 5]
用Sequence作正四面體堆疊(1) 打開3 D繪圖區,取任意點A, 做一個整數的數值滑竿n, 範圍為 1到 10, 數值滑竿a, 範圍為 1到 5. 作 3個向量 p, q, r p=(a / sqrt(2) , 0, - a ) q=(a cos(120°) / sqrt(2) , a sin(120°) / sqrt(2) , - a ) r=(a cos(240°) / sqrt(2) , a sin(240°) / sqrt(2), - a ) list 1= Sequence[Sequence[A + i p + j (-p + q) + k (-q + r), k, 0, j], j, 0, i], i, 0, n] list 2= Sequence[Sequence[Segment[Element[Ele ment[list 1, i], j], k], Element[Element[list 1, i], j], k + 1]], k, 1, j], j, 1, i], i, 1, n + 1]
用Sequence作正四面體堆疊(2) list 3=Sequence[Sequence[Segment[Element[Elem ent[list 1, i], j], k], Element[Element[list 1, i], j + 1], k]], k, 1, j], j, 1, i], i, 1, n + 1] list 4=Sequence[Sequence[Segment[Element[Elem ent[list 1, i], j], k], Element[Element[list 1, i], j + 1], k + 1]], k, 1, j], j, 1, i], i, 1, n + 1] list 5=Sequence[Sequence[Segment[Element[Elem ent[list 1, i], j], k], Element[Element[list 1, i + 1], j], k]], k, 1, j], j, 1, i], i, 1, n + 1] list 6=Sequence[Sequence[Segment[Element[Elem ent[list 1, i], j], k], Element[Element[list 1, i + 1], j + 1], k]], k, 1, j], j, 1, i], i, 1, n + 1] list 7=Sequence[Sequence[Segment[Element[Elem ent[list 1, i], j], k], Element[Element[list 1, i + 1], j + 1], k + 1]], k, 1, j], j, 1, i], i, 1, n + 1]
自製 具像Mathematica一樣的滑竿 1. 2. 3. 4. 5. 6. 7. 8. 9. 作任意點O, C Sequence[Rotate[Circle[O + (2, 0), 0. 5], k pi / 6, O], k, 0, 11] A=C-(2, 0), B=C+(2, 0) P=Point[Segment[A, B]] max=10 v=(x(P) - x(A)) max / (x(B) - x(A)) value=floor(v) c=Circle[O + (2 cos(value π / 6), 2 sin(value pi / 6)), 0. 52] poly 1=Polygon[{A + (0, 0. 12), A - (0, 0. 12), B + (0, 0. 12)}] 10. c 0=Polygon[{P + (0. 2, 0. 2), P + (-0. 2, -0. 2), P + (0. 2, -0. 2)}] 11. q 1=Semicircle[A - (0, 0. 12), A + (0, 0. 12)] 12. q 2=Semicircle[B + (0, 0. 12), B - (0, 0. 12)] 13. 插入動態文字,輸出 具。
On. Click, On. Update, 全域Java ggb. Applet. eval. Command('slider=Slider[1, 10, 1, 1, 100]'); ggb. Applet. eval. Command('Set. Value[slider, 5]'); ggb. Applet. eval. Command('Set. Coords[slider, 100, 400]'); ggb. Applet. delete. Object("slider"); ggb. Applet. eval. Command('Set. Active. View[1]') ggb. Applet. set. Visible('A', false); ggb. Applet. eval. Command('Set. Line. Thickness['L', 0]'); ggb. Applet. eval. Command('Set. Color['L', "blue"]');
On. Click, On. Update, 全域Java var ggb=ggb. Applet ggb. eval. Command('a=1') ggb. eval. Command('b=2') ggb. eval. Command('n=Slider[1, 10, 1, 1, 100]'); ggb. eval. Command('Set. Value[n, 5]'); ggb. eval. Command('Set. Coords[run, 20, 100]'); ggb. eval. Command('A=(1, 0)') ggb. eval. Command('u=(1, sqrt(3))') ggb. eval. Command('Center. View[(0, 0)]')
參考資料 • 阿壽 坊 羅東高中官長壽老師 http: //ntfs 3. ltsh. ilc. edu. tw/longlife/ • 學習Geo. Gebra 陽明高中羅驥韡老師 https: //sites. google. com/a/ymsh. tp. edu. tw/geogebr a/home • GGB官網 https: //www. geogebra. org/manual/en/Commands http: //www. geogebra. org/manual/en/Reference: Jav a. Script • 藍老師的Geo. Gebra教室 http: //w 2. tpsh. tp. edu. tw/math 0128/index. htm
- Slides: 21