Задача 3. Маятник

Простая визуализация колебательного движения маятника в Processing 3.
Код учитывает физику колебаний (угол, длину нити, ускорение свободного падения).

Угловое ускорение (angularAcceleration) считается по формуле: a =(g/L)sin(θ)
Затухание (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);
}
Free Web Hosting