| 原作者 | ヒラリー・フェルナンデス |
|---|---|
| 初回リリース | 1996年12月31日 |
| 安定リリース | 24.06 / 2024年6月11日 |
| リポジトリ |
|
| 書かれた | Cuis_Smalltalk、スモールトーク |
| オペレーティング·システム | Linux、Mac OS X、Windows、Sugar |
| タイプ | インタラクティブな幾何学ソフトウェア |
| ライセンス | ライセンス |
| Webサイト | 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]その後、 Squeakを使用したSmalltalkのさまざまなバージョン、Etoys_(プログラミング言語) [4]でOne Laptop per Child用に開発され[5] Pharo、そして Cuis-Smalltalk になりました。
オブジェクト
ジオ博士は、点、線、円、ベクトル、値、幾何学的変換、スクリプトなど、さまざまな種類のオブジェクトを操作します。[6]
ポイント
Dr. Geo には、マウスで移動できるフリー ポイント (ただし、曲線にアタッチされる場合もあります) と、座標によって指定されるポイントなど、いくつかの種類のポイントがあります。
ポイントは、 2 つの曲線の交点として、またはセグメントの中点として作成することもできます。
ライン
Dr. Geo には、クラシックな線、光線、線分、ベクトルが装備されています。
その他の曲線オブジェクトには、円 (2 つの点、中心と線分、または半径で定義)、円弧 (3 つの点、または中心と角度で定義)、多角形 (正多角形または正多角形以外、端点で定義)、および軌跡が含まれます。
変革
点を通る平行線と垂直線のほかに。
Dr. Geo は、点または線に次のいずれかの変換を適用できます。
- 反射
- 対称
- 翻訳
- 回転
- 相似性
マクロ構築
Dr. Geoにはマクロ構築が付属しています。これは、Dr. Geoに新しい構築を教える方法です。[7]これにより、円の反転などの新しい変換、多くの中間オブジェクトを含む面倒な構築、スクリプト(マクロスクリプトとも呼ばれます)を含む構築など、Dr. Geoに新しいオブジェクトを追加できます。
finalと呼ばれるいくつかのオブジェクトがinitialと呼ばれる他のオブジェクトに依存している場合、ユーザーが指定した initial オブジェクトから final オブジェクトを推測する複雑な構造を作成できます。これは、相互依存オブジェクトのグラフである マクロ構造です。
プログラミング
ユーザー プログラミングへのアクセスは、Dr. Geo の本質です。ソフトウェアから、ユーザーは Dr. Geo の修正バージョンを直接読み取り、調査、変更し、再配布できます。さらに、スケッチに埋め込まれたスクリプトも提案されています。
Dr. Geo のソース コードはSmalltalkです。これは、ユーザー プログラミングにも使用される言語です。任意のコンピューティング操作で Dr. Geo を拡張したり (Smalltalk スクリプト)、プログラミング命令だけで幾何学的なスケッチを定義したり (Smalltalk スケッチ) します。
Dr. Geoはソースコードと開発ツールとともに出荷されます。そのため、Dr. Geoが動作している間にコードを編集したり再コンパイルしたりすることができます。[8] Smalltalkから継承されたこの設計により、新しいアイデアや新しい設計を簡単にテストできます。
Smalltalk スクリプト

スクリプトは、 Dr. Geo コードに沿って定義されるファーストクラス オブジェクトです。スクリプトには、スクリプトを定義するときに選択したタイプから、0、1、または複数の引数が付属しています。スクリプトのインスタンスがキャンバスにプラグインされると、ユーザーは最初にマウス クリックでキャンバス内の引数を選択し、次にスクリプト出力のキャンバス内の位置を選択します。スクリプトは、キャンバスの計算ごとに更新されます。スクリプトはカスケードで使用でき、1 つのスクリプトが別のスクリプトの引数として使用されます。[9] スクリプトは、2 つの異なる方法で使用されるように設計されています。
- オブジェクト (つまり数値) を出力し、その結果をキャンバスに表示します。この結果は、後続のオブジェクト (ジオメトリまたはスクリプト) を構築するときに使用できます。
- キャンバス内のオブジェクトにアクセスするには、モデル (MathItem) またはそのビュー (Costume) を任意の使用と変更のために使用します。たとえば、計算の結果に基づいてオブジェクトの色を変更します。

スクリプトからは、メッセージ #arg1、#arg2 などを使用して引数モデルに到達します。メッセージ #costume1、#costume2 などを使用して引数ビューに到達します。
スクリプトの計算は#computeメソッドで行われます。たとえば、数値の2乗を計算するには、次のメソッドを使用します。
計算
「数値の二乗を返す」
^ self arg1 valueItem squared
数値オブジェクトを作成します。その値は、数値オブジェクト型の最初の一意の引数の 2 乗です。最初の数値が変更されるたびに、スクリプトの戻り値も変更されます。
雑談スケッチ

