Текущий архив: 2008.08.10;
Скачать: CL | DM;
Вниз
сила/ускорение/скорость Найти похожие ветки
← →
Dmitry S © (2008-06-19 17:46) [0]Чтото я не могу разобраться.
Хочу сделать окно, которое плавно летает за курсором.
К примеру курсор притягивает окно с силой G.
Какие параметры и как расчитывать? (с математикой у меня хорошо, с физикой не очень).
Я так понимаю на окно действует постоянно две силы: G и I (инерция). При этом окно двигается со скоростью v (t).
t - время в секундах.
dt - время между кадрами. Т.е. между расчетами. Расчитать надо подразумевая, что на тело действует сила G все время dt.
Вот и собственно вопрос как расчитать движение?
PS. Прошу опустить комментарии по поводу "зачем все это надо"
← →
БарЛог © (2008-06-19 17:49) [1]Сделай еще зависимость от квадрата расстояния
← →
McSimm © (2008-06-19 17:53) [2]
> БарЛог © (19.06.08 17:49) [1]
и от масс курсора и окна :)
← →
McSimm © (2008-06-19 17:57) [3]для реалистичности без векторов не обойтись. Если что-то движется со скоростью V0, но не в том направлении, простое добавление V0+dV не поможет поверить, что тут рядом проходили физические процессы
← →
Mystic © (2008-06-19 18:00) [4]Проинтегрировать по площади окна. Быть готовым к тому, что дипольный момент будет разворачивать окно.
← →
БарЛог © (2008-06-19 18:02) [5]> дипольный момент будет разворачивать окно.
хотел бы я на это посмотреть в реализации :)
← →
Dennis I. Komarov © (2008-06-19 18:04) [6]А как же вихривые потоки из пустой корзины? :)
← →
McSimm © (2008-06-19 18:06) [7]
> Mystic © (19.06.08 18:00) [4]
:)
Я когда это читал, представил, что придется мышку удерживать, иначе ее потянет вслед за притянутым курсором :)
← →
TUser © (2008-06-19 18:21) [8]В каждый момент окно движется по вертикали со скоростью V и не меняет ее самостоятельно
Курсор тянет вних с силов А, которая есть скорость изменения скорости
По горизонтали - аналогично. Силу можно разложить на составляющие, взяв ее проекции.
← →
McSimm © (2008-06-19 18:21) [9]
> Dmitry S © (19.06.08 17:46)
Поскольку ускорение прямо пропорционально действующей силе, то достаточно реализовать эту прямую пропорциональность, разложив по осям.
Т.е. дельта скорости для каждого дельта времени постоянна и равна kF (некая константа на силу), раскладываем V0 по осям и расчитываем приращение по каждой оси.
← →
Mystic © (2008-06-19 18:30) [10]С точке зрения физики в данной задаче явно некорректно рассматривать окно как материальную точку.
← →
McSimm © (2008-06-19 18:37) [11]Это если рассматривать окно как массу, что конечно реалистичнее и рассматривать силу взаимодействие в зависимости от квадрата расстояний до каждой его точки.
Но в исходном вопросе есть допущение, что на окно действует заданная сила. Я думаю, что на некоторые упрощения с учетом уровня знаний можно пойти.
← →
Mystic © (2008-06-19 18:52) [12]Понятно, что так проще реализовывать---не надо поворачивать окно :)
← →
@!!ex © (2008-06-19 19:24) [13]Векторы - рулят...
Смотришь на задачу - ужасно сложная, как решать - непонятно...
Переводишь все значения в вектора... и получаешь элементарную задачу...
← →
Псалтырь © (2008-06-19 23:48) [14]
> Mystic © (19.06.08 18:30) [10]
>
> С точке зрения физики в данной задаче явно некорректно рассматривать
> окно как материальную точку.
>
Да почему же? Пересечение диагоналей будем считать центром масс и вперед
← →
Petr V. Abramov © (2008-06-20 01:08) [15]
> К примеру курсор притягивает окно с силой G.
сила G к чему приложена? к какой кнопке мышки? За какое место окна притягивает?
← →
palva © (2008-06-20 01:17) [16]Интересно будет посмотреть, как окно вращается по эллиптической орбите вокруг курсора. А уравнение Кеплера все равно придется решать. Либо интегрировать численно, что гораздо сложнее.
← →
Petr V. Abramov © (2008-06-20 01:32) [17]
> palva © (20.06.08 01:17) [16]
> Либо интегрировать численно,
"а мне по..., я Е в степени ИКС" :)
← →
KSergey © (2008-06-20 08:29) [18]Наверное надо найти школьный учебник физики (за какой вот товлько класс?) и перечитать в нем разделы, касающиеся решения задач о силах, приложенных к кирпичу, который еще и движется.
К стати, сила тяготения к курсору постоянная должна быть или нет? Пожалуй - нет, так реалистичнее будет.
А физику я не знаю, так что как именно считать - я тоже не знаю, а думать - лень. Но написать что-нибудь хотелось.
← →
Knight © (2008-06-20 08:39) [19]Прям как моя приколка для мышки... движение курсора по законам упругости пружинки... с настройкой жёскости пружины и массы курсора :))))))
← →
Дуб © (2008-06-20 08:49) [20]
> Я так понимаю на окно действует постоянно две силы: G и
> I (инерция).
Не, учебник физики тут уже не поможет.
← →
Simpson © (2008-06-20 10:58) [21]KSergey © (20.06.08 08:29) [18]
IMHO Ржет над тобой народ.
У тебя откуда там сила? Ну где ты на мониторе силу нашел?
Вычесляй вектор движения и с каким то ускорением двигай картинку к окну, если
тебе инерция нужна просто вычесляй вектор чуть позже чем окно сдвинулось/
было достигнуто. Можно расчитывать насколько далеко обьект за которым следиш
и в зависимости от этого менять скорость.
← →
Mystic © (2008-06-20 13:10) [22]> Да почему же? Пересечение диагоналей будем считать центром
> масс и вперед
А потом проведи эксперимент и получишь несоответствие. Как, например, объяснить тот факт, что ускорение свободного падения уменьшается при движении к центру земли? По твой формуле, если считать Землю материальной точкой, то расстояние до нее уменьшается, значит ускорение свободного падения должно увеличиваться? Но оно уменьшается :)
Тут же ускорение окна меняется в пределах окна. Значит точки окна, которые ближе к курсору, будут притягиваться сильнее. Окно будет разворачиваться... А реши через центр тяжести, потом проинтегрируй по площади окна и сравни результаты :)
← →
Дуб © (2008-06-20 13:27) [23]> Mystic © (20.06.08 13:10) [22]
В условии сказано, что притягивает курсор. О функции притяжения ничего не сказано. Откуда известно, что сила будет зависеть от растояния?
← →
McSimm © (2008-06-20 13:58) [24]
> если
> тебе инерция нужна просто вычесляй вектор чуть позже чем
> окно сдвинулось/
> было достигнуто.
смешно
← →
McSimm © (2008-06-20 14:01) [25]На самом деле такой эффект действительно есть, из-за него, например, происходит прецессия орбит планет. Но это не инерция, это релятивистская механика и в рамках окна монитора за пределами вычислительной точности :)
← →
Simpson © (2008-06-20 14:02) [26]McSimm © (20.06.08 13:58) [24]
В чем прикол то?
Или для программки в которой одна картинка за второй бегает надо обязательно моделировать поведение вселенной? Визуально какая то инерция будет насколько она реальна другой вопрос. Ну так это не моделирование соударения машин марки Форд, а просто прикол на экране.
← →
McSimm © (2008-06-20 14:03) [27]
> Визуально какая то инерция будет
нет, это не будет похоже на инерцию.
кроме того, чтобы инерцию смоделировать достаточно всего лишь вычислять вектор вовремя, безо всяких задержек. Ничего более
← →
Simpson © (2008-06-20 14:07) [28]McSimm © (20.06.08 14:03) [27]
Не совем понял, поясни пожалуйста.
← →
McSimm © (2008-06-20 14:13) [29]Как смоделировать поведение окна для такой задачи уже написано выше. Эта модель полностью включает инерционное поведение. Упрощение в одном - сила притяжения считается постоянной и не зависит от формы и взаиморасположения предметов.
Достаточно правдоподобно для такого рода задачи. В каждый момент времени дельты скорости по x и по y расчитываются по простейшей формуле.
Зачем при этом нужно расчитывать вектор "позже" - мне не понятно.
Почему это приведет к явлению, не похожему на инерцию:
Представьте окно ускоренно движущееся к курсору. Перемещаем курсор на другую сторону экрана. По простому пути приращения скорости меняются на отрицательные (сразу). По вашему - еще какое-то время окно продолжает ускоряться в сторону, противоположную вектору силы. Это и есть некоторый эффект релятивистской механики, но ничего общего с инерцией.
← →
euru © (2008-06-20 14:22) [30]Нужно ещё учесть, что окно неоднородно. В нём имеются различные элементы управления, влияющие на распределение его масс.
Более того, нужно учитывать также, что поля ввода могут заполняться символами, обладающими собственной массой.
← →
Игорь Шевченко © (2008-06-20 14:28) [31]
> обладающими собственной массой.
буквы ю и w весят больше других
← →
Dmitry S © (2008-06-20 14:28) [32]Вобщем как сделал я.
Первое что я осознал, это то, что инерция - это не сила. У тела в данный момент есть только координата и скорость. (Для каждой оси свои)
Один раз в промежуток времени dt я вычисляю новую скорость и новую координату по формуле:
ax := Fx / m;
X := X + dt * Vx + dt * dt * ax / 2;
Vx := Vx + dt * ax;
Для Y аналогично.
Fx находится как F1 * Cos(Ang1) + F2 * Cos(Ang2) + ... (для всех сил, которые действуют на тело).
Осталось только расчитать упругие столкновения с границами экрана и все:)
Ведь если ввести силу притяжения, которая, как я понимаю должна быть примерно равна 9.8*m, то за время dt тело может удариться о нижний край экрана, и получается, что сила притяжения сперва ускоряет объект, а потом тормозит. Вот думаю:)
PS.
Точка на которую указывает курсор - всего лишь направление одной из сил. Сама сила зависит от расстояния (обратнопропорциональна).
← →
Dmitry S © (2008-06-20 14:29) [33]
> euru ©
"Не все то окно, что с контролами"... Почти © :)
← →
McSimm © (2008-06-20 14:41) [34]
> Сама сила зависит от расстояния (обратнопропорциональна).
Правильнее квадрату расстояния. Не намного сложнее и реалистичнее.
← →
Anatoly Podgoretsky © (2008-06-20 14:42) [35]> Игорь Шевченко (20.06.2008 14:28:31) [31]
Ш и Ж еще тяжелее, легкая i а самое легкое пробел, вообще нифига не весит, одна видимость (дыра).
← →
Dmitry S © (2008-06-20 14:44) [36]т.е. по сути
F = k / (D*D).
где k - это коэффициент ??
← →
DesWind (2008-06-20 15:02) [37]Угу, инерция это свойство вещества которое измеряется инерциальной массой.
← →
Mystic © (2008-06-20 15:03) [38]> В условии сказано, что притягивает курсор. О функции притяжения
> ничего не сказано. Откуда известно, что сила будет зависеть
> от растояния?
В условии задачи просилось решение с точки зрения физики :) Движение окна в сторону курсора можно реализовать и без всякой физики.
> Нужно ещё учесть, что окно неоднородно. В нём имеются различные
> элементы управления, влияющие на распределение его масс.
>
> Более того, нужно учитывать также, что поля ввода могут
> заполняться символами, обладающими собственной массой.
Можно еще ввести сопромат: под действием гравитационных возмущающих сил окно распадается на части. Или в точке курсора поместить черную дыру, и окно будет исчезать там. Или квантовая механика: существует определенная вероятность найти окно в нужной точке экрана.
← →
palva © (2008-06-20 15:20) [39]Приливные силы учесть будет прикольно. Типа буквочки сбегаются в сторону курсора. А если учесть, что буквочки друг о друга трутся и выделяется тепло, - вот вам и диссипация.
← →
McSimm © (2008-06-20 15:29) [40]
> Dmitry S © (20.06.08 14:44) [36]
> т.е. по сути
> F = k / (D*D).
> где k - это коэффициент ??
Да, при условии игнорирования формы тел и постоянной массы.
Если все правильно реализовать, можно будет двигая курсором мыши попытаться поймать окно на орбиту :)
Страницы: 1 2 вся ветка
Текущий архив: 2008.08.10;
Скачать: CL | DM;
Память: 0.55 MB
Время: 0.006 c