Site Loader

Часть 14 — Нестандартное введение в динамику твердого тела / Хабр


  1. Что такое тензор и для чего он нужен?
  2. Векторные и тензорные операции. Ранги тензоров
  3. Криволинейные координаты
  4. Динамика точки в тензорном изложении
  5. Действия над тензорами и некоторые другие теоретические вопросы
  6. Кинематика свободного твердого тела. Природа угловой скорости
  7. Конечный поворот твердого тела. Свойства тензора поворота и способ его вычисления
  8. О свертках тензора Леви-Чивиты
  9. Вывод тензора угловой скорости через параметры конечного поворота. Применяем голову и Maxima
  10. Получаем вектор угловой скорости. Работаем над недочетами
  11. Ускорение точки тела при свободном движении. Угловое ускорение твердого тела
  12. Параметры Родрига-Гамильтона в кинематике твердого тела
  13. СКА Maxima в задачах преобразования тензорных выражений. Угловые скорость и ускорения в параметрах Родрига-Гамильтона
  14. Нестандартное введение в динамику твердого тела
  15. Движение несвободного твердого тела
  16. Свойства тензора инерции твердого тела
  17. Зарисовка о гайке Джанибекова
  18. Математическое моделирование эффекта Джанибекова
Динамика твердого тела — раздел механики, который в своё время задал четкий вектор развития этой науки. Это один из самых сложных разделов динамики, и задача интегрирования уравнения сферического движения для произвольного случая распределения массы тела не решена до сих пор.

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

Интегрирование уравнений движения этой детской игрушки — одна из до сих пор не решенных задач механики…


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

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

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

Силы, стоящие в правой части (1) разделяются на две группы

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

    Говоря формальным языком, активная сила определяется вектор функцией

    где — обобщенная координата точки; — обобщенная скорость точки. Из данного выражения видно, что начиная решать задачу о движении и имея начальные условия (момент времени, положение и скорость) можно сразу рассчитать активную силу.

    Сила тяжести, упругости, Кулоновская сила взаимодействия заряда с электрическим полем, сила Ампера и сила Лоренца, сила вязкого трения и аэродинамического сопротивления — всё это примеры активных сил. Выражения для их расчета известны и эти силы можно посчитать, зная положение и скорость точки.

  2. Реакции связей. Самые неприятные силы, которые только можно придумать. Напомню одну из аксиом статики, именуемую аксиомой о связях
    Связи приложенные к телу можно отбросить, заменив их действие силой, или системой сил

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

Исходя из данной классификации, уравнение движения точки (1) переписывают в виде

где — равнодействующая активных сил, приложенных к точке; — равнодействующая реакций, наложенных на точку связей.

А теперь проделаем простейший фокус — ускорение с массой перенесем в другую часть уравнения (2)

и введем обозначение

Тогда, уравнение (2) превращается в

Сила, представляемая вектором (3) называется силой инерции Даламбера. А уравнение (4) выражает

принцип Даламбера для материальной точки

Материальная точка находится в равновесии под действием приложенных к ней активных сил, реакций связей и сил инерции
Позвольте, о каком равновесии может идти речь, если точка движется с ускорением? Но ведь уравнение (4) есть уравнение равновесия, и приложив к точке силу (3) мы можем заменить движение точки её равновесием.

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


Теперь распространим уравнение (4) на случай движения твердого тела. В механике его рассматривают как неизменяемую механическую систему, состоящую из множества точек, расстояние между которыми в каждый момент времени остается неизменным. Все точки тела движутся по различным траекториям, но уравнение движения каждой точки соответствует (2)

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

где — сила инерции, приложенная к данной точке тела.

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

Твердое тело находится в равновесии под действием приложенной к нему системы сил, если главный вектор и главный момент этой системы сил, относительно выбранного центра O, раны нулю

Главный вектор системы сил — это векторная сумма всех сил, приложенных к телу. Сумма сил, приложенных к каждой точке тела определяется последним уравнением, поэтому складывая уравнения для всех точек, в левой его части получим главный вектор

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

причем, как показывается в классическом курсе динамики, сумма моментов внутренних сил, приложенных к системе материальных точек, равна нулю, то есть . Уравнения (5) и (6) уже выражают принцип Даламбера применительно к твердому телу, но лишь с одной необходимой поправкой.

