Задача - сделать на canvas шарики, чтобы они бесконечно двигались, бились друг об друга. Я это сделал, но это не вполне реалистично. А именно: шарик может ударить другой вскользь, но отлетит в сторону, как будто ударился о стену, тогда как в реальности он бы так и полетел в том же направлении, незначительно увеличив свою скорость по другой оси. Формула не учитывает этого. Так полагаю нужен угол столкновения, тригонометрия. Вот она:
vSrt1x = circle.vector.x;
vSrt2x = nearbyCircle[i].vector.x;
vSrt1y = circle.vector.y;
vSrt2y = nearbyCircle[i].vector.y;
m1 = circle.mass;
m2 = nearbyCircle[i].mass;
vEnd1x = vSrt1x/(m1+m2)*(m1-m2)+vSrt2x/(m1+m2)*(2*m2);
vEnd2x = vSrt1x/(m1+m2)*(2*m1)+vSrt2x/(m1+m2)*(m2-m1);
vEnd1y = vSrt1y/(m1+m2)*(m1-m2)+vSrt2y/(m1+m2)*(2*m2);
vEnd2y = vSrt1y/(m1+m2)*(2*m1)+vSrt2y/(m1+m2)*(m2-m1);
Здесь vSrt1x - это скорость начальная первого шара по х, остальные соответственно.
vEnd1x - соответственно конечная скорость после удара, содержит формулу в соответствии с законами сохранения импульса и сохранения энергии.
Но как переделать формулу, чтобы она зависела от угла падения.
Последнее, что я пробовал - это такая формула:
circle.vector.y = vEnd1x * cos(2*a),
circle.vector.x = vEnd1y * -sin(2*a)
Где a - угол падения
Под углом падения имеется ввиду... угол соприконовения шаров, что ли. Как программа его находит:
Вычитаем из координаты первого шара, координату второго шара, все по х - получаем катет. Затем делим это на расстояние между центрами (оно находится по теореме пифагора) и полученное значение обрабатываем арксинусом и умножаем на 180/ПИ (переводим в радианы).
Собственно она не сработала. Шарики замедляются, т.е. теряют свою кинетическую энергию, а этого быть не должно.
Кто знает, подскажите! Буду очень благодарен!
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
У меня есть массив Uint8Array с бинарными данными в формате
Здравствуйте, помогите пожалуйста реализовать правильный гет запрос для мобильного подтверждения трейда в стимеЮзаю steam-totp для генерации...
Добрый день дамы и господаПишу для себя модуль на node js, не могу реализовать функцию save()