P.S.Euclid — GeoGebra + Desmos + то, что сам хотел (Plane + Stereo, Euclid)

от автора

Ещё в начале карьеры учителя физики не нашёл тупого быстрого инструмента создания графиков. Тут бы пояснить, что графики, которые мне были нужны, без проблем можно было создавать с помощью привычных всем программ, но это было долго. А я всего-то хотел, чтобы была возможность быстро создавать графики с подписями к осям, единицами измерения и строить линии по точкам, например для кинематики.

Сначала хотел чтобы мне такую программку написал школьник активный в информатике в рамках проектной деятельности. Но мои желания возникли вместе с наступлением вайбкодинга, а школьники не самые надёжные товарищи😏, так что решил сделать сам. Ровно то, что и хотел мне написал Claude за 2 минуты. А потом я подумал, а почему бы не сделать geogebra+desmos+мои личные фишки, раз вайбкодинг такие возможности стал давать. Начал долгий путь в Claude. Где-то неделю по 2-3 часа внесение+тестирование+debugging и… меня заблокировали. Видимо поняли, что я из России. Продолжил на новой версии Grok, но он что-то пока не очень. Gemini тоже не тянет, китайские пока тоже не всё хорошо делают. Спасибо ChatGPT за их интернациональность😏. Последняя Sol 5.6 неплохо справилась. А Claude что-то совсем жестить стали, я создал новый аккаунт, всего два тестовых чата по фигне и уже через 5 часов заблокировали.

Продукт:

https://alphabet-physics.ru/p-s-euclid/

Описание:

Приложение состоит из двух основных рабочих режимов — 2D и 3D. В обоих режимах слева находятся выражения, параметры и список созданных объектов, а основную часть окна занимает интерактивный холст. Объекты можно выделять, перемещать, скрывать, перекрашивать, переставлять по слоям и редактировать через карточку свойств.

Главный принцип P.S.Euclid — любое построение должно оставаться живым. Если изменить исходную точку, параметр или формулу, все зависимые объекты пересчитываются автоматически.

Выражения и графики

Редактор выражений поддерживает несколько способов задания математических объектов:

  • обычные функции вида y=f(x);

  • функции вида x=f(y);

  • полярные кривые;

  • параметрические кривые;

  • неявные уравнения, например x²+y²=16;

  • неравенства и системы неравенств;

  • цепочки сравнений;

  • наборы точек;

  • трёхмерные функции и поверхности;

  • параметрические и неявные объекты в 3D.

Синтаксис сделан близким к привычной математической записи. Знак умножения можно опускать: приложение понимает 2x, 3sin(x) и похожие конструкции. Поддерживаются тригонометрические и обратные тригонометрические функции, логарифмы, экспонента, модуль, корни, гиперболические функции, округление, минимум, максимум и другие операции. Есть константы π и e, а также пользовательские функции.

У каждого выражения настраиваются цвет, видимость, толщина и тип линии, прозрачность, диапазоны параметров и условие отображения. Например, отдельный объект можно показывать только при определённом значении параметра.

Числа внутри формулы можно автоматически превратить в буквенные параметры. После этого для них появляются слайдеры с настраиваемыми минимумом, максимумом и шагом. Параметры можно менять вручную или запустить их автоматическое движение, превратив статическое построение в анимацию.

Для функций вида y=f(x) приложение умеет отмечать особые точки: нули, экстремумы, пересечения графиков и пересечение с осью ординат. Координаты найденных точек подписываются непосредственно на холсте.

Данные и аппроксимация

Помимо формул, P.S.Euclid работает с экспериментальными данными. Точки можно вводить вручную, создавать кликами по координатной плоскости или импортировать из CSV-файла.

Для набора точек доступна аппроксимация. Полученная модель добавляется на сцену как самостоятельное выражение и перестраивается вместе с исходными данными. Это позволяет использовать приложение не только для иллюстрации готовых функций, но и для обработки результатов измерений, лабораторных работ и небольших учебных исследований.

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

Динамическая геометрия в 2D

Второй крупный блок приложения — геометрический редактор.

В нём доступны свободные точки, точки на объектах, середины отрезков и точки пересечения. Можно строить:

  • отрезки, прямые, лучи, векторы и ломаные;

  • перпендикулярные и параллельные прямые;

  • серединные перпендикуляры и биссектрисы;

  • касательные;

  • многоугольники и правильные многоугольники;

  • окружности несколькими способами;

  • дуги, полуокружности и секторы;

  • эллипсы, параболы, гиперболы и коники по пяти точкам.

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

Построения являются зависимыми. Например, прямая, проведённая через две точки, будет следовать за ними; точка пересечения переместится при изменении исходных объектов; окружность изменит радиус вместе с задающим её отрезком. При удалении родительского объекта приложение корректно обрабатывает зависящие от него элементы.

Есть и геометрические преобразования: отражение относительно прямой или точки, перенос, поворот, масштабирование и инверсия относительно окружности.

Инструмент геометрического места точек позволяет выбрать движущуюся точку и зависимый от неё объект, после чего приложение просчитывает траекторию движения. Для отдельных точек можно включить след — на холсте будет постепенно накапливаться пройденный путь.

Рисование и оформление

Математическую сцену можно дополнять обычными графическими элементами.

В приложение встроены карандаш, ластик, текстовые подписи, вставка изображений и инструмент распознавания нарисованных фигур. Если от руки провести достаточно прямую линию, она превращается в отрезок. Замкнутый контур может быть распознан как окружность или многоугольник.

Подписи осей и текстовые объекты поддерживают расширенный TeX-lite. Можно записывать дроби, корни, суммы, интегралы с пределами, векторы, акценты, системы уравнений, матрицы, масштабируемые скобки и математические символы. Это позволяет оформлять на одном холсте не только чертёж, но и практически полноценное объяснение решения.

На сцену также можно добавлять интерактивные элементы: кнопки, слайдеры, флажки и поля ввода. Они связываются с параметрами построения и позволяют превращать обычный чертёж в небольшую интерактивную модель или учебный тренажёр.

Настройка координатной системы

Координатная плоскость настраивается независимо от самих объектов.

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

Поддерживаются линейные и логарифмические шкалы. Логарифмический режим можно включить отдельно для каждой оси, поэтому доступны как полулогарифмические, так и log-log графики.

Для физических и прикладных задач предусмотрен выбор отображаемых квадрантов. Например, можно оставить только область положительных значений обеих координат.

Ещё одна возможность — разрывы осей. Они позволяют убрать из изображения неинформативный диапазон и одновременно показать удалённые друг от друга участки графика. При добавлении разрыва приложение автоматически расширяет рабочий диапазон, не меняя выбранный пользователем масштаб оставшейся части.

Переход между 2D и 3D

Двумерный и трёхмерный режимы не изолированы друг от друга.

Видимые 2D-объекты можно перенести в пространство, поместив их в плоскость XY при z=0. Точки, прямые, многоугольники, окружности и графики становятся частью трёхмерной сцены.

Обратная операция проецирует 3D-объекты на плоскость XY. Это удобно, когда пространственное построение нужно использовать как основу для плоского чертежа или иллюстрации.

Геометрия в пространстве

В 3D-режиме можно создавать точки, середины, отрезки, лучи, прямые, векторы и пространственные многоугольники.

Поддерживаются плоскости, параллельные и перпендикулярные плоскости, линии пересечения двух плоскостей, точки пересечения прямой и плоскости, расстояния и пространственные сечения.

Из объёмных объектов доступны кубы, призмы, пирамиды, конусы, цилиндры и сферы. Часть тел можно построить как готовый объект с числовыми параметрами, а часть — непосредственно по точкам на сцене.

Объекты редактируются не только через числовые поля. Для них предусмотрены визуальные манипуляторы:

  • стрелки перемещения вдоль координатных осей;

  • кольца поворота вокруг локальных осей;

  • свободное вращение с помощью аркбола;

  • интерактивное масштабирование.

Камеру можно свободно вращать, а также переключать на фронтальный, горизонтальный и профильный виды. Для учебных чертежей предусмотрен «школьный» стиль отображения тел: невидимые рёбра показываются пунктиром, а прозрачность граней регулируется отдельно.

Универсальные 3D-пересечения

Одна из центральных возможностей P.S.Euclid — поиск пересечений между пространственными объектами разных типов.

В одной операции можно использовать как геометрические объекты, созданные инструментами, так и кривые или поверхности, заданные формулами. Поддерживаются пересечения:

  • параметрических кривых;

  • неявных кривых;

  • пространственных ломаных;

  • плоскостей и ограниченных многоугольников;

  • сфер и других аналитических поверхностей;

  • полигональных тел и mesh-объектов;

  • кривых с поверхностями и телами;

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

Для классических геометрических комбинаций используются специализированные точные алгоритмы. Например, отдельно обрабатываются пересечения прямых, плоскостей и сфер.

Для общего случая работает численное ядро. Оно приводит выбранные объекты к унифицированному представлению, ищет кандидатов в пределах текущего диапазона координат, уточняет корни и удаляет дубликаты.

Результат пересечения добавляется на сцену как зависимая точка. Если изменить формулу, положение тела или значение параметра, точка будет рассчитана заново.

Для численных пересечений предусмотрены три режима качества:

  • быстро — для интерактивного предварительного просмотра;

  • обычно — основной режим работы;

  • точно — для касаний, маленьких компонентов и сложных тел.

Во время тяжёлого вычисления появляется индикатор прогресса с названием операции, процентом выполнения и затраченным временем. Это особенно важно для браузерного приложения: пользователь видит, что процесс продолжается, а не принимает расчёт за зависание интерфейса.

Карточка найденной точки показывает применённый метод, время вычисления, величину невязки и информацию о достижении вычислительного лимита. Из неё же можно принудительно пересчитать результат или запустить встроенный self-test численного ядра.

Тела, развёртки и сечения

Для конуса, цилиндра, параллелепипеда, призмы и пирамиды можно построить не только трёхмерную модель, но и плоскую развёртку в равном масштабе.

Приложение автоматически создаёт сектор боковой поверхности конуса, прямоугольник для цилиндра, крестообразную развёртку параллелепипеда и набор граней для призмы или пирамиды.

Есть и анимированная развёртка. Ползунок постепенно раскрывает грани тела в плоскость или, наоборот, складывает их обратно. Это позволяет наглядно показать связь между пространственным телом и его плоской выкройкой.

Отдельный инструмент строит сечение тела плоскостью. Можно выбрать направление, перпендикулярное одной из координатных осей, и задать смещение. Контур сечения рассчитывается по граням тела и обновляется при изменении параметров.

Экспорт и сохранение результатов

Изображение холста можно целиком скопировать в буфер обмена. Также доступно копирование произвольной прямоугольной области.

Для печати предусмотрен режим разбиения большого чертежа на листы A4 в реальном масштабе. Получившиеся страницы можно распечатать и склеить в единый плакат.

Экспорт в PDF работает в двух вариантах. Векторный режим сохраняет чёткие масштабируемые линии, а растровый передаёт изображение точно в том виде, в котором оно отображается на экране, включая кириллицу и сложное оформление.

Есть отдельный чёрно-белый режим, удобный для печати учебных материалов. При его включении исходные цвета объектов не удаляются из проекта.

Анимацию параметров можно записать в видеофайл WebM. Это позволяет сразу получить демонстрационный ролик без использования программы для захвата экрана.

Сцена сохраняется в JSON-файл и позднее открывается со всеми выражениями, параметрами, объектами, зависимостями и настройками вида. Дополнительно работает автоматическое сохранение в браузере. При следующем открытии приложение восстанавливает последнюю сцену.

Для большинства действий доступны отмена и возврат изменений как через кнопки, так и через стандартные сочетания клавиш.

Интерфейс и встроенная справка

Несмотря на количество функций, для каждого инструмента предусмотрена контекстная справка.

Если зажать Q или русскую Й и навести курсор на элемент интерфейса, появляется описание его назначения. Элемент подсвечивается, но его обычное действие не выполняется. Полное руководство открывается клавишей F1, знаком вопроса или отдельной кнопкой. В руководстве есть поиск.

В приложении также предусмотрена форма отправки сообщения об ошибке. Пользователь может указать категорию проблемы, описать действия для воспроизведения и при необходимости приложить снимок математического холста.

Что в итоге

P.S.Euclid объединяет сразу несколько классов программ:

  • построитель графиков;

  • редактор динамической геометрии;

  • средство визуализации данных;

  • трёхмерный геометрический редактор;

  • численный инструмент поиска пересечений;

  • конструктор интерактивных учебных моделей;

  • средство подготовки иллюстраций, раздаточных материалов и анимаций.

При этом формулы и геометрия не существуют в отдельных мирах. График можно использовать вместе с геометрическими объектами, двумерное построение — перенести в пространство, поверхность — пересечь с созданным вручную телом, а результат связать со слайдером и записать в виде анимации.

Ваше величество вайбкодерство😏. Юмор, это я не про себя)

ссылка на оригинал статьи https://habr.com/ru/articles/1060358/