Число активных сил и реакций связей в уравнениях (5) и (6) конечно. Большинство слагаемых в соответствующих суммах равны нулю, ибо активные внешние силы и реакции внешних связей, вообще говоря, приложены лишь в некоторых точках тела. Чего нельзя сказать о силах инерции — силы инерции приложены к

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

главный вектор и главный момент сил инерции, приложенных к твердому телу. Интегралы (7) и (8) берутся по всему объему тела, а — радиус вектор точки тела относительно выбранного центра O.

Исходя из данного соображения мы можем переписать (5) и (6) в окончательном виде

Уравнения (10) и (11) выражают принцип Даламбера для твердого тела

Теврдое тело находится в равновесии под действием приложенных к нему внешних сил, реакций связей, главного вектора и главного момента сил инерции.
По сути (10) и (11) есть форма записи дифференциальных уравнений движения твердого тела. Они довольно часто применяются в инженерной практике, однако с точки зрения механики, такая форма записи уравнений движения не является самой удобной. Ведь интегралы (7) и (8) можно вычислить в общем виде и придти к более удобным уравнениям движения. В этой связи (10) и (11) следует рассматривать как теоретическую основу построения аналитической механики.

Вернемся к нашим тензорам и с их помощью вычислим интегралы (7) и (8) для общего случая движения твердого тела. В качестве центра приведения выберем точку O1. Эта точка выбрана в качестве полюса и в ней определен локальный базис связанной с телом системы координат. В одной из прошлых статей мы определили тензорное соотношение для ускорения точки тела в таком движении

Умножив (12) на массу точки со знаком минус, мы получим силу инерции, приложенную к элементу объема твердого тела

Выражение (13) — ковариантное представление вектора силы инерции. Двойное векторное произведение в (12) перепишем в более удобной форме, используя тензор Леви-Чивиты и псевдовекторы угловой скорости и углового ускорения

Подставляем (14) в (13) и берем тройной интеграл по всему объему тела, учитывая, что угловая скорость и угловое ускорение одинаковы в каждой точке этого объема, то есть их можно вынести за знак интеграла

Интеграл в первом слагаемом — это масса тела. Интеграл во втором слагаемом более интересная штука. Вспомним одну из формул курса теоретической механики:

где — контравариантные компоненты радиус-вектора центра масс рассматриваемого тела. Не в даваясь в смысл понятия центра масс просто заменим интегралы в (15) в соответствии с формулой (16), учтя, что во втором слагаемом (15) используются ковариантные компоненты.

Ага, выражение (17) тоже нам знакомо, представим его в более привычной векторной форме

Первое слагаемое в (18) — сила инерции, связанная с поступательным движением тела вместе с полюсом. Второе слагаемое — центробежная сила инерции, связанная с осествемительным ускорением центра масс тела при его движении вокруг полюса. Третье слагаемое — вращательная составляющая главного вектора сил инерции, связанная с вращательным ускорением центра масс вокруг полюса. В общем-то всё находится в соответствии с классическими соотношениями теормеха.

Пытливый читатель скажет: «зачем применять тензоры для получения этого выражения, если в векторном виде оно было бы получено не менее очевидным способом?». В ответ я скажу, что получение формул (17) и (18) — это была разминка. Теперь мы получим выражение главного момента сил инерции относительно выбранного полюса, и тут тензорный подход проявляет себя во всей красе.

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

Снова выполним подстановку (14) в (19), но не станем торопится брать интеграл

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

Тут снова появился радиус вектор центра масс. Здесь ничего сложного — ускорение полюса у нас одно и мы вынесли его за знак интеграла. Интерпретацией займемся чуть позже, а пока преобразуем второе слагаемое (20). В нем мы можем выполнить свертку произведения тензоров Леви-Чивиты по немому индексу k

Здесь мы воспользовались свойством дельты Кронекера заменять свободный индекс вектора/ковектора при выполнении свертки. Теперь возьмет интеграл, учтя, что угловое ускорение постоянно для всего объема тела

Во как! Малопонятный «крокодил», путем формальных тензорных преобразований схлопнулся в компактную формулу. Я лукавлю, мы ввели новое обозначение:

Но это не просто абстрактная формула. По структуре выражения (24) видно, что оно отражает распределение массы тела вокруг полюса и называется оно — тензор инерции твердого тела. Эта величина имеет поистине фундаментальное значение для механики, и о ней мы поговорим подробнее, пока лишь скажу, что (24) — тензор второго ранга, компонентами которого являются осевые и центробежные моменты инерции тела в выбранной системе координат. Он характеризует инертность твердого тела при вращении. Обращаю внимание читателя и на то, как быстро мы получили выражение для тензора инерции, по сути действуя формальным способом. С векторными соотношения без ломки мозгов не обойтись, в этом я убедился на личном опыте.

Ну и наконец обратимся к последнему слагаемому (20). При взятии интеграла в нём тоже должен получится тензор инерции, и мы будем преобразовывать его таким образом, чтобы достичь этой цели. В этой части выражения (20) должно фигурировать соотношение между тензором инерции и угловой скоростью тела. Приступим, для начало свернув произведение тензоров Леви-Чивиты

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

Здесь мы снова учли, что , воспользовались свойствами дельты Кронекера и операцией поднятия/опускания индексов при умножении на метрический тензор. И, теперь мы интегрируем (26)

Здесь мы снова видим тензор инерции:

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

Выражение (27) эквивалентно векторно-матричному соотношению:

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

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

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

Читая лекции студентам я задался целью вывести (29) и (30) оперируя векторами. После того как я перевел стопку бумаги и изрядно поломав мозги я пришел к результату. Поверьте на слово — вышеприведенные преобразования просто семечки, в сравнении с тем, через что надо пройти не используя тензоров.

К тому же, выражения (29) и (30) получены нами для произвольного центра приведения сил, в качестве которого мы взяли полюс O1. Эти выражения помогут нам понять что такое центр масс тела и его важность для механики.

Используя формулы (29) и (30) вернемся к уравнениям (10) и (11) и, выполнив подстановку, придем к дифференциальным уравнениям движения твердого тела

Чем плохи эти уравнения? А тем, что они зависят друг от друга — ускорение полюса будет зависеть от углового ускорения и угловой скорости тела, угловое ускорение — от ускорения полюса. Вектор определяет положение центра масс тела по отношению к полюсу. А что если мы выберем полюс прямо в центре масс? Тогда ведь и уравнения (31), (32) примут более простой вид

Узнаете эти уравнения? Уравнение (33) — теорема о движении центра масс механической системы, а (34) — динамическое уравнение Эйлера сферического движения. И эти уравнения независимы друг от друга. Таким образом, центр масс твердого тела — это точка, относительно которой силы инерции приводятся к наиболее простому виду. Поступательное движение вместе с полюсом и сферическое вокруг полюса — динамически развязаны. Тензор инерции тела, вычисляется относительно центра масс и называется центральным тензором инерции.

Уравнения (33), (34) в зарубежной литературе называют уравнениями Ньютона-Эйлера, и, в настоящее время весьма активно используются для построения ПО, предназначенного для моделирования механических систем. В рамках цикла о тензорах мы ещё не раз о них вспомним.

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

В дальнейшем мы подробнее остановимся на тензоре инерции и изучим его свойства. Погрузившись в дебри аналитической механики, сведем уравнения (31) — (34) к уравнениям движения в обобщенных координатах. В общем, рассказать ещё есть о чем. А пока, благодарю за внимание!

Продолжение следует…

Отель «Гранд Палас» Светлогорск, официальный сайт, отдых в Светлогорске Калининградской области

Светлогорск расположен на огромной песчаной янтарной горе, 45 м над уровнем Балтийского моря. История Города начинается где — то в 1258 году, когда этой точкой на карте впервые заинтересовались «пришлые люди», в основном, моряки и купцы. На «диком западе», в Риме и Греции, бытовало поверье, что, мол где-то на Востоке, на берегу холодного моря есть места, где нет земли, а есть сплошной янтарь. В это слабо верили, как например мы сейчас в НЛО или в Атлантиду: то ли есть, то ли нет.