Dr. Geo Smalltalk スケッチは、Smalltalk 言語で完全に定義されたスケッチです。これは、Dr. Geo グラフィカル インターフェイスでスケッチを構築することではなく、Smalltalk 言語でスケッチを記述することです。簡単で軽い構文のプログラミング インターフェイスが提供されます。[10]
Smalltalk自体は、パロアルト研究所で約 10 年かけて慎重に反復的に作成された高水準言語です。スケッチが 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
値: s1
値: ( c middleOf: s1 and: s2 )非表示
値: ( c middleOf: s1 and: s3 )非表示
値: n - 1 .
triangle
値: ( c middleOf: s1 and: s2 )非表示
値: s2
値: ( c middleOf: s2 and: s3 )非表示
値: n - 1 .
三角形
値: ( c middleOf: s1 and: s3 )非表示
値: ( c middleOf: s2 and: s3 )非表示
値: s3
値: n - 1 ]] .
三角形 値: 0 @ 3 値: 4 @ -3 値: -4 @ -3 値: 3 .
( c point: 0 @ 3 )表示
フィボナッチ螺旋
フィボナッチ螺旋を幾何学的変換(回転、平行移動、相似性)でプログラムしたもの[11] 。結果として得られるインタラクティブスケッチの 点aと点bは移動可能です。

|キャンバス シェイプ アルファ フィボ abms |
キャンバス := DrGeoSketch new .
alfa := (キャンバス 自由値: -90 degreesToRadians )非表示.
シェイプ := [ : c : o : f | | ep |
e := (キャンバス 回転: o 中心: c 角度: alfa )非表示.
(キャンバス 弧中心: c から: o まで: e )大きい.
p := キャンバス 移動: e ベクトル: (キャンバス ベクトル: c から: o )非表示.
(キャンバス 多角形: { c . o . p 非表示. e })名前: f .
e ] .
fibo := [ ] .
fibo := [ : f : o : c : k | | e f1 f2 f3 c2 |
"f1: 項 Fn-1、f2: 項 Fn、o & c: 渦巻き腕の原点と中心
e: 渦巻き腕の先端"
f1 := f first .
f2 := f second .
f3 := f1 + f2 .
e := shape 値: c 値: o 値: f3 .
c2 := ( canvas スケール: c 中心: e 係数: f3 / f2 )非表示.
k > 0 ifTrue: [ fibo 値: { f2 . f3 }値: e 値: c2 値: k - 1 ]] .
a := キャンバス ポイント: 1 @ 0 .
b := キャンバス ポイント: -1 @ 0 .
m := (キャンバス middleOf: a and: b )非表示.
s := シェイプ 値: m 値: a 値: 1 .
シェイプ 値: m 値: s 値: 1 .
fibo 値: { 1 . 2 }値: b 値: a 値: 10
ニュートン・ラプソンアルゴリズム
Smalltalk sktech は、数値解析法を説明するインタラクティブなスケッチを設計するために使用できます。ここでは、5 ステップの反復における ニュートン・ラプソン アルゴリズムを示します。

| sketch f df xn ptA ptB |
sketch := DrGeoSketch new axesOn .
xn := 2 .
f := [ : x | x cos + x ] .
"微分数"
df := [ : x | ( f 値: x + 1e-8 ) - ( f 値: x ) * 1e8 ] .
sketch plot: f from: -20 to: 20 .
ptA := (スケッチ ポイント: xn @ 0 ) large ; name: 'Drag me' .
5 timesRepeat: [
ptB := スケッチ
ポイント: [ : pt | pt point x @ ( f 値: pt point x )]
parent: ptA .
ptB hide .
(スケッチ セグメント: ptA to: ptB ) dotted forwardArrow .
ptA := スケッチ ポイント: [ : pt |
| x |
x := pt point x .
x - ( ( f 値: x ) / ( df 値: x ) ) @ 0 ]親: ptB .
ptA 非表示.
(スケッチ セグメント: ptB から ptA )点線 forwardArrow ] .
ロケール言語
Smalltalk スケッチはネイティブ言語でコーディングできます。現在はフランス語とスペイン語です。他のネイティブ言語も追加できます。
受賞歴
- ESUGイノベーションテクノロジー賞(アムステルダム、2008年)
- AFUL フリーソフトウェア賞 (パリ、2000 年)
参照
参考文献
- ^ CK Hung (2016). 「重力下での物体の放物線軌道の描画」(PDF) 。 2024年1月14日閲覧。
- ^ A. セントモ (2003)。 「Dr. Geo e la Geometria Tolemaica」(イタリア語)。2024 年1 月 13 日に取得。
- ^ A. チェントモ、F. カンポラ (2002)。 「Geometria e Programmazione con Dr. Geo」(イタリア語)。2024 年1 月 14 日に取得。
- ^ V. Freudenberg、Y. Ohshima、S. Wallace (2009)。Etoys for One Laptop Per Child。C5.2009。pp.57–67。
{{cite conference}}: CS1 maint: 複数の名前: 著者リスト (リンク) - ^ G. Melo、A. Machado、A. Miranda (2014)。「子供1人1台のラップトッププログラムの学習への影響:ウルグアイの証拠」(PDF) 。 2024年1月14日閲覧。
{{cite web}}: CS1 maint: 複数の名前: 著者リスト (リンク) - ^ C. Whittum (2016). 「Get started with Dr. Geo for Geometry」. opensource.com . 2024年1月14日閲覧。
- ^ JR Fernández García、C. Schnober (2006 年 6 月)。「Dr. Geo MATH HELPER を使用したインタラクティブな幾何学」(PDF)。Linux Magazine。2024年1 月 14 日閲覧。。
- ^ A. バッサー (2011)。 「ジオ博士、あなたは医者です」ジオ、一人で手術ができる医師】(フランス語)。レビュー.sesamath.net 。2024 年1 月 13 日に取得。
- ^ Smalltalk スクリプトのビデオチュートリアル
- ^ プログラムされたスケッチのビデオデモンストレーション
- ^ H. Fernandes (2016年3月). 「フィボナッチスパイラル」 . 2024年1月6日閲覧。
