DrGeo

GNU Dr. Geo
Оригинальный автор(ы)Илер Фернандес
Первоначальный выпуск31 декабря 1996 г .; 27 лет назад ( 1996-12-31 )
Стабильный релиз
24.06 / 11 июня 2024 г. ; 3 месяца назад ( 2024-06-11 )
Репозиторий
  • github.com/hilaire/drgeo.git
Написано вCuis_Smalltalk, Малый разговор
Операционная системаLinux , Mac OS X , Windows , Сахар
ТипПрограммное обеспечение для интерактивной геометрии
Лицензия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_(programming_language) [4] для одного ноутбука на ребенка [5] Pharo , затем Cuis-Smalltalk.

Объекты

Доктор Гео манипулирует различными типами объектов, такими как точки, линии, окружности, векторы, значения, геометрические преобразования, скрипты. [6]

Очки

В Dr. Geo есть несколько видов точек: свободная точка, которую можно перемещать с помощью мыши (но можно прикрепить к кривой), и точка, заданная ее координатами.

Точки также могут быть созданы как пересечение двух кривых или как середина сегмента .

Линии

Dr. Geo оснащен классическими линейными , лучевыми , сегментными и векторными функциями .

Другие криволинейные объекты включают окружности (определяемые двумя точками, центром и сегментом или радиусом), дуги (определяемые тремя точками или центром и углом), многоугольники (правильные или нет, определяемые конечными точками) и геометрические места .

Трансформации

Кроме параллельной и перпендикулярной прямой, проходящей через точку.

Доктор Гео может применить к точке или линии одно из следующих преобразований:

  1. отражение
  2. симметрия
  3. перевод
  4. вращение
  5. гомотетия

Макро-конструкция

Dr. Geo поставляется с макроконструкцией: способом обучения Dr. Geo новым конструкциям. [7] Он позволяет добавлять новые объекты в Dr. Geo: новые преобразования, такие как инверсия круга , утомительные конструкции, включающие множество промежуточных объектов, или конструкции, включающие скрипт (также называемый макроскриптом).

Когда некоторые объекты, называемые final, зависят от других объектов, называемых initial , можно создать сложную конструкцию, выводящую final объекты из заданных пользователем initial объектов. Это макроконструкция , граф взаимозависимых объектов.

Программирование

Доступ к пользовательскому программированию лежит в основе Dr. Geo: из программного обеспечения пользователь может напрямую читать, изучать, изменять и распространять измененную версию Dr. Geo. Кроме того, предлагается встроенный в эскиз скриптинг.

Исходный код Dr. Geo — Smalltalk . Это также язык, используемый для пользовательского программирования: для расширения Dr. Geo произвольными вычислительными операциями (скрипт Smalltalk) и для определения геометрического эскиза полностью с помощью инструкций программирования (скетч Smalltalk).

Dr. Geo поставляется с исходным кодом и инструментами разработчика. Поэтому его код можно редактировать и перекомпилировать из Dr. Geo во время его работы. [8] Этот дизайн, унаследованный от Smalltalk, позволяет легко тестировать новые идеи и новые проекты.

Сценарий Smalltalk

Кривая и касательная
Кривая и ее касательная, вычисленные с помощью скриптов Smalltalk

Скрипт — это объект первого класса, определенный по коду Dr. Geo. Он поставляется с нулевым, одним или несколькими аргументами из типов, выбранных при определении скрипта. Когда экземпляр скрипта подключается к холсту, пользователь сначала выбирает его аргументы на холсте щелчками мыши, затем позицию на холсте вывода скрипта. Скрипт обновляется при каждом вычислении холста. Скрипты могут использоваться каскадно, один из которых является аргументом другого. [9] Скрипты предназначены для использования двумя различными способами:

  1. Вывести объект (т.е. числовое значение) и показать его результат на холсте. Этот результат может быть использован при построении последующих объектов (геометрических или скриптовых).
  2. Для доступа к объектам на холсте: модель (MathItem) или их вид (Costume) для произвольного использования и модификации. Например, для изменения цвета объекта, учитывая результат вычисления.
