Задача 3.
Маятник
Простая визуализация колебательного движения маятника в
Processing 3.
Код учитывает физику колебаний (угол, длину нити, ускорение свободного падения).
Угловое ускорение (angularAcceleration
)
считается по формуле:
Затухание (damping
) имитирует сопротивление
воздуха.
translate()
смещает начало координат в точку подвеса.
Груз рисуется через ellipse()
, нить — через line()
.
Можно изменить gravity
(например, на 0.2
или
1.0
).
Чтобы добавить стартовый толчок нужно изменить angularVelocity
в
setup()
.
Исполнение онлайн:
https://openprocessing.org/sketch/2649051
Вид экрана
Программа: (скопируйте код в редактор Processing
и запустите на выполнение)
float angle = PI/4; // Начальный угол (45 градусов)
float angularVelocity = 0; // Угловая скорость
float angularAcceleration = 0; // Угловое ускорение
float length = 200; // Длина нити (пиксели)
float damping = 0.995; // Затухание (для реалистичности)
float gravity = 0.5; // "Ускорение свободного падения" (можно менять)
void setup() {
size(600, 400);
smooth();
}
void draw() {
background(255);
// Пересчёт углового ускорения (упрощённая модель)
angularAcceleration = -gravity / length * sin(angle);
angularVelocity += angularAcceleration;
angle += angularVelocity;
// Добавляем затухание
angularVelocity *= damping;
// Отрисовка маятника
translate(width/2, 50); // Точка подвеса
stroke(0);
strokeWeight(2);
fill(0);
// Линия (нить)
float bobX = length * sin(angle);
float bobY = length * cos(angle);
line(0, 0, bobX, bobY);
// Груз (шарик)
ellipse(bobX, bobY, 30, 30);
}