Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Визуализация механических систем, процессов и явлений: проектные задания с использованием Vpython

Покупка
Основная коллекция
Артикул: 786639.01.99
Доступ онлайн
317 ₽
В корзину
Учебное пособие предназначено для студентов вузов, изучающих современные курсы или разделы курсов, связанные с моделированием явлений, происходящих в деформируемых телах и средах, с использованием математических и компьютерных методов, основанных на динамике частиц и ее приложениях. Оно может также быть использовано в качестве дополнительной литературы при изучении бакалаврских и магистерских курсов по основам алгоритмизации, программированию, теоретической механике, математическому моделированию, современным концепциям естествознания и аналогичным дисциплинам.
Карякин, М. И. Визуализация механических систем, процессов и явлений: проектные задания с использованием Vpython : учебное пособие / М. И. Карякин ; Южный федеральный университет. - Ростов-на-Дону ; Таганрог : Издательство Южного федерального университета, 2021. - 244 с. - ISBN 978-5-9275-3827-0. - Текст : электронный. - URL: https://znanium.com/catalog/product/1894439 (дата обращения: 25.04.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ 
РОССИЙСКОЙ ФЕДЕРАЦИИ 
Федеральное государственное автономное образовательное  
учреждение высшего образования 
«ЮЖНЫЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ» 
 
 
                                                                                                              
 

 

 

 

М. И. Карякин 
 
Визуализация механических систем,  
процессов и явлений:  
проектные задания с использованием VPython 
  

 
Учебное пособие 
 
 
 
 
 
 
 
 
                                              
Ростов-на-Дону – Таганрог 
Издательство Южного федерального университета 
2021 

УДК [532.5+539.3]:004.424(075.8) 
ББК 22.251+22.253+32.973 я73 
    К27            
 
Печатается по решению кафедры теории упругости 
Института математики, механики и компьютерных наук им. И. И. Воровича 
Южного федерального университета (протокол № 9 от 26 апреля 2021 г.) 

  
 

Рецензенты: 

заведующий кафедрой «Теоретическая и прикладная механика»  

Донского государственного технического университета, 

доктор физико-математических наук, профессор А. Н. Соловьев; 

 

профессор теоретической и компьютерной гидроаэродинамики  

Южного федерального университета,  

доктор физико-математических наук, профессор М. А.Сумбатян 

  
 

 
      Карякин, М. И. 
К27 
 Визуализация механических систем, процессов и явлений:                  
проектные задания с использованием Vpython : учебное пособие / 
М. И. Карякин ; Южный федеральный университет. – Ростов-на-
Дону ; Таганрог : Издательство Южного федерального университета, 
2021. – 244 с. 
ISBN 978-5-9275-3827-0 
 
 
Учебное пособие предназначено для студентов вузов, изучающих современные 
курсы или разделы курсов, связанные с моделированием явлений, происходящих 
в деформируемых телах и средах, с использованием математических и компьютерных 
методов, основанных на динамике частиц и ее приложениях. Оно может 
также быть использовано в качестве дополнительной литературы при изучении бакалаврских 
и магистерских курсов по основам алгоритмизации, программированию, 
теоретической механике, математическому моделированию, современным концепциям 
естествознания и аналогичным дисциплинам.  

 

УДК [532.5+539.3]:004.424(075.8) 
ББК 22.251+22.253+32.973 я73 
ISBN 978-5-9275-3827-0 

 
   
© Южный федеральный университет, 2021 
© Карякин М. И., 2021 

ПРЕДИСЛОВИЕ

Учебное пособие было написано для слушателей курса «Динамика 

частиц и ее приложения», реализуемого в Южном федеральном 
университете в рамках магистерской программы «Фундаментальная 
математика, механика и математическое моделирование», с целью 
познакомить их с базовыми возможностями пакета VPython
для 

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

Представленный материал будет полезен изучающим современные 

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

Две главы этого пособия можно считать в каком-то смысле 

информационными. Глава 1 «Использование пакета VPython для создания 
3D-анимаций» 
содержит 
подробное 
описание 
основных 
функций 

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

Глава 3 «Моделирование движения механических систем» посвящена
краткому описанию вычислительных алгоритмов, рекомендованных для 
использования 
при 
выполнении 
проектных 
заданий. 
Алгоритмы

проиллюстрированы
их применением к моделированию динамики 

нескольких механических систем. Визуализация процессов при этом 
осуществляется с использованием VPython.

Остальные главы содержат постановки проектных заданий, которые 

могут выполняться как индивидуально, так и небольшими группами 
обучающихся. Таких заданий –
четыре: «Визуализация молекулы», 

«Пружинная модель твердого тела», «Небесная механика», «Знакомство с 
молекулярной динамикой». Все главы с проектными заданиями имеют 
похожую структуру. В разделе «Формулировка задания» содержится 
постановка задачи, набор требований к методам решения и ожидаемым 
результатам, параметры отчета и т. п. В этом же разделе приводятся 
несколько 
(порядка 
двадцати) 
вариантов 
проектных 
заданий. 