А оказалось, что есть. Набрели — таки на рыбацкий поселок, с названием — «Раусе — Мотер», что означает «Край погребов». Неизвестно уж, и история умалчивает, почему именно «погребов», но сие — есть факт. Потихоньку рос он да рос, этот поселок, благо, что пресная вода водилась, озеро Тихое и по сей день сохранилось, никто и ничто не смогло его уничтожить. Замок появился и вал, все как у людей.

Уже к 14-му веку стал он носить гордое имя Раушен. Вы знаете, почему в Светлогорске такой «дендрариумный» рай? Создавался он руками тех, кто жил здесь и любил свой город. Так, моряки обязаны были из плавания привезти саженец и посадить его. Каждый приезжающий в гости или по делам в Раушен, в качестве пропуска, вез либо дерево, либо кустарник. Японская магнолия и вечнозеленый рододендрон, азалия и североамериканская гортензия, лиственница и сосна, семь видов клена, пять — черемухи, облепихи, и множество других растений нашли себе место и постоянно радуют жителей и гостей города — курорта. «Федеральные» власти тоже не остались в стороне от подобной инициативы: в 1840 году прусский король Фридрих-Вильгельм IV посетил Раушен. Он был поражен красотой этих мест и в помощи не отказал, приказав посадить лес вокруг озера и по дюнам, вплоть до самого моря.

24 июля 1840 года Раушен был официально объявлен курортом, хотя еще в 1817 году в печати фатерлянда упоминалось, что «Раушен сильно загружен гостями». В 1895-м жителей было 215, гостей — 800, в 1930 жителей две тысячи, а гостей шесть. Вскоре потянулась на постоянное жительство в Раушен интеллигенция. Здесь долгое время жил и успешно творил композитор Отто Николаи, автор «Виндзорских насмешниц», скульптор Брахерт. Исключительно наличие парков и лесопарков, лечебный морской воздух и мягкий климат, помноженные на многовековой труд людей — вот ключ к этому Городу. Климат его характеризуется географическим положением, относительной близостью к Атлантическому океану, и во все времена года открытостью ветрам всех направлений. Обширные акватории на западе и наличие огромного континента на востоке, обладающих разной степенью нагрева, обслуживает вынос тепловых морских масс воздуха из Прибалтики, в силу чего район Города длительное время находится в области теплого сектора циклонов, идущих с запада. Парки и лесопарки есть результат труда. Город всегда результат чьего-то труда и чьей-то воли. С положительным или отрицательным вектором.

С начала 20 века начинается «Золотой век» Раушена.

В 1900 году построили Земландскую железную дорогу и станцию Раушен-орт (Светлогорск-1), в 1906 — Раушен-дюна (Светлогорск-2) и канатную дорогу в Георгиенсвальде (Отрадное), в 1907-1908 гг. — 25-метровую «башню» в центре города, быстро ставшую «визитной карточной» курорта, в 1908 год — променад, в 1912 год — фуникулер к морю.

Когда началась война, не до отдыха стало. Город использовался для переформирования частей, лечения раненых. Используя Восточную Пруссию, как авиаплацдарм, Третий Рейх нападает на Советский Союз. Эта земля оказывается между молотом и наковальней — первый авианалет на Кенигсберг был произведен российской авиацией уже в июле 1941 года, а окончательную капитуляцию Восточной Пруссии генерал Ляш подписал лишь в апреле 1945 года. За это время город-крепость Кенигсберг был превращен в развалины, многие города были буквально снесены советской авиацией и артиллерией, но Раушен уцелел — в какой-то степени благодаря тому, что не имел собственного производства и не расценивался как стратегически важный объект.

В 1945 году Раушену повезло. Спасибо генерал- лейтенанту Чанчибадзе и бойцам подчиненной ему 2-й гвардейской армии: город был занят 14 апреля практически без разрушения, было разрешено к применению только личное оружие. Генерал думал о будущем. А будущее непременуло наступить.

Новая история Раушена: город Светлогорск.

С 1946 года Раушен переименован в Светлогорск и стал городом-курортом областного значения.
С 1970-х годов — республиканского значения.

