Основно съдържание
Курс: Програмиране > Раздел 5
Урок 7: Трептения- Амплитуда и период на трептене
- Предизвикателство: Пружинка като дъга
- Трептене с ъглова скорост
- Предизвикателство: Езда на космически кораб
- Вълни
- Предизвикателство: Много вълни
- Задържане и сили: махалото
- Предизвикателство: Кукла махало
- Сили на пружина
- Проект: Извиващи се, пълзящи и въртящи се създания
© 2024 Khan AcademyУсловия за ползванеДекларация за поверителностПолитика за Бисквитки
Трептене с ъглова скорост
Разбирането на понятията за осцилация, амплитуда и честота/период е необходимо често в курса за симулиране на поведения от реалния свят. Обаче има един малко по-лесен начин, по който можем да пренапишем предния пример, за да получим същия резултат. Да разгледаме отново нашата формула за осцилацията:
var x = amplitude * sin(TWO_PI * frameCount / period);
И да я напишем отново по малко по-различен начин:
var x = amplitude * sin(някаква стойност, която нараства бавно);
Ако се интересуваме от това да дефинираме с точност периода на осцилация по отношение на кадрите на анимацията, може би ще имаме нужда от формулата във вида, в който я написахме първоначално, но можем съвсем лесно да пренапишем примера, като използваме концепцията за ъглова скорост (и ускорение) от урока за Ъглово движение. Ако приемем, че:
var angle = 0;
var aVelocity = 0.03;
...в
draw()
можем да напишем просто:angle += aVelocity;
var x = amplitude * sin(angle);
...където
angle
е нашата “някаква стойност, която нараства бавно”.Ето и нашата модифицирана програма:
Само защото не използваме понятието за период директно, това съвсем не означава, че сме се отказали от него. В крайна сметка колкото по-голяма е ъгловата скорост, толкова по-бързо ще осцилира кръгът (и следователно ще намалява периодът). Всъщност броят на пътите, които трябва да се добавят към ъгловата скорост, за да се получи TWO_PI, е периодът или:
период = TWO_PI / ъглова скорост
Да разширим този пример още малко и да създадем обекта
Oscillator
. Сега да примем, че искаме да се получава осцилация, както по оста х (както е по-горе), така и по оста y. За да направим това, ще ни трябват два ъгъла, две ъглови скорости и две амплитуди (по една за всяка ос). Още една идеална възможност да използваме PVector
!Прочети кода в програмата по-долу:
Курсът "Компютърни симулации на физични явления" е производeн на "Природата на кода" от Даниел Шифман, използвана от Creative Commons Attribution-NonCommercial 3,0 Unported License.
Искаш ли да се присъединиш към разговора?
Все още няма публикации.