Предполагается, что номер задания для каждого обучающегося или группы 
определяется преподавателем. Следующий раздел, «Базовые сведения», 
содержит общую информацию по теме проектного задания, в ряде случаев 
выходящую за рамки конкретной задачи. Первичная цель этого раздела –
снабдить обучающегося основными методиками и алгоритмами для 
выполнения задания. Более общая, и не менее важная цель состоит в том, 
чтобы очертить предметную область, связанную с конкретной задачей, 
познакомить с существующими в этой области проблемами и актуальными 
технологиями. Размер этого раздела может варьироваться в зависимости от 
типа проектного задания. Третий раздел – «Пример выполнения задания» –
содержит текст или фрагменты текста программы, демонстрирующий 
решение основных типовых проблем, возникающих при реализации 
проекта, а также комментарии к приведенному коду.

Завершая краткое предисловие, нужно еще ответить на естественный 

вопрос:
почему в качестве средства реализации вычислительных 

алгоритмов и визуализации механических процессов выбран язык Питон? 

Причины достаточно просты и лежат на поверхности. Питон сегодня

де 
факто 
является 
своеобразным 
эсперанто
современной 

междисциплинарной науки. Специалисты в области математического 
моделирования, физики, астрономии, химии, биологии, биоинформатики, 
лингвистики, машинного обучения, анализа данных, статистики «говорят» 

на этом языке, в том смысле, что количество пакетов и библиотек Питона,
ориентированных на эти и многие другие сферы
исследований, 

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