В 1973 году построили новый променад и лестницы к морю (265 ступеней, разница уровней нижней и верхней ее площадок — 35,6 метра). Спуск приводит прямо к солнечным часам на променаде, выполненным красочной мозаикой. В центре их стрелка — гномон, тень от которой показывает время. Ориентирован гномон на Полярную звезду и расположен под углом 55 градусов (широта Светлогорска). Диск часов диаметром 10 метров имеет 12 делений со знаками Зодиака, расположенными вдоль видимого годового пути Солнца. В 1979 году углубили дно и расчистили озеро «Тихое», со стороны города построили набережную и расширили центральную улицу города-Калининградский проспект. Брусчатка осталась по всей длине проспекта, это уже потом ее сменили на асфальтовую «броню». В 1984 году возведен мемориал над Братской могилой воинам, павшим при взятии Города С 1965 года в Светлогорске стал отмечаться День песни, со временем переросший в день открытия курортного и туристического сезона. Теперь этот День Песни празднуется как день Города в первый выходной день июня.

Новейшая история Светлогорска

В 1991 году в католической кирхе Раушена состоялось открытие христианского храма Серафима Саровского. В 1995 году в живописном районе города открыт концертный зал с первоклассным органом. Органный зал реконструирован из старого полуразрушенного строения — бывшей католической капеллы с прекрасным именем «Мария, Звезда моря». В 1991 году в Светлогорске появились первые туристы из Германии. Было положено начало «ностальгического туризма». В 1998 году Светлогорск становится курортом федерального значения. С 1992 по 2001 год в Светлогорске построено и переоборудовано в соответствии с международными стандартами пятнадцать отелей, пансионатов и гостевых домов. В 2001 году в конкурсе Фонда Сороса «Стратегия развития малых городов России», где принимали участие 151 город, Светлогорск был в числе победителей. В 2002 году г. Светлогорск стал лауреатом конкурса на звание самый благоустроенный город России среди городов своей категории. Весной 2005 года начал принимать гостей первый и единственный в области пятизвездочный гостинично-ресторанный комплекс «GRAND PALACE»!

Светлогорск сегодня

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

Cветлогорск стоит на высоких прибрежных холмах, поэтому спуски к морю здесь достаточно крутые, но хорошо оборудованы. Летом функционируют канатная дорога (в районе вокзала Светлогорск-2) и лифт (в районе центрального спуска). Весь город просто утопает в зелени, поэтому прогулка по нему может показаться прогулкой по ботаническому саду, в котором можно встретить и теплолюбивые южные растения, и более северные, хвойные. В любую погоду приятно пройтись по старинным улочкам, застроенным зданиями ХIХ — начала ХХ — веков с их башенками и куполами, флюгерами и красной черепицей крыш. Лесные массивы в черте города и вблизи него являются естественными дендрариями под открытым небом, насчитывающими 1200 видов деревьев и кустарников. Из них 20 видов являются уникальными и произрастают только на территории нашего города. Гордостью Светлогорска являются 120 памятников архитектуры. Все жилые здания и архитектурные постройки находятся в хорошем состоянии, постоянно реставрируются. Все это и оригинальная архитектура и редкостный зеленый наряд создают впечатление сказочности, яркости, праздничности, помогают отрешиться от обыденной суеты, окунуться в мир природы и старины. Складывается впечатление, что попадаешь в какой-то сказочный город, где домики кажутся просто игрушечными, воздух волшебным, а все небольшие улочки веселыми и празднично нарядными.

Здесь все приспособлено для удобства отдыхающих: множество кафе и ресторанов, как в самом городе, так и на пляже. На озере «Тихое» функционирует лодочная станция, где можно прокатиться на лодке или катамаранах. Для детей открыл свои двери парк с аттракционами и каруселями, а любителям классической музыки и органа можно посоветовать посетить Органный зал. Светлогорск — это курортный город «со стажем»: более 200 лет: еще в девятнадцатом веке он был известен своими целебными минеральными источниками, хвойными лесами и прекрасными пляжами. Но самым главным здесь является, конечно же, море. Полукилометровый променад вмещает дюжину ресторанов и кафе среди которых расположился отель «GRAND PALACE». К услугам отдыхающих весь спектр водных развлечений: от современных гидромотоциклов до традиционных водных велосипедов. Индустрия отдыха максимально выстроена для нескучного времяпрепровождения. И все это на фоне песчаных пляжей и уникальных береговых откосов высотой в 20 метров, живописно очерчивающих кромку моря. Моря, к которому хочется возвращаться каждое лето.