Редактирование сценария в реальном времени

Из скрипта модель аргументов достигается с помощью сообщений #arg1, #arg2 и т. д. Представление аргументов достигается с помощью сообщений #costume1, #costume2 и т. д.

Вычисление скрипта выполняется в его методе #compute. Например, для вычисления квадрата числа, la méthode

compute "возвращает квадрат числа" ^  self  arg1  valueItem  squared

создает числовой объект, значение которого является квадратом его первого и уникального аргумента типа number object. Всякий раз, когда изменяется первое число, возвращаемое скриптом значение также изменяется.

Набросок Smalltalk

Редактор эскизов Smalltalk

Эскизы Dr. Geo Smalltalk — это эскизы, полностью определенные на языке Smalltalk. Речь идет не о построении эскиза с помощью графического интерфейса Dr. Geo, а об описании эскиза с помощью языка Smalltalk. Предоставляется программный интерфейс с простым и легким синтаксисом. [10]

Smalltalk сам по себе является языком высокого уровня, тщательно итеративно созданным в течение примерно 10 лет в исследовательском центре Пало-Альто . Когда набросок описывается кодом Smalltalk, используются все возможности языка: объектно-ориентированное программирование , переменная , коллекция , итератор , случайность , чтобы получить немного другой набросок при каждом выполнении.

Эскиз Smalltalk редактируется и тестируется с помощью редактора эскизов Smalltalk . Такой эскиз можно отлаживать и выполнять шаг за шагом. Его код сохраняется, как и любой исходный код, во внешнем текстовом файле в кодировке UTF-8 для поддержки родного языка.


треугольник Серпинского

Вот как рекурсивно запрограммировать треугольник Серпинского . Его красная внешняя вершина подвижна.

Вычисленный интерактивный треугольник Серпинского
| треугольник c | c  :=  DrGeoSketch  новый . треугольник  := [ : s1  : s2  : s3  : n  |  c  сегмент:  s1  до:  s2 ;  сегмент:  s2  до:  s3 ;  сегмент:  s3  до:  s1 .  n  >  0  ifTrue: [ значение треугольника :  s1 значение: ( c middleOf: s1 и: s2 ) скрыть значение: ( c middleOf: s1 и: s3 ) скрыть значение: n - 1 . значение треугольника : ( c middleOf: s1 и: s2 ) скрыть значение: s2 значение: ( c middleOf: s2 и: s3 ) скрыть значение: n - 1 . значение треугольника : ( c middleOf: s1 и: s3 ) скрыть значение: ( c middleOf: s2 и: s3 ) скрыть значение: s3 значение: n - 1 ]] . значение треугольника : 0 @ 3 значение: 4 @ -3 значение: -4 @ -3 значение: 3 .
( c point: 0 @ 3 ) показать                                                       

Спираль Фибоначчи

Спираль Фибоначчи, запрограммированная [11] с геометрическими преобразованиями (вращение, трансляция и гомотетия). Точки a и b полученного интерактивного эскиза подвижны.

