Ответы пользователя по тегу Массивы
  • Есть ли альтернатива Excel?

    x67
    @x67
    Есть несколько базовых советов, которые помогут оптимизировать вба макросы (если интересует этот путь, напишите, позже скину, хотя можете и сами найти на тостере или stackoverflow), сделав их быстрее, но все равно excel не про бигдату. Даже решив проблему сейчас, вы вернетесь к ней через полгода. А когда заканчивается excel, начинается разработка.
    Что вам нужно (универсальное решение):
    1. База данных(там очень эффективно хранятся циферки и буковки), например postgreSQL
    Бэкенд - серверная часть со всеми расчетами, а также интеграцией в разные другие сервисы (например, 1с, гугль аналитикс, сайт с погодой) написать можно например на питоне
    Фронтенд - красивая страничка в браузере, куда удобно вводить данные и откуда их удобно смотреть, например angularjs+html
    Плюсом такого решения является легкость изменения и улучшения. Минусом - большие вложения, так как разработчики стоят денег и за пару часов это не напишешь. Есть также много других плюсов, но о них потом, если заинтересуетесь - сейчас с телефона неудобно

    Промежуточное решение - excel в качестве фронтенда и бд, написать логику на питоне или даже си шарпе(или любом другом яп, который из коробки представлен в msvs- у них хорошая интеграция с продуктами microsoft, в тч с excel), там все считаться быстрее будет. Но все равно получится велосипед с костылями для инвалидов. И не будет некоторых плюсов, которые я не озвучил.
    Это тоже стоит денег, но очень условно в 10-70% от первого варианта
    Ответ написан
    Комментировать
  • Какими формулами можно описать движение предмета?

    x67
    @x67
    У предмета есть вектор скорости и вектор ускорения. Также есть одна угловая скорость (на плоскости) и одно угловое ускорение.
    Собственно разберем простой случай, когда при свайпе предмет мгновенно достигает нужной скорости и нужной частоты вращения.
    Тогда можно аппроксимировать свайп в линию (запросы: линейная фильтрация, тренд по точкам, линейная интерполяция и тп). Возможно подойдет просто взять начальную и конечную точку, попробуйте. Тогда у предмета скорость по оси Х будет равна (x2-x1)*К/(t2-t1), где 1 и 2 - точки начала и конца свайпа, а К - какой-то коэффициент, который будет вам удобен. А по оси Y соответственно (y2-y1)*K/(t2-t1).
    Закрутку считать так. Берете начальную и конечную точки свайпа, получаете из них линию, далее ищите самую далекую точку от линии (или для простоты ищите расстояние средней точки до линии). Угловая скорость будет пропорциональна этому расстоянию.
    Как сделать так, чтобы предметы ускорялись плавно?
    Во первых надо запомнить, что ускорение не должно быть постоянным, должна быть какая-то инфляция его во времени. Причем быстрая. Далее нужно решить, есть ли у предметов разная масса (насколько физична игра?) Если нету, то мы работаем напрямую с ускорением, если есть, то появится еще сила, воздействующая на предмет. Предположим массы нет, тогда можно сделать простое ускорение, равное какому-то числу. Конечную скорость считаем также, но при этом не сразу присваиваем скорость, а постепенно изменяем по следующей формуле:Vx=Vx+ax*dt. dt - интервал между фреймами (для девайсов с переменным фпс, чтобы игра не скакала,) ах - ускорение по оси х. При достижении скорости ускорение становится равным нулю.
    Еще один вариант плавного разгона - Vx=K*Vx+(1-K)*Vxzad, где К может быть в интервале от 0 до 1, а Vxzad - расчетная скорость, которой надо достичь. Чем больше К, тем медленнее будет ускоряться предмет. Если надо, эту формулу можно написать немного в другом виде, тогда с ней будет приятнее работать (можно будет легко задавать, за какое время предмет будет достигать своей скорости).
    Для угловой скорости все это работает точно также.
    Ну и да, в принципе можно обойтись без ускорения или сил с массой, задавая скорость алгоритмически, но с ускорением удобно будет вводить разные эффекты вроде гравитации, трения и тп.
    Ответ написан
    8 комментариев