Впрочем, все это гораздо лучше увидеть своими глазами — и хотя бы ради этого надо побывать в Светлогорске. Фотографии не могут передать всю глубину очарования этого маленького городка, но почувствовать атмосферу, царящую там, уже можно. Светлогорск всегда был прекрасен, поверьте. И зимой, когда весь Город покрыт снегом и рядом ворчит никогда не замерзающее море, а по древним улочкам прогуливаются одинокие туристы. И летом, когда все, море, Город и, кажется, даже сам воздух пропитан бесшабашностью отдыха, отпусков, коротких встреч и расставаний. Осенью, когда «осенние листья шумят и шумят…» и бывает грустно оттого, что жизнь так прекрасна, а время так быстро уходит. Весной, когда цветет азалия и жасмин, а Город живет в ожидании летнего туристического фейерверка. Приезжайте и вы полюбите Светлогорск. Отели, гостиницы и санатории здесь располагаются в пяти минутах ходьбы от побережья. Побывав на нашем море однажды вы обязательно захотите сюда вернуться.

Vector math — документация Godot Engine (stable) на английском языке

Введение

Этот учебник представляет собой краткое практическое введение в линейную алгебру, поскольку относится к разработке игр. Линейная алгебра — это изучение векторов и их использует. Векторы имеют множество применений как в 2D-, так и в 3D-разработке, а также в Godot. широко использует их. Развитие хорошего понимания векторной математики важно, чтобы стать сильным разработчиком игр.

Примечание

Это руководство , а не формальный учебник по линейной алгебре. Мы будем только смотреть на то, как это применяется к разработке игр. Для более широкий взгляд на математику см. https://www.khanacademy.org/math/linear-алгебра

Системы координат (2D)

В двухмерном пространстве координаты определяются с помощью горизонтальной оси ( x ) и вертикальная ось ( y ). Конкретное положение в 2D-пространстве записывается как пара такие значения, как (4, 3) .

Примечание

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

Любая позиция в 2D-плоскости может быть идентифицирована парой чисел таким образом. Однако мы также можем думать о позиции (4, 3) как о смещении от (0, 0) точка или начало координат . Нарисуйте стрелку, указывающую от начала координат к точка:

Это вектор . Вектор представляет много полезной информации. Также как говорящий нам, что точка находится в (4, 3) , мы также можем думать об этом как о угол θ (тета) и длина (или величина) м . В этом случае стрелка представляет собой вектор положения — он обозначает положение в пространстве относительно источник.

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

Оба вектора представляют точку на 4 единицы правее и на 3 единицы ниже некоторой отправная точка. Неважно, где на плоскости вы начертите вектор, он всегда представляет относительное направление и величину.

Векторные операции

Вы можете использовать любой метод (координаты x и y или угол и величина) для ссылки к вектору, но для удобства программисты обычно используют координату обозначение. Например, в Godot исходной точкой является левый верхний угол страницы. экране, чтобы разместить 2D-узел с именем Node2D 400 пикселей вправо и 300 пикселей вниз, используйте следующий код:

 $Node2D.position = Vector2(400, 300)
 

Godot поддерживает как Vector2, так и Vector3 для использования в 2D и 3D соответственно. Те же математические правила обсуждаемые в этой статье, относятся к обоим типам, и везде, где мы ссылаемся на методов Vector2 в справочнике по классам, вы также можете проверить их Vector3 аналогов.

Доступ для участников

Доступ к отдельным компонентам вектора можно получить непосредственно по имени.

 # Создать вектор с координатами (2, 5).
переменная a = Vector2 (2, 5)
# Создайте вектор и назначьте x и y вручную.
переменная b = Vector2()
б.х = 3
б.у = 1
 

Добавление векторов

При сложении или вычитании двух векторов добавляются соответствующие компоненты:

 var c = a + b # (2, 5) + (3, 1) = (5, 6)
 

Мы также можем увидеть это визуально, добавив второй вектор в конце первый:

