ДокторГео
Оригинальный автор(ы) | Хилари Фернандес |
---|---|
Первоначальный выпуск | 31 декабря 1996 г |
Стабильная версия | 24.06
/ 11 июня 2024 г |
Репозиторий | |
Написано в | Cuis_Smalltalk , Smalltalk |
Операционная система | Linux , Mac OS X , Windows , Сахар |
Тип | Программное обеспечение для интерактивной геометрии |
Лицензия | лицензия GPL |
Веб-сайт | www |
GNU Dr. Geo — это программное обеспечение для интерактивной геометрии, которое позволяет пользователям создавать и манипулировать интерактивными геометрическими эскизами, включая динамические модели физики . [1] Это бесплатное программное обеспечение (исходный код, переводы, значки и установщик выпускаются под лицензией GNU GPL ), созданное Хилэром Фернандесом, оно является частью проекта GNU . Он работает на графической системе Morphic (это означает, что он работает на Linux, Mac OS, Windows, Android). Dr. Geo изначально был разработан на C++ со сценариями Scheme . [2] [3] затем в различных версиях Smalltalk с Squeak , Etoys_(programming_language) [4] за один ноутбук на ребенка [5] Фаро, затем Cuis-Smalltalk .
Объекты
[ редактировать ]Доктор Гео манипулирует различными типами объектов, такими как точки, линии, круги, вектора, значения, геометрические преобразования, скрипты. [6]
Очки
[ редактировать ]В Dr. Geo есть несколько видов точек: свободная точка, которую можно перемещать мышью (но можно прикрепить к кривой), и точка, заданная своими координатами.
Точки также могут быть созданы как двух кривых или как середина сегмента пересечение .
Линии
[ редактировать ]Dr. Geo оснащен классическими линиями , лучами , сегментами и векторами .
Другие криволинейные объекты включают круги (определяемые двумя точками, центром и сегментом или радиусом), дуги (определяемые тремя точками или центром и углом), многоугольники (правильные или нет, определяемые конечными точками) и локусы .
Преобразования
[ редактировать ]Кроме параллельной и перпендикулярной линии, проходящей через точку.
Доктор Гео может применить к точке или линии одно из следующих преобразований:
- отражение
- симметрия
- перевод
- вращение
- гомотетия
Макростроительство
[ редактировать ]В Dr. Geo есть макроконструкция: способ научить Dr. Geo новым конструкциям. [7] Это позволяет добавлять в Dr.Geo новые объекты: новые преобразования, такие как инверсия круга , утомительные конструкции, включающие множество промежуточных объектов или конструкции с использованием скрипта (также называемого макроскриптом).
Когда некоторые объекты, называемые Final, зависят от других объектов, называемых Initial , можно создать сложную конструкцию, выводящую конечные объекты из заданных пользователем начальных объектов. Это макроконструкция , граф взаимозависимых объектов.
Программирование
[ редактировать ]Доступ к пользовательскому программированию лежит в основе Dr. Geo: из программного обеспечения пользователь может напрямую читать, изучать, изменять и распространять модифицированную версию Dr. Geo. Кроме того, предлагается встроенный в эскиз сценарий.
Исходный код Dr. Geo — Smalltalk . Это также язык, используемый для пользовательского программирования: для расширения Dr. Geo произвольными вычислительными операциями (скрипт Smalltalk) и для полного определения геометрического эскиза с помощью инструкций программирования (Smalltalk Sketch).
Dr. Geo поставляется с исходным кодом и инструментами разработчика. Поэтому его код можно редактировать и перекомпилировать из Dr. Geo, пока он работает. [8] Этот дизайн, унаследованный от Smalltalk, позволяет легко тестировать новые идеи и новые проекты.
Скрипт Smalltalk
[ редактировать ]Сценарий — это объект первого класса, определенный в коде Dr. Geo. Он имеет ноль, один или несколько аргументов из типов, выбранных при определении сценария. Когда экземпляр скрипта подключается к холсту, пользователь сначала выбирает его аргументы на холсте щелчками мыши, а затем позицию на холсте вывода скрипта. Скрипт обновляется при каждом вычислении холста. Скрипты можно использовать каскадно, при этом один является аргументом другого. [9] Сценарий предназначен для использования двумя разными способами:
- Чтобы вывести объект (т. е. числовое значение) и отобразить его результат на холсте. Этот результат можно использовать при построении последующих объектов (геометрических или скриптовых).
- Чтобы получить доступ к объектам на холсте: модели (MathItem) или их представлению (Costume) для произвольного использования и модификации. Например, чтобы изменить цвет объекта с учетом результата вычисления.
Из сценария модель аргументов доступна с помощью сообщений #arg1, #arg2 и т. д. Доступ к представлению аргументов осуществляется с помощью сообщений #costume1, #costume2 и т. д.
Вычисления скрипта выполняются в его методе #compute. Например, чтобы вычислить квадрат числа, метод
compute
"returns the square of a number"
^ self arg1 valueItem squared
создает числовой объект, значением которого является квадрат его первого и уникального аргумента типа числового объекта. Всякий раз, когда изменяется первое число, возвращаемое скриптом значение также меняется.
Смолток-скетч
[ редактировать ]Эскизы 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
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
Спираль Фибоначчи
[ редактировать ]спираль Фибоначчи Запрограммированная [11] с геометрическими преобразованиями (вращением, сдвигом и гомотетией). Точки 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 sktech можно использовать для создания интерактивного эскиза, иллюстрирующего метод численного анализа. Здесь алгоритм Ньютона-Рафсона за 5 шагов итерации.
| 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 Sketch можно писать на родных языках, в настоящее время на французском и испанском. Можно добавить больше родных языков.
Награды
[ редактировать ]- Награды ESUG Innovation Technology Awards (Амстердам, 2008 г.)
- Награды AFUL за свободное программное обеспечение (Париж, 2000 г.)
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ СК Хунг (2016). «Рисование параболической траектории объекта под действием силы тяжести» (PDF) . Проверено 14 января 2024 г.
- ^ А. Сентомо (2003). «Доктор Гео и геометрия Птолемея» (на итальянском языке) . Получено 13 января.
- ^ А. Чентомо, Ф. Кампора (2002). «Геометрия и программирование с Доктором Гео» (на итальянском языке) . Проверено 14 января 2024 г.
- ^ V. Freudenberg, Y. Ohshima, S. Wallace (2009). Etoys for One Laptop Per Child . C5.2009 . pp. 57–67.
{{cite conference}}
: CS1 maint: несколько имен: список авторов ( ссылка ) - ^ Г. Мело, А. Мачадо, А. Миранда (2014). «Влияние программы «Один ноутбук на ребенка» на обучение: данные из Уругвая» (PDF) . Проверено 14 января 2024 г.
{{cite web}}
: CS1 maint: несколько имен: список авторов ( ссылка ) - ^ К. Уиттум (2016). «Начните работу с Dr. Geo по геометрии» . opensource.com . Проверено 14 января 2024 г.
- ^ Х. Р. Фернандес Гарсия; К. Шнобер (июнь 2006 г.). «Интерактивная геометрия с Dr. Geo MATH HELPER» (PDF) . Журнал Линукс . Проверено 14 января 2024 г. .
- ^ А. Буссер (2011). «Доктор Гео, un docteur qui peut s'operer tout seul» [доктор Джео, доктор, который может работать сам». Гео, врач, который может сделать операцию самостоятельно] (на французском языке). revue.sesamath.net . Проверено 13 января 2024 г.
- ^ Видеоурок по сценарию Smalltalk.
- ^ Видео-демонстрация запрограммированного эскиза
- ^ Х. Фернандес (март 2016 г.). «Спираль Фибоначчи» . Проверено 6 января 2024 г.