跳转到内容

User:Chieeeeeen/Dr.Geo

维基百科,自由的百科全书
GNU Dr. Geo
DrGeo geometry software mascot.
GNU Dr. Geo
原作者Hilaire Fernandes
首次发布1996年12月31日,​28年前​(1996-12-31
编程语言Cuis_Smalltalk, Smalltalk
操作系统Linux, Mac OS X, Windows, Sugar
类型Interactive geometry software
许可协议GPL
网站www.gnu.org/s/dr-geo

GNU Dr. Geo 是一款互動式幾何軟體,允許使用者設計和操作互動式的幾何草圖,其中包含了物理的動態模型。 [1]它是一款自由軟體(原始程式碼、翻譯、圖示和安裝程式在 GNU GPL 許可下發佈),由 Hilaire Fernandes 創建,為 GNU 計劃的一部分。它在Morphic 圖形系統上執行 (這表示它可以在 Linux、Mac OS、Windows、Android 上執行)。Dr. Geo 最初是使用 C++ 程式語言搭配 Scheme 腳本開發的,[2] [3]之後又以不同版本的 Smalltalk 搭配 Squeak 、 Etoys_(程式語言) [4] (用於每童一機) [5] Pharo 以及 Cuis-Smalltalk 開發。

物件

[编辑]

Dr. Geo 可以操作不同種類的物件,例如點、線、圓、向量、數值、幾何變換以及腳本。 [6]

[编辑]

Dr. Geo 有不同種類的點:自由點,可以用滑鼠自由移動(但可能會附著到曲線上)以及由座標給定的點。

點也可以作為兩條曲線的交點或線段中點

[编辑]

Dr. Geo 含有經典的射線線段向量

其他曲線物件包括圓(由兩個點、中心和線段或半徑定義)、弧(由三個點或中心和角度定義)、多邊形(無論是否為正多邊形,均由端點定義)和軌跡

變換

[编辑]

除了通過點的平行線和垂直線以外,

Dr. Geo 可以對點或線進行以下其中任何變換:

  1. 鏡射
  2. 對稱
  3. 平移
  4. 旋轉
  5. 位似變換

巨集建構

[编辑]

Dr. Geo 具備巨集建構的功能:這是一種教導 Dr. Geo 新構造的方法。 [7]它允許在 Dr. Geo 添加新物件,包括新的變換(例如圓的反演)、涉及許多中間物件的繁瑣建構,或是涉及腳本(也稱為巨集腳本)的建構。

當某些物件(稱為最終物件)依賴於其他物件(稱為初始物件)時,可以創建一個複雜的建構,從用戶提供的初始物件推導出最終物件。這就是巨集,它是一個相互依賴物件的圖形結構。

程式設計

[编辑]

使用者程式設計的存取是 Dr. Geo 的核心功能:使用者可以直接從軟體中讀取、研究、修改及重新分發修改後的 Dr. Geo 版本。此外,還提供了嵌入於草圖中的腳本功能。

Dr. Geo 的原始碼是 Smalltalk 。這也是用於使用者程式設計的語言:用於擴展 Dr. Geo 的任意計算操作(Smalltalk 腳本),以及完全以程式指令定義幾何草圖(Smalltalk 草圖)。

Dr. Geo 附帶其原始碼和開發工具。因此,在 Dr. Geo 運行的同時,可以編輯和重新編譯其程式碼。 [8]這一設計源於 Smalltalk,使得測試新想法和新設計變得更容易。

Smalltalk 腳本

[编辑]
Curve and tangent
使用 Smalltalk 腳本計算的曲線及其切線

腳本是一種頭等物件,定義於 Dr. Geo 的程式碼中。它可以有零個、一個或多個參數,這些參數類型在定義腳本時選擇。當腳本的實例插入���布時,使用者首先用滑鼠點擊選擇畫布中的參數,然後選擇腳本輸出的位置。腳本會在每次畫布計算時更新。腳本可以串聯使用,其中一個可以作為另一個的參數。腳本設計有兩種不同的用途:

  1. 輸出一個物件(例如數值),並在畫布中顯示其結果。這個結果可以在建立後續物件(幾何物件或腳本)時使用。
  2. 存取畫布中的物件:模型(MathItem)或其視圖(Costume),以進行任意用途和修改。例如,根據計算結果修改物件的顏色。
即時腳本編輯

從腳本中,可以通過消息 #arg1、#arg2 等獲取參數模型,並且可以通過消息 #costume1、#costume2 等獲取參數視圖。

腳本的計算在其 #compute 方法中進行。例如,計算一個數字的平方的方法如下:

compute
"returns the square of a number"
^ self arg1 valueItem squared

創建一個數值物件,其值為第一個且唯一的數字物件參數的平方。每當第一個數字改變時,腳本返回的值也會隨之改變。

Smalltalk 草圖

[编辑]
Smalltalk 草圖編輯器

Dr. Geo 的 Smalltalk 草圖不是使用 Dr. Geo 的圖形介面來構建草圖,而是用 Smalltalk 語言來描述草圖,提供了一個簡單且輕量的程式設計介面。

Smalltalk 本身是一種高級語言,在 帕羅奧多研究中心經過約十年的精心迭代開發而成。當草圖用 Smalltalk 程式碼描述時,該語言的所有特性都會被使用:物件導向程式設計變數集合迭代器隨機性,以便在每次執行時獲得略微不同的草圖。

Smalltalk 草圖可以使用 Smalltalk 草圖編輯器進行編輯和測試。這類草圖可以逐步調試和執行。其程式碼像任何原始碼一樣被保存為外部文字檔中,並以 UTF-8 編碼,以支持當地語言。

謝爾賓斯基三角形

[编辑]

以下是謝爾賓斯基三角形的遞迴程式設計方法。它的紅色外部頂點是移動的。

互動式謝爾賓斯基三角形
| triangle c |
c := DrGeoSketch new.
triangle := [:s1 :s2 :s3 :n |
    c segment: s1 to: s2; segment: s2 to: s3; segment: s3 to: s1.
    n > 0 ifTrue: [
        triangle
            value: s1
            value: (c middleOf: s1 and: s2) hide
            value: (c middleOf: s1 and: s3) hide
            value: n-1.
        triangle
            value: (c middleOf: s1 and: s2) hide
            value: s2
            value: (c middleOf: s2 and: s3) hide
            value: n-1.
        triangle
            value: (c middleOf: s1 and: s3) hide
            value: (c middleOf: s2 and: s3) hide
            value: s3
            value: n-1]].
triangle value: 0@3 value:  4@ -3 value: -4@ -3 value: 3.
(c point: 0@3) show

斐波那契螺旋

[编辑]

斐波那契螺旋[9]是透過幾何變換(如旋轉、平移和相似變換)設計而成的。 。生成的互動草圖中的點 a 和 b 是可移動的。

互動式斐波那契螺旋線
|canvas shape alfa fibo a b m s|
canvas := DrGeoSketch new.
alfa := (canvas freeValue: -90 degreesToRadians) hide.
shape := [:c :o :f| | e p |
	e := (canvas rotate: o center: c angle: alfa) hide.
	(canvas arcCenter: c from: o to: e) large.
	p := canvas translate: e vector: (canvas vector: c to: o) hide.
	(canvas polygon: { c. o. p hide. e }) name: f.
	e].
fibo := [ ].
fibo := [ :f :o :c :k | | e f1 f2 f3 c2|
"f1: term Fn-1, f2: term Fn, o & c: origin and center of spiral arm
e: extremity of the spiral arm"
	f1 := f first.
	f2 := f second.
	f3 := f1 + f2.
	e := shape value: c value: o value: f3.	
	c2 := (canvas scale: c center: e factor: f3 / f2) hide.
	k > 0 ifTrue: [ fibo value: {f2. f3} value: e value: c2 value: k - 1 ]].

a := canvas point: 1@0.
b := canvas point: -1 @0.
m := (canvas middleOf: a and: b) hide.
s := shape value: m value: a value: 1.
shape value: m value: s value: 1.
fibo value: {1. 2} value: b value: a value: 10

牛頓拉弗森法

[编辑]

Smalltalk 草圖可以用來設計互動草圖,以說明數值分析方法。這裡展示的是牛頓拉弗森法的五步迭代過程。

互動式牛頓拉弗森法
| sketch f df xn ptA ptB|
sketch := DrGeoSketch new axesOn.
xn := 2.
f := [ :x | x cos + x ].
"Derivate number"
df := [ :x | (f value: x + 1e-8) - (f value: x) * 1e8].
sketch plot: f from: -20 to: 20.
ptA := (sketch point: xn@0) large; name: 'Drag me'.
5 timesRepeat: [ 
	ptB := sketch 
		point: [ :pt | pt point x @ (f value: pt point x)] 
		parent: ptA.
	ptB hide.
	(sketch segment: ptA to: ptB) dotted forwardArrow .
	ptA := sketch point: [:pt | 
		| x |
		x := pt point x.
		x - ( (f value: x) / (df value: x) )  @ 0 ] parent: ptB.
	ptA hide.
	(sketch segment: ptB to: ptA) dotted forwardArrow].

當地語言

[编辑]

Smalltalk 草圖目前支援法語和西班牙語。未來可以支援更多語言。

參考資料

[编辑]
  1. ^ C.K. Hung. Drawing the Parabolic Trajectory of an Object under Gravity (PDF). 2016 [14 January 2024]. 
  2. ^ A. Centomo. Dr. Geo e la Geometria Tolemaica. 2003 [13 January 2024] (意大利语). 
  3. ^ A. Centomo, F. Campora. Geometria e programmazione con Dr. Geo. 2002 [14 January 2024] (意大利语). 
  4. ^ V. Freudenberg, Y. Ohshima, S. Wallace. Etoys for One Laptop Per Child. C5.2009: 57–67. 2009. 
  5. ^ G. Melo, A. Machado, A. Miranda. The Impact of a One Laptop per Child Program on Learning: Evidence from Uruguay (PDF). 2014 [14 January 2024]. 
  6. ^ C. Whittum. Get started with Dr. Geo for geometry. opensource.com. 2016 [14 January 2024]. 
  7. ^ J.R. Fernández García; C. Schnober. Interactive geometry with Dr. Geo MATH HELPER (PDF). Linux Magazine. June 2006 [14 January 2024]. .
  8. ^ A. Busser. Dr. Geo, un docteur qui peut s'opérer tout seul [Dr. Geo, a doctor that can make a surgery by himself]. revue.sesamath.net. 2011 [13 January 2024] (法语). 
  9. ^ H. Fernandes. Fibonacci spiral. March 2016 [6 January 2024]. 

[[Category:使用GPL许可证的软件]] [[Category:GNU计划软件]] [[Category:自由教育軟件]] [[Category:Linux教育軟件]]