Обратите внимание, что сложение a + b дает тот же результат, что и б + а .

Скалярное умножение

Примечание

Векторы представляют как направление, так и величину. Значение, представляющее только величина называется скаляром . Скаляры используют плавающий тип в Godot.

Вектор можно умножить на скаляр :

 вар с = а * 2 # (2, 5) * 2 = (4, 10)
var d = b / 3 # (3, 6) / 3 = (1, 2)
 

Примечание

Умножение вектора на скаляр не меняет его направление, а только его величина. Вот как ты шкала вектор.

Практическое применение

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

Механизм

Вектор может представлять любую величину с величиной и направлением. Типичный примерами являются: положение, скорость, ускорение и сила. На этом изображении космический корабль на шаге 1 имеет вектор положения (1, 3) и вектор скорости (2, 1) . Вектор скорости показывает, как далеко корабль перемещается за каждый шаг. Мы можно найти позицию для шага 2, добавив скорость к текущей позиции.

Совет

Скорость измеряет изменение положения в единицу времени. Новый положение находится путем сложения скорости, умноженной на прошедшее время (здесь принимается за одну единицу, например, 1 с) в предыдущую позицию.

В типичном сценарии 2D-игры у вас будет скорость в пикселях на секунду, и умножить на параметр дельта (время, прошедшее с момента предыдущий кадр) из _process() или _physics_process() обратные вызовы.

Указание на цель

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

Совет

Чтобы найти вектор, указывающий от A до B , используйте B-A .

Единичные векторы

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

Нормализация

Нормализация вектора означает уменьшение его длины до 1 при сохранении его направление. Это делается путем деления каждого из его компонентов на его величину. Поскольку это очень распространенная операция, Godot предоставляет специальный метод normalized() для этого:

 а = а.нормализованный()
 

Предупреждение

Поскольку нормализация включает деление на длину вектора, вы не может нормализовать вектор длины 0 . Попытка сделать это обычно приводит к ошибке. Однако в GDScript при попытке вызов метода normalized() для вектора длины 0 оставляет значение нетронуто и позволяет избежать ошибки для вас.

Отражение

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

Например, представьте, что у нас есть движущийся мяч, который мы хотим отскочить от стены или другой объект:

Нормаль поверхности имеет значение (0, -1) , потому что это горизонтальная поверхность. Когда мяч сталкивается, мы берем его остаточное движение (количество оставшихся когда он коснется поверхности) и отразите его, используя нормаль. В Годо есть это метод bounce() для обработки этого. Вот пример кода приведенной выше диаграммы с использованием CharacterBody2D:

.
 вар столкновения: KinematicCollision2D = move_and_collide(скорость * дельта)
если столкновение:
    переменная отражения = столкновение.get_remainder().bounce(collision.get_normal())
    скорость = скорость.отскок(collision.get_normal())
    move_and_collide (отражать)
 

Скалярный продукт

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

Формула скалярного произведения принимает две распространенные формы:

и

Математическая запись ||A|| представляет величину вектора А и A x означает компонент x вектора A .

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

 переменная c = a.dot(b)
var d = b.dot(a) # Они эквивалентны.
 

Скалярное произведение наиболее полезно при использовании с единичными векторами. формула сокращается до cos(θ) . Это означает, что мы можем использовать скалярное произведение, чтобы определить нам кое-что об угле между двумя векторами:

При использовании единичных векторов результат всегда будет между -1 (180°) и 1 (0°).

Облицовка

Мы можем использовать этот факт, чтобы определить, обращен ли объект к другому объект. На диаграмме ниже игрок P пытается избежать зомби. А и В . Если предположить, что поле зрения зомби составляет 180° , смогут ли они увидеть игрок?

Зеленые стрелки fA и fB — это единичных векторов , представляющих направление взгляда зомби, а синий полукруг обозначает его поле зрения. Для зомби A находим вектор направления AP , указывающий на игрока используя P - A и нормализовать его, однако у Годо есть вспомогательный метод для этого называется direction_to(). Если угол между этим вектором и вектором, обращенным лицом, меньше 90°, то зомби может увидеть игрока.

В коде это будет выглядеть так:

 вар AP = A.direction_to(P)