динамики, библиотеки визуализации структуры химических веществ, 
полностью разработанные на Питоне, или использующие Питон в качестве 
интерфейсного средства. Не случайно поэтому, что практически во всех 
известных «рейтингах» современных языков программирования Питон 
уверенно входит в тройку лидеров. Например, июньский рейтинг Tiobe
2021 года1 озаглавлен так: «Питон как никогда оказался близок к первому 
месту» (Python has never been so close to position #1 before). В процессе 
выполнения разнообразных проектных заданий, представленных в данном 
пособии, обучающиеся могут достаточно быстро познакомиться с мощью 
и гибкостью этого языка, что позволит им впоследствии успешнее 
ориентироваться и погружаться в самые различные области современной 
прикладной математики и информатики. Завершая ответ, приведем цитату
из статьи
в Википедии, посвященной этому языку 2 :
«За счёт 

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

Все приведенные в данном учебном пособии программы носят 

исключительно демонстрационный характер. Так, в них практически 
отсутствуют операторы ввода (все необходимы параметры задаются прямо 
в тексте программ), не проводится никакой проверки на возможные
ошибки, отсутствует анализ исключений. Это связано и с желанием 
сэкономить место, и с тем, что приведенный код, как правило, 
иллюстрирует 
какую-то 
одну 
вычислительную 
идею 
или 
схему 

визуализации. Ну и кроме того, в данном случае пользователь и 
программист являются 
одним 
и 
тем 
же 
лицом. 
И 
если 
этот 

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

сообщения
об 
ошибках 
времени 
выполнения.
Чтобы 
исключить 

1 https://www.tiobe.com/tiobe-index/
2 https://ru.wikipedia.org/wiki/Python

дублирование и уменьшить объем пособия, из текстов программ удалена
часть
комментариев, 
поскольку 
они 
присутствуют 
в 
тексте, 

сопровождающем фрагменты кода. 

Большая часть приведенных литературных источников находится в 

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

ГЛАВА 1. ИСПОЛЬЗОВАНИЕ ПАКЕТА VPYTHON 

ДЛЯ СОЗДАНИЯ 3D-АНИМАЦИЙ

ВВЕДЕНИЕ

Библиотека VPython предназначена для существенного облегчения 

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

динамические 
иллюстрации 
к 
учебным 
курсам, 
визуализировать 

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

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

Проект VPython был начат Давидом Шерером (David Scherer) в 2000 

году. В 2011 году вместе с Брюсом Шервудом (Bruce Sherwood) они 
начали разрабатывать среду GlowScript – программную оболочку для 
VPython, работающую в окне браузера. С 2014 года в среде GlowScript 
стало возможно использовать язык программирования RapidScript, очень 
близкий к стандартному Питону. Одновременно с этим группой 
программистов под руководством Джона Коуди (John Coady) началось 
продолжающееся и по сей день развитие пакета VPython 7, являющегося 
классической библиотекой для стандартного Питона, позволяющего тем 
самым использовать любые другие библиотеки Питона, в том числе и 
сторонние.

VPython 7 поначалу был ориентирован на применение в известной 

среде Jupyter notebook. С 2017 года использующие этот пакет программы 
могут запускаться из стандартной среды IDLE или из Spyder, при этом 
окно с 3D-анимацией отображается во вкладке системного браузера.

В настоящее время разработчики развивают и поддерживают обе 

версии своего продукта: и GlowScript VPython, и VPython 7. Обе 
реализации используют одну и ту же библиотеку трехмерной графики 
WebGL, которая позволяет решать достаточно сложные задачи построения 

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

Что касается выбора одной из двух версий, то в последнее время 

новые пользователи VPython (а это, как правило, студенты)
чаще 

выбирают браузерную реализацию, т.е GlowScript. Основной причиной 
такого 
выбора 
является, 
по-видимому, 
отсутствие 
необходимости 

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

пользуются профессионалы-исследователи, преподаватели и разработчики 
научного ПО, поскольку им для работы часто необходима вся мощь 
питоновских библиотек, которые не могут быть доступны 3 в среде 
GlowScript, основанной на JavaScript.

В современной зарубежной учебной литературе по механике и 

физике VPython используется очень широко; примером этому могут 
служить школьные курсы физики [1.7], целые университетские курсы [1.6, 
1.10] или отдельные
лабораторные практикумы [1.9]. Что касается 

русскоязычной литературы по этому пакету, то ее количество достаточно 
ограничено; безусловного упоминания в этой связи заслуживают работы 
Е. Е. Германовой [1.1, 1.2].  Данная глава настоящего пособия, призванная 
в какой-то мере исправить ситуацию, основывается, прежде всего, на 
официальном руководстве по пакету [1.5] и некотором опыте автора.

ПЕРВОЕ ЗНАКОМСТВО

Установка. Чтобы начать работать с браузерной версией VPython, 

необходимо зарегистрироваться на сайте glowscript.org, а затем в разделе 

MyPrograms выбрать ссылку на ваши программы, а затем щелкнуть на 

3
Исключением является модуль random, реализованный и поддерживаемый 

компилятором RapidScript-NG. Кроме того, распространенные математические функции 
интегрированы в VPython, поэтому для их вызова не обязательно использовать модуль math. 

ссылку Create New Program (создать новую программу). В окне браузера 
появится пустая страница создания новой программы с единственной 
строчкой вида 

GlowScript 3.0 VPython. 

Код программы вводится, начиная со второй строчки; для ее 

выполнения используется пункт меню Run this program.

Для использования VPython как модуля Питона его сначала следует 

установить. Этот процесс может оказаться не совсем простым, он 
реализован по-разному для разных дистрибутивов Питона. Далее в этом 
пособии будем полагать, что VPython устанавливается на стандартный 
дистрибутив Питона 3.xx, загруженный с сайта www.python.org. В этом 
случае установка модуля может быть осуществлена командой 

> pip install vpython

Процесс инсталляции гарантированно пройдет успешно4 при условии, что 
в системе установлен компилятор Visual Studio языка C++. Подробный 
обзор остальных вариантов установки дан в официальной документации по 
пакету https://vpython.org/presentation2018/install.html

Подключение модуля VPython к программе на языке Питон

осуществляется стандартным образом, например

from vpython import *

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

подключения модуля VPython.

Холст. Как и большинство графических библиотек, пакет VPython 

при отображении трехмерных объектов на экране использует концепцию 
«холста» (canvas). Его центр имеет координаты (0, 0, 0), ось x направлена 
вправо, ось y – вертикально вверх (как в учебниках по математике), а ось z
направлена перпендикулярно экрану в сторону зрителя (рис. 1).

4 Начиная с версии 7.6 (январь 2020 года) в большинстве случаев установка для 

операционных систем Windows 7 и Windows 10 осуществляется успешно и при отсутствии 
этого компилятора

По умолчанию холст масштабируется автоматически так, чтобы 

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

Рис.  1. Система координат VPython

В качестве примера отображения графики на рисунке 2 приведен 

результат выполнения следующего кода5, создающего холст белого цвета 
разрешением 500х400 пикселей (строчки 1–2) и изображающего на нем 
красный параллелепипед (строчки 3–4) и зеленый шар (строчки 5–6).

Фрагмент кода 1

1
2
3
4
5
6

scene = canvas(width=500,height=400,

background=vector(1,1,1))

redbox = box(pos=vector(0,0,0),

size=vector(8,4,6), color=color.red)

ball = sphere(pos=vector(0,6,0),

radius=2, color=color.green)

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

перемещения «камеры», то есть позиции наблюдателя, необходимо нажать 
правую кнопку мыши в пределах холста и, удерживая ее, перемещать 
указатель. Аналогичного эффекта можно добиться при удерживании 
клавиши Ctrl и перемещении указателя при нажатой левой кнопки мыши. 
Перетаскивание левой кнопкой мыши при зажатой клавише Shift приводит 
к перемещению камеры в одной плоскости (изображение при этом 
движется «параллельно» экрану). Удалять или приближать изображение 

5 Как было отмечено выше, во всех примерах кода опущена строчка
from vpython import *

Доступ онлайн
317 ₽
В корзину