Вычисленная интерактивная спираль Фибоначчи
| canvas shape alfa fibo abms | canvas  :=  DrGeoSketch  new . alfa  := ( canvas  freeValue:  -90  degreesToRadians ) hide . shape  := [ : c  : o  : f |  | ep | 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: член Fn-1, f2: член Fn, o & c: начало и центр спирального рукава e: конец спирального рукава" f1  :=  f  первый . f2  :=  f  второй . f3  :=  f1  +  f2 . e  :=  значение формы :  c значение: o значение: f3 . c2 := ( масштаб холста : c центр: e фактор: f3 / f2 ) скрыть . k > 0 ifTrue: [ значение fibo : { f2 . f3 } значение: e значение: c2 значение: k - 1 ]] .                          a  :=  точка холста :  1 @ 0 . b := точка холста : -1 @ 0 . m := ( холст middleOf: a и: b ) скрыть . s := значение формы : m значение: a значение: 1 . значение формы : m значение: s значение: 1 . значение fibo : { 1 . 2 } значение: b значение: a значение: 10                                

Алгоритм Ньютона-Рафсона

Smalltalk sktech можно использовать для разработки интерактивного эскиза, иллюстрирующего метод численного анализа. Здесь алгоритм Ньютона-Рафсона в итерации из 5 шагов.

Вычислительный интерактивный алгоритм Ньютона-Рафсона
| эскиз f df xn ptA ptB | эскиз  :=  DrGeoSketch  new  axesOn . xn  :=  2 . f  := [ : x  |  x  cos  +  x ] . "Производная числа" df  := [ : x  | ( значение f :  x + 1e-8 ) - ( значение f : x ) * 1e8 ] . график эскиза : f от: -20 до: 20 . ptA := ( точка эскиза : xn @ 0 ) большой ; имя: 'Перетащи меня' . 5 раз Повторить: [ ptB := точка эскиза : [ : pt | pt точка x @ ( значение f : pt точка x )] родительский: ptA . ptB скрыть .	( сегмент эскиза : ptA до: ptB ) пунктирная стрелка вперед . ptA := точка эскиза : [ : pt | | x | x := pt точка x . x - ( ( значение f : x ) / ( значение df : x ) ) @ 0 ] родитель: ptB . ptA скрыть .	( сегмент эскиза : ptB до: ptA ) пунктирная стрелка вперед ] .                                                            

Языки локали

Smalltalk sketch может быть закодирован на родных языках, в настоящее время на французском и испанском. Можно добавить больше родных языков.

Награды

  • Премия ESUG за инновационные технологии (Амстердам, 2008 г.)
  • Премия AFUL Free Software Awards (Париж, 2000)

Смотрите также

Ссылки

  1. ^ CK Hung (2016). «Рисование параболической траектории объекта под действием силы тяжести» (PDF) . Получено 14 января 2024 г. .
  2. ^ А. Чентомо (2003). «Доктор Гео и геометрия Толемайка» (на итальянском языке) . Проверено 13 января 2024 г.
  3. ^ А. Чентомо, Ф. Кампора (2002). «Geometria e programmazione con Dr. Geo» (на итальянском языке) . Проверено 14 января 2024 г.
  4. ^ V. Freudenberg, Y. Ohshima, S. Wallace (2009). Etoys для одного ноутбука на ребенка . C5.2009. С. 57–67.{{cite conference}}: CS1 maint: несколько имен: список авторов ( ссылка )
  5. ^ G. Melo, A. Machado, A. Miranda (2014). «Влияние программы «Один ноутбук на ребенка» на обучение: данные из Уругвая» (PDF) . Получено 14 января 2024 г.{{cite web}}: CS1 maint: несколько имен: список авторов ( ссылка )
  6. ^ C. Whittum (2016). «Начните работу с Dr. Geo для геометрии». opensource.com . Получено 14 января 2024 г. .
  7. ^ JR Fernández García; C. Schnober (июнь 2006 г.). «Интерактивная геометрия с Dr. Geo MATH HELPER» (PDF) . Linux Magazine . Получено 14 января 2024 г. ..
  8. ^ А. Бассер (2011). «Доктор Гео, un docteur qui peut s'operer tout seul» [доктор. Гео, врач, который может сделать операцию самостоятельно] (на французском языке). revue.sesamath.net . Проверено 13 января 2024 г.
  9. ^ Видеоурок по скрипту Smalltalk
  10. ^ Видеодемонстрация на запрограммированном эскизе
  11. ^ H. Fernandes (март 2016 г.). "Спираль Фибоначчи" . Получено 6 января 2024 г.
Retrieved from "https://en.wikipedia.org/w/index.php?title=DrGeo&oldid=1228712293"