Как это сделать или может кто знает где можно посмотреть информацию по этому вопросу.
спасибо
JavaScript
Создал массив частиц в Canvas через JS, но никак не могу заставить отталкиваться частицы друг от друга...
Тебе нужно решить задачу, или ты хочешь разобраться, как это работает?
Если первое - используй particles.js
Если второе - этот вопрос гораздо обширней, понадобиться много знаний из JS и математики.
Если первое - используй particles.js
Если второе - этот вопрос гораздо обширней, понадобиться много знаний из JS и математики.
Владимир Кожемяко
второе. но где взять информацию именно по этому вопросу? вроде запрос простой, а поисковик не выдаёт ничего дельного...
Формула для силы притяжения: F = G*M*m/R², это физика примерно девятого что ли класса. Берёшь эту силу и направляешь в обратную сторону. Константу G и массы частиц подгони так, чтобы получать нужную скорость.
Или тебе нужно не отталкивание, а просто обсчёт столкновения? Если частицы круглые, то когда расстояние между центрами меньше суммы их радиусов, то они не только столкнулись, но и вошли друг в друга. Так может случиться, если у тебя перемещение сразу на несколько пикселей, скачками (на большой скорости может случиться, смотря как ты движение обсчитываешь, JS больше 60 fps вроде не даёт, а у тебя может быть нужно прыгнуть дальше 60 пикселей за секунду). Расстояние между двумя точками посчитать, думаю, не проблема, это по теореме Пифагора. И если они столкнулись, считай направление нормали к повернхости и отзеркаливай относительно неё вектор скорости так, чтобы угол падения был равен углу отражения. Результирующую скорость каждой частицы (если массы разные) считай, например, по абсолютно упругому столкновению.
Это же всё проходили на физике в районе девятого класса: импульс, энергия, сила упругости, проекции векторов на оси.
Или тебе нужно не отталкивание, а просто обсчёт столкновения? Если частицы круглые, то когда расстояние между центрами меньше суммы их радиусов, то они не только столкнулись, но и вошли друг в друга. Так может случиться, если у тебя перемещение сразу на несколько пикселей, скачками (на большой скорости может случиться, смотря как ты движение обсчитываешь, JS больше 60 fps вроде не даёт, а у тебя может быть нужно прыгнуть дальше 60 пикселей за секунду). Расстояние между двумя точками посчитать, думаю, не проблема, это по теореме Пифагора. И если они столкнулись, считай направление нормали к повернхости и отзеркаливай относительно неё вектор скорости так, чтобы угол падения был равен углу отражения. Результирующую скорость каждой частицы (если массы разные) считай, например, по абсолютно упругому столкновению.
Это же всё проходили на физике в районе девятого класса: импульс, энергия, сила упругости, проекции векторов на оси.
я бы наверно сделал так.
каждая частица - объект, у которого есть
- координаты
- вектор движения в двухмерном пространстве, относительно начала кординат
- скорость движения
- расстояние до каждой другой частицы
при уменьшении расстояния до 0 (1,2,3 хз) вектора частиц меняются на противоположные
mathprofi.ru/vektory_dlya_chainikov.html
когда я писал игру, то каждый раз, когда перерисовывал пространство - искал уменьшение расстояний между объектами до 0.
при этом для каждого объекта запоминал старые коордаинаты, которые были до этого, и возвращал объект на них в случае столкновения.
но направление не менял. тут несколько посложнее
каждая частица - объект, у которого есть
- координаты
- вектор движения в двухмерном пространстве, относительно начала кординат
- скорость движения
- расстояние до каждой другой частицы
при уменьшении расстояния до 0 (1,2,3 хз) вектора частиц меняются на противоположные
mathprofi.ru/vektory_dlya_chainikov.html
когда я писал игру, то каждый раз, когда перерисовывал пространство - искал уменьшение расстояний между объектами до 0.
при этом для каждого объекта запоминал старые коордаинаты, которые были до этого, и возвращал объект на них в случае столкновения.
но направление не менял. тут несколько посложнее
Владимир Кожемяко
как заставить каждую частицу отслеживать расстояние до всех других? мои попытки перебирать каждый i-тый объект массива частиц никак не увенчивается успехом...
Похожие вопросы
- Старые добрые массивы. js
- Как менять строки и столбцы в двумерном массиве JS
- Js. Как создать матрицу 1000 на 1000 не обьявляя 1000 одномерных массивов построчно
- как проверить в двух больших массивах всё на наличие того же самого в другом. javascript
- JS - как узнать, сколько раз переменная содержится в массиве?
- Как заполнить двумерный массив в JS.
- Помогите определиться с выбором нового языка (JS(TS) vs Java)
- Как вы относитесь к HTML5, новые API (Canvas, Geolocation API, WebStorage, WebSockets, WebRTC, WebGL IndexedDB и другое)
- Js фреймворки, что полезного можно для себя найти?
- В чем цель фреймворков js web?