если AP.dot(fA) > 0:
    print("А видит Р!")
 

Перекрестное произведение

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

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

 переменная c = Vector3()
c.x = (a.y * b.z) - (a.z * b.y)
су = (а.з * б.х) - (а.х * б.з)
c.z = (a.x * b.y) - (a.y * b.x)
 

С Godot вы можете использовать встроенную функцию Vector3.cross(). метод:

 переменная c = a.cross(b)
 

Перекрестное произведение не определено математически в 2D. Метод Vector2.cross() является широко используемым аналогом трехмерного креста. продукт для 2D векторов.

Примечание

В векторном произведении важен порядок. a.cross(b) не дает тот же результат, что и б.кросс(а) . Результирующие векторы указывают на напротив направлений.

Расчет нормалей

Одним из распространенных применений векторных произведений является нахождение нормали к поверхности плоскости или поверхность в трехмерном пространстве. Если у нас есть треугольник ABC , мы можем использовать вектор вычитание, чтобы найти два ребра AB и AC . Используя перекрестное произведение, AB × AC дает вектор, перпендикулярный обеим сторонам: нормали к поверхности.

Вот функция для вычисления нормали треугольника:

 функция get_triangle_normal(a, b, c):
    # Найти нормаль к поверхности по трем вершинам.
    переменная сторона1 = б - а
    переменная сторона2 = с - а
    переменная нормальная = сторона1.кросс(сторона2)
    вернуться в нормальное состояние
 

Наведение на цель

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

Дополнительная информация

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

  • Расширенная векторная математика

  • Матрицы и преобразования

Vector Math Node — Руководство по Blender

Узел Vector Math выполняет выбранную математическую операцию над входными векторами.

Входы

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

Вектор

Входной вектор \(A = \begin{pmatrix} A_x \\ A_y \\ A_z \end{pmatrix}\).

Вектор

Входной вектор \(B = \begin{pmatrix} B_x \\ B_y \\ B_z \end{pmatrix}\).

Шкала

Шкала ввода \(s\).

Свойства

Операция

Векторный математический оператор, применяемый к входным векторам.

Добавить:

Сумма А и В. \(\begin{pmatrix} A_x + B_x \\ A_y + B_y \\ A_z + B_z \end{pmatrix}\)

Вычесть:

Разница между А и Б. \(\begin{pmatrix} A_x — B_x \\ A_y — B_y \\ A_z — B_z \end{pmatrix}\)

Умножить:

Входной продукт A и B. \(\begin{pmatrix} A_x \cdot B_x \\ A_y \cdot B_y \\ A_z \cdot B_z \end{pmatrix}\)

Разделить:

Поэлементное деление A на B. Деление на ноль дает ноль. \(\begin{pmatrix} A_x / B_x \\ A_y / B_y \\ A_z / B_z \end{pmatrix}\)

Умножить Добавить:

Поэлементная комбинация операций умножения и сложения. \(А * В + С\)

Перекрестный продукт:

Перекрестное произведение А и В. \(\begin{pmatrix} A_y \cdot B_z — A_z \cdot B_y \\ A_z \cdot B_x — A_x \cdot B_z \\ A_x \cdot B_y — A_y \cdot B_x \end{pmatrix}\)

Проект:

Проекция А на В.

Отражение:

Отражение A вокруг нормального B. B не нужно нормализовать.

Преломление:

Для данного вектора падения A, нормали к поверхности B и отношения показателей преломления (IOR), refract выводит вектор преломления R.

Лицом вперед:

Ориентирует вектор A так, чтобы он указывал в сторону от поверхности B, как определено его нормалью C. Вычисляет \((dot(B, C) < 0) ? A : -A\). 92}\)

Масштаб:

Результат умножения A на скалярный ввод Масштаб . \(\begin{pmatrix} s \cdot A_x \\ s \cdot A_y \\ s \cdot A_z \end{pmatrix}\)

Нормализация:

Результат нормализации A. Вектор результата указывает в том же направлении, что и A, и имеет длину 1. Если A равно (0, 0, 0), результат также будет (0, 0, 0).

Обертка:

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

Привязка:

Результат округления A до наибольшего целого числа, кратного B, меньшего или равного A.

alexxlab

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *