Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2008.08.10;
Скачать: [xml.tar.bz2];

Вниз

сила/ускорение/скорость   Найти похожие ветки 

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.56 MB
Время: 0.008 c
15-1214400026
boriskb
2008-06-25 17:20
2008.08.10
Правда или очередной наезд Линуксоидов? :)


15-1214187119
Slider007
2008-06-23 06:11
2008.08.10
С днем рождения ! 23 июня 2008 понедельник


15-1214516044
homm
2008-06-27 01:34
2008.08.10
Поздравляю всех с победой


2-1215575714
Muh
2008-07-09 07:55
2008.08.10
Как в цикле перебрать допустим combobox1, combobox2


3-1203881506
Novichek
2008-02-24 22:31
2008.08.10
Сохранение данные по средствам ADOStoredProc





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский