И вот тут то я загрустил. С одной стороны грусть навевали однокурсники, которые не в зуб ногой (были, которые и в зуб, но в подавляющем меньшинстве), с другой — софт на крайне устаревшей технологии. Во мне эта ситуация вызывала протест. Я только буквально недавно недавно освоился в Delphi и написал наброски 3D шутера под OpenGL, а тут — такое. Ну и захотелось мне выпендриться, показать какой я молодец, уделать всех. Юношеский максимализм пёр изо всех щелей.
Первые робкие попытки заключались в реализации программ из методички на Delphi, потом я пытался сделать аналоги программ преподавателя, а в итоге меня осенило: нужно объединить весь этот софт под крылом одной программной среды, а лучше… а лучше вообще к чертям всё переписать, создав одну большую программу, в которой будет куча различных физических опытов! Я не ставил целей сделать что-то коммерчески успешное или просто кому-то нужное, в то время я программировал чисто для души.
Это был первый мой крупный проект. Было много периодов апатии, чередующихся с периодами вдохновлённости и оптимизма. В конце концов, спустя пол года, на свет родился он — проект, который я незамысловато назвал по его сути, — Комплекс Физических Программ.
Комплекс Физических Программ — это программная среда, комплекс, включающий в себя десять опытов по различным физическим процессам. Написан он был мной на Delphi 7 с использованием OpenGL 1.1
Идея сделать вот такое меню выбора опытов в виде полноэкранной карусели с их скриншотами пришла как-то спонтанно, но очень крепко засела в голову. И даже сейчас, спустя десять лет, я не могу налюбоваться этой реализацией.
Физик из меня не особо шумный, потому каких-то вау-опытов тут нет. Всё, что реализовано, — сводится к банальнейшим вычислениям, потому и было выбрано мной для реализации.
В конце того года у нас на факультете была олимпиада, состоявшая из двух частей. На первой части толпа студентов сидит пилит задачки в компьютерном классе. Вторая часть заключалась в домашей работе — т.е. нужно было принести что-то, созданное вне стен вуза. Ясное дело, я принёс свой Комплекс, и… получил второе место. Не знаю, как так вышло, но мне сверху дали дополнительный приз конкретно за эту программу.
После — я несколько раз пытался взяться за версию 2.0, но каждый раз руки опускались. А сейчас, если честно, я в этом и не вижу смысла. Эта программа дала мне большой опыт в разработке завершённых проектов и оставила приятные воспоминания о студенческой жизни, и я, что скрывать, горжусь тем, что тогда её создал.
Скачать её можно на моём сайте по этой ссылке: nightmarez.net/physics
Для работы требуется x86 и Windows любой неископаемой версии.
Комментарии (22)
sim-dev
24.06.2015 10:05+4Как много хорошего было сделано на голом энтузиазме! Примерно в ту пору, когда автор заметки пошел в школу, я тоже делал на энтузиазме некое подобие Autocad с ориентацией на проектирование электросхем. В ту далекую пору компьютер, на котором настоящий Autocad запускался и нормально работал, был дефицитом в организации, где я работал, больше было 286-х компьютеров (вообще слыхали про такие?!). Так вот, в связи с тем, что по работе было необходимо рисовать схемы по ЕСКД (Autocad в ту пору, кстати, не очень соответствовал ЕСКД), для облегчения собственного труда и труда коллег я не придумал ничего лучше, как написать свой «автокад»… Рабочим инструментом был Borland Pascal 7, Delphi тогда еще не родилась. Работало все под управлением Windows 3.11 (к моменту завершения проекта уже появился в нашем отделе 486-й компьютер, но Autocad он тянул плоховато все равно). Было сделано много относительно «инновационных» на тот момент фич: drag-n-drop графических примитивов, многоуровневый буфер обмена, графика в меню, всплывающие подсказки, печать с предпросмотром и разбиением на несколько листов… Кто помнит ПО тех лет, должен согласиться, что и фирменный софт не всегда обладал всеми этими возможностями — Autocad точно не обладал.
Самое удивительное, что моей программой отдел пользовался вплоть до 2008-го года! Но с широким распространением Windows XP на офисных компах мой EasyCAD умер из-за несовместимости…
К сожалению, никаких доказательств предъявить не могу: недавно нашел exe-шник на дискетах 5", так выяснилось, что больше нет компьютеров с такими дисководами…jaguard
24.06.2015 12:29Что-то вы странное пишете. 10-й автокад прекрасно работал на 80286. Для соответствия ЕСКД под этот десятый писались программы на лиспе — впрочем, кажется это была внутренняя разработка НИИ, из которого потом списанный 286 приехал и стал моим первым компьютером.
Не умаляя проделанный труд — на паскале, в текстовом режиме 80x25, написать что-то работающее — воистину великое достижение.geran_utran
24.06.2015 16:32Стандартизацию под ЕСКД в Автокад, в те года практически каждая организация писала себе сама. По крайней мере в наших краях было так. Мы помню даже реализацию функции Полилиния, были вынуждены как то доделывать лиспом :)
nemilya
24.06.2015 10:17Классный проект!
Думаю с такими программами изучение предметов становится более интересным.
Надеюсь кто-то найдет интересным перевести программу (идею) на wxPython, matplotlib и PyOpenGL. Так же V-REP мог бы помочь в некоторых дисциплинах.
Разработка такого плана учебных проектов — само по себе полезно)
Sadler
24.06.2015 11:15+1Идея сделать вот такое меню выбора опытов в виде полноэкранной карусели с их скриншотами пришла как-то спонтанно, но очень крепко засела в голову. И даже сейчас, спустя десять лет, я не могу налюбоваться этой реализацией.
Отрисовка Win+Tab в современных виндах чем-то похожа.NightmareZ Автор
24.06.2015 18:55Да, похожа. Кстати, оболочка очень понравилась нашему физику и я ему сделал такую же для его программ, только уже на DirectX (чисто ради своего развития). Я подумывал сделать ещё несколько рядов программ, т.е. чтоб карусель была многоуровневой. Но не сложилось.
Gorthauer87
24.06.2015 11:16Было бы интересно какие-то технические подробности послушать)
NightmareZ Автор
24.06.2015 18:49Дело в том, что там не так уж много каких-то подробностей, о которых можно бы было рассказывать: всё сделано банально до безобразия методом «в лоб». Есть основная программа, скомплированная в .exe и есть десяток модулей, скомпилированных в .dll. Основная программа дёргает определённую функцию из dll, тем самым активируя модуль. Когда работа модуля завершается — управление передаётся назад основной программе. Каждый модуль — по сути отдельная полноценная программа, только в dll. Есть общая библиотека engine.dll, в которую собраны функции, используемые всеми модулями и основной программой. В основном эти функции касаются работы с 3D графикой. Текстуры лежат в виде dat-файлов, которые представляют собой сырые массивы rgb-пикселей. В недрах есть утилитка videoinfo.exe, выводящая информацию о поддерживаемой дровами версии OpenGL. Ну вот и всё вроде.
vdmitriyev
24.06.2015 11:26Спасибо за статью. Спасибо что поделились. На первый взгляд у вас реализация просто замечательная и как раз в духе своего времени (Delphi + OpenGL). Мы тоже с небольшой группой студентов и преподавателем физики начали подобный проект под названием Виртуальные Физические Лаборатории где-то более 3 лет назад, потом правда проект заморозился на некоторое время. В качестве основных технологий тогда были взяты C# + XNA Framework (который к сожалению уже не поддерживается, но есть порт из XNA в HTML5, по крайней мере 3D моделей). Критерии выбора XNA были связаны прежде всего с простотой использования и наличие опыта разработки на .NET у студентов-разработчиков. Основная цель проекта была и остается простой — перешагнуть дефицит с наличием физического оборудования во время обучения физики на не профильных технических специальностях (в нашем конкретном случае это были и остаются в основном IT специалисты). Всего было реализовано 6 разных физических лабораторий 5 из них 3D формата. Теперь вот активно думаем направлениями для дальнейшего развитие.
vdmitriyev
24.06.2015 19:23+1Спасибо за интерес. Частично можно увидеть как выглядят работы на буквально недавно поднятом сайте тут — pvl.iitu.kz. Там пока только краткое описание, плюс скриншоты, но думаю что хотя бы основное понимание как все выглядит будет.
Janom
25.06.2015 01:36Если не ошибаюсь, нечто подобное, во времена техникума видел на делфисёрс.ру в разделе исходники, не ваших рук дело там лежит? (поискать не могу сейчас, слишком с интернетом плохо всё)
NightmareZ Автор
25.06.2015 01:47+1Да, было дело, выкладывал.
Вот ещё на гитхабе есть сорцы, если интересно: github.com/NightmareZ/MakarovPhysics
ignat99
25.06.2015 20:21Вот тут 200 основных физических законов, которые автоматически сгенерированы этим скриптом.
3D редактор с рендирингом как в 3D MAX довелось сделать в 1996 году. А в 2000 на основе OpenGL делал диплом с 3D оболочкой для работы с данными, представленными в виде графов (3D).
И обратите внимание на этот проект, если будет желание заняться прикладной физикой для микроэлектроники.vdmitriyev
26.06.2015 15:55Спасибо большое за ваш пост. Выглядит очень интересно, но пока мне не очень понятно как именно все работает. Я посмотрел видео которые у вас в описании, после него стало больше понятно. Хотел попробовать демо о котором вы говорите, но оно не запускается (я про это — mc.homedevice.pro). К сожалению у меня нет рабочей среды Perl-а чтобы быстро развернуть ваш скрит и посмотреть как он работает. Но даже если я его разверну, я все равно не буду уверен что он сможет работать с Sympy и Python как это показано у вас в вашей презентации (что на видео). Если у вас есть какие-то другие записанные видео, или публикации с более детальным описанием работы, было бы просто здорово их посмотреть (это не открывается — zornica.tk/ignat99.pdf).
ignat99
26.06.2015 17:40Послал вам по личному адресу pdf файл. Скрипт на Perl был написан около 7 лет назад. Он только генерирует формулы, которые можно подставить в модел на JS или в Sympy/GA. Интеграцию с Sympy я ещё не сделал (7 лет назад не было Sympy/GA).
vdmitriyev
26.06.2015 18:08Если так давно делали, то тогда имеет смысл интегрировать с Sympy (если есть время). Он в последнее время (несколько лет развивался в рамках Google Summer of Code) очень сильно шагнул вперед и много что умеет «из коробки».К примеру Sympy умеет очень неплохо отображать свои формулы в LaTex, MathML или MathJAX. Тут есть самописный небольшое пример, как из набора формул получить сохраненных в файле получить HTML или TEX с более-менее нормальным отображением — github.com/vdmitriyev/pycsvtoequation.
К сожалению ваш pdf я не получил.
vit1251
27.06.2015 16:18Как же странно, но у меня для пред защиты дипломного проекта быласделана совершенно такая же работа m.youtube.com/watch?v=PCv3jiHEPMc
svfat
Мощно, а что же тогда взяло первое место на олимпиаде?
NightmareZ Автор
Насколько мне удалось узнать, там была наколенная поделка, и в подмётки не годившаяся моему проекту. А первое место он якобы занял за очный этап олимпиады.