Просмотр полной версии : Physical engine
K.A.T.A.F.A.L.K.E.R
13.07.2005, 17:35
Я тут в последнее время копаюсь в Macromedia Director. Для тех кто не знает - по сути, фича вроде Флеша но с 3D. Пробил под него Havok!!! Тот самый HAVOK! Есть идея сделать подобное под Flash. Предложения/пожелания будут? Может кто уже пытался? Какие могут возникнуть трудности?
Я тут в последнее время копаюсь в Macromedia Director. Для тех кто не знает - по сути, фича вроде Флеша но с 3D. Пробил под него Havok!!! Тот самый HAVOK! Есть идея сделать подобное под Flash. Предложения/пожелания будут? Может кто уже пытался? Какие могут возникнуть трудности? дык в Директоре язык другой вроде. Или я не прав?
K.A.T.A.F.A.L.K.E.R
13.07.2005, 17:48
Прав! Там некий Lingo (мне он не сильно понравился), но дело не в этом... Там havok предоставил свои библиотеки, подключаешь их, а далее любому (нарисованному в 3D Max) объекту прописываешь свойство, типа, сделать его физическим и на него начинает действовать гравитация, он взаимодействует (потрясающе реалистично) с другими физическими объектами и т.д. Так вот хотелось бы написать че-то подобное для Flash. И, по-моему, hitTest тому способствует... :)
Sad Jester
13.07.2005, 18:28
Весь вопрос - нафига это нужно, если flash как раз и создавался как упрощенная и более "легкая" версия shockwave, нацеленная на 2D?
K.A.T.A.F.A.L.K.E.R
13.07.2005, 18:48
А ты этот вопрос задай всем тем (тысячам!) кто свои 3D движки под флеш написал! Кроме того, я ж вообще не говрю про трехмерность, я говорю про физику! Так, чтобы твой мувик со свойством "физический=true" реагировал на остальных с тем же свойством. Столько игрушек ведь пишется, и люди напрягаются! А с havok-ом я бильярд за пол часа написал (читать: в 3Dmax-е нарисовал и две строчки скрипта вставил). А то что Flash - какое-то упрощение - разве не он был первым на базе FutureSplash построен??? ;)
директор вообще отдельная тема и к флешу не имеет никакого отношения
sfinks2009
13.07.2005, 19:55
С помощью этой проги я кое-что сделал http://www.sfinks2009.narod.ru
и всем советую!!!
K.A.T.A.F.A.L.K.E.R
14.07.2005, 18:10
люди, мля, при чем тут директор??? вы че - читать не умеете? я его в качестве примера привел. я ведь о флеше!!! о нем, о родимом, кормильце!!! :d
идея, канешна суууууууупер, тока кандыбаца долга придется
Бармалей
14.07.2005, 18:36
С помощью этой проги я кое-что сделал http://www.sfinks2009.#####.ru
и всем советую!!!
Интересненько чувачёк спамит :)
А ты этот вопрос задай всем тем (тысячам!) кто свои 3D движки под флеш написал! Кроме того, я ж вообще не говрю про трехмерность, я говорю про физику! Так, чтобы твой мувик со свойством "физический=true" реагировал на остальных с тем же свойством. Столько игрушек ведь пишется, и люди напрягаются! А с havok-ом я бильярд за пол часа написал (читать: в 3Dmax-е нарисовал и две строчки скрипта вставил). А то что Flash - какое-то упрощение - разве не он был первым на базе FutureSplash построен??? ;) я бы, конечно занялся на досуге, но ты представляешь себе объём работы? Например написать движок, чтобы объект, не соединенный ни с чем другим, притягивался к другому телу, при этом ускоряясь и крутясь из - за сопротивления среды, в которой он движется. Стоит оно того?
через хитест думаю замучаетесь делать.
а я через хиттест и не стану, если стану вообще
А ты этот вопрос задай всем тем (тысячам!) кто свои 3D движки под флеш написал! Кроме того, я ж вообще не говрю про трехмерность, я говорю про физику! Так, чтобы твой мувик со свойством "физический=true" реагировал на остальных с тем же свойством. Столько игрушек ведь пишется, и люди напрягаются! А с havok-ом я бильярд за пол часа написал (читать: в 3Dmax-е нарисовал и две строчки скрипта вставил). А то что Flash - какое-то упрощение - разве не он был первым на базе FutureSplash построен??? ;)
я делал давно 3д движок... ну там без всякой физики... запарное дело... а с физикой :) еще запарнее наверно :)
вот и я про тоже, я тут подумал, вот список свойств, которые должны быть у каждого физического объекта:
у всех:
-теплопроводность
-затухание звуковых волн
-масса
-упругость
-хрупкость
-пластичность
-прозрачность
-температура
-показатель преломления
-магнитность
-способность отражать свет
-светится или нет (логическая величина)
-среда или нет(логическая величина)
-коэффициент увеличения при нагревании
-предел прочности
-коэффициент трения поверхности
-плотность
у светящихся:
-холодное/горячее свечение
-температура
-яркость
у сред:
-сопротивление
-показатель преломления света
-прозрачность
и это только то, что я вспомнил + к тому, нужно будет сделать возможность гибкого/жесткого соединения объектов, прочность этих соединений, а также красивое разрушение объекта. писать это все - заколебетка чистой воды, хотя продать подобный движок в виде компонента можно было бы за немеренно$
KidsKilla
15.07.2005, 14:59
чортас2
эта хрень работать откажется +)
тридэ во флэше не более чем эффект и навороты.
если нужен реальный 3d есть дир. с гооооораздо меньшими потерями в весе и производительности...
чортас2
эта хрень работать откажется +)
тридэ во флэше не более чем эффект и навороты.
если нужен реальный 3d есть дир. с гооооораздо меньшими потерями в весе и производительности...
Эт точно от 3D во флеше только название ...
TERRORist
15.07.2005, 15:07
вот и я про тоже, я тут подумал, вот список свойств, которые должны быть у каждого физического объекта:
у всех:
-теплопроводность
-затухание звуковых волн
-масса
-упругость
-хрупкость
-пластичность
-прозрачность
-температура
-показатель преломления
-магнитность
-способность отражать свет
-светится или нет (логическая величина)
-среда или нет(логическая величина)
-коэффициент увеличения при нагревании
-предел прочности
-коэффициент трения поверхности
-плотность
у светящихся:
-холодное/горячее свечение
-температура
-яркость
у сред:
-сопротивление
-показатель преломления света
-прозрачность
и это только то, что я вспомнил + к тому, нужно будет сделать возможность гибкого/жесткого соединения объектов, прочность этих соединений, а также красивое разрушение объекта. писать это все - заколебетка чистой воды, хотя продать подобный движок в виде компонента можно было бы за немеренно$
А-а-а...Мм-м-м...Грррмм.
Это шутка юмора? Ты забыл про осесимметричный вибрационный изгиб круговой цилиндрической оболочки из вязкоупругого материала.
Тоже очень полезное свойство.
Из всего я бы оставил массу,упругость, а так же ускорение, скорость, положение в пространстве
чортас2
эта хрень работать откажется +)
тридэ во флэше не более чем эффект и навороты.
если нужен реальный 3d есть дир. с гооооораздо меньшими потерями в весе и производительности...
да ты прав... эффекты и навороты... но движок мона сделать причем нормальный... и основные потери производительности это текстуризация... если бы это дело мало "кушало" то мона было бы и покруче эффектики забацать...
KidsKilla
15.07.2005, 16:00
а начерта это надо, при наличии дира???
эффекты достигаются и имитацией необходимых вещей.
я недавно видел игрушку 3д на дире, ссыль не помню, нутк после этого все попытки флэша теперь кажутся.. (смешными, детским лепетом, чушью) пусть будет никчемными. там реальная 3д, с текстурами, тенями, этой штукой, када вдалеке меньше... а, проекцией вродь. до такого флешу никогда не дорасти. да и ни к чему вся эта дребедень.
да и флеш изначально под это не заточен ...
а начерта это надо, при наличии дира???
эффекты достигаются и имитацией необходимых вещей.
я недавно видел игрушку 3д на дире, ссыль не помню, нутк после этого все попытки флэша теперь кажутся.. (смешными, детским лепетом, чушью) пусть будет никчемными. там реальная 3д, с текстурами, тенями, этой штукой, када вдалеке меньше... а, проекцией вродь. до такого флешу никогда не дорасти. да и ни к чему вся эта дребедень.
да это все правильно! я ничего не отрицаю...
НО, если я не ошибаюсь... дир использует, для этой небывалой быстроты, видюху? а флешу ничего не надо... тока проц(в основном, конечно :) )
то-есть, по-твоему, то, что дир может задействовать, кроме проца, еще и ресурс видюхи и от этого не тормозить - плохо? по-моему как раз наоборот
да это все правильно! я ничего не отрицаю...
но, если я не ошибаюсь... дир использует, для этой небывалой быстроты, видюху? а флешу ничего не надо... тока проц(в основном, конечно :) ) а тебе видюхи жалко?
а тебе видюхи жалко?
ладно ладно :) уговорили...
тока вот вопрос а для просмотра готового файла (с элементами 3д) дира какая прога нужна?
Мне, на самом деле не понятно другое: почему здесь все пытаются обсуждать 3Д? Тема же называется Physical engine!
Мне, на самом деле не понятно другое: почему здесь все пытаются обсуждать 3Д? Тема же называется Physical engine!
хыыы :) откуда я знаю... тот кто начал тему чето писал про три де...
ладно ладно :) уговорили...
тока вот вопрос а для просмотра готового файла (с элементами 3д) дира какая прога нужна? а вот это я бы и сам хотел узнать
а вот это я бы и сам хотел узнать
формат swf может проигрываться везде где стоит это флешь плеер... а тот формат который генерит директор.... я его даже незнаю :) по-моему он может во многие форматы генерить...
А-а-а...Мм-м-м...Грррмм.
Это шутка юмора? Ты забыл про осесимметричный вибрационный изгиб круговой цилиндрической оболочки из вязкоупругого материала.
Тоже очень полезное свойство.
Из всего я бы оставил массу,упругость, а так же ускорение, скорость, положение в пространстве - ускорение, скорость и положение в пространстве - это динамические параметры, они должны вычисляться функциями, а то, что я перечислил задается раз и навсегда (ну разве что масса далжна меняться после разрушения) и я считаю, что перечислил самое необходимое, без этого не круто
K.A.T.A.F.A.L.K.E.R
15.07.2005, 17:45
Народ, вы гоните! Я ж про 3Д говорил только в качестве примера! И при чем тут вообще ваша теплопроводность, индексы преломления, скорости света и прочее??? Я про механику! Про твердое тело (для начала)! Без изгибов, кручений, и прочего... Не обижайтесь, но физики с вас - никуда! А ведь все что необходимо ввести - это закон распределения плотности (для начала можно равномерно распределенную), модуль Юнга, коэффициент поглощения энергии (упругость), трение и ВСЕ!!! Да, и еще чтоб не забыть про гравитацию - некая внешняя суммарная сила и ее момент. Далее, поверьте мне, все что нужно - Ньютонова динамика и законы сохранения (ну, для извращенцев и оригиналов/экстрималов - Лагранжев/Гамильтонов формализм)... Я уже писал что-то подобное для столкновения двух тел (работа в МАН), довольно неплохо и красиво вышло... И еще... Тело произвольной формы... Форма заранее не известна. Как без hitTest-а? Вы че - издеваетесь? :eek:
извини чувак :)
конечно интересное это дело физика... если точнее механика...
я бы выделил для 2d эти параметры
1. масса
2. форма объекта (удобнее всего было бы сделать ее как замкнутый многоугольник, т.е. точки соединяя которые можно обвести контур объекта)
3. точка где эта масса сосредоточена (либо еще лучше, конкретная масса для каждой точки контура... + можно еще и в центре где нить указать массу... типа объект с неравномерной плотностью)
4. упругость
ну вот наверно и все для объектов...
и конечно же для "мира" нужна сила притяжения... затем... плотность окружающей среды... можно сделать эффект ветра или вихря в воде...
это параметры которыми надо воспользоваться при создании такого физ движка
затем надо создать всего одну функцию которая бы управляла каждым объектом... при действии на объект "внешних факторов"
вот и вся идея...
для разрушений я бы предложил искусственно "разбить" объект на много маленьких объектов... которые бы под действием сил притяжения друг к другу держали тело... при ударении объектов вычислялось бы напряжение возникающее в стыке между каждым маленьким объектом и если оно бы превышало "допустимое" то происходил бы разрыв связи... и т д и т п
кароче надо мне этим делом заняться :) как будет лишнее время...
интересно всетаки ;)
думаю, что было бы круто (вспоминая уроки физики на последней парте...) сделать так:
Есть куча объектов (которые попадают в некоторую среду). Эти объекты запихаем в массив. В каждый момент времени на объект действует суммарная сила (помните, там вектора всякие рисовали). Есть суммарный вектор, который можно расчитывать используя учитывая почти все (или только избранные) законы. Нужно сделать onEnterFrame функцию, которая в каждый нужный момент времени, опираясь на данный вектор, определяет движение каждого объекта из массива..
Да, это было бы действительно круто реализовать! У кого много свободного времени?!
Народ, вы гоните! Я ж про 3Д говорил только в качестве примера! И при чем тут вообще ваша теплопроводность, индексы преломления, скорости света и прочее??? Я про механику! Про твердое тело (для начала)! Без изгибов, кручений, и прочего... Не обижайтесь, но физики с вас - никуда! А ведь все что необходимо ввести - это закон распределения плотности (для начала можно равномерно распределенную), модуль Юнга, коэффициент поглощения энергии (упругость), трение и ВСЕ!!! Да, и еще чтоб не забыть про гравитацию - некая внешняя суммарная сила и ее момент. Далее, поверьте мне, все что нужно - Ньютонова динамика и законы сохранения (ну, для извращенцев и оригиналов/экстрималов - Лагранжев/Гамильтонов формализм)... Я уже писал что-то подобное для столкновения двух тел (работа в МАН), довольно неплохо и красиво вышло... И еще... Тело произвольной формы... Форма заранее не известна. Как без hitTest-а? Вы че - издеваетесь? :eek: ну ты ж назвал тему Physical engine, а не Mechanical! Без света/температуры не круто! В идеале, над разбиться на группы и каждый пусть пишет свой модуль
думаю, что было бы круто (вспоминая уроки физики на последней парте...) сделать так:
Есть куча объектов (которые попадают в некоторую среду). Эти объекты запихаем в массив. В каждый момент времени на объект действует суммарная сила (помните, там вектора всякие рисовали). Есть суммарный вектор, который можно расчитывать используя учитывая почти все (или только избранные) законы. Нужно сделать onEnterFrame функцию, которая в каждый нужный момент времени, опираясь на данный вектор, определяет движение каждого объекта из массива..
Да, это было бы действительно круто реализовать! У кого много свободного времени?!
ну да я это впринципе и имел ввиду... тока там главный вектор и главный момент (для вращения) И вапще для всего этого надо бы почитать сопромата... учебник ;)
хы все это так интересно...... :)
вот время появиться сделаю.... че нить
TERRORist
15.07.2005, 18:51
Ion, механика - это раздел физики, и идет он ДО всякой там оптики, теплотехники и остального. И большинство все-таки заинтересовано в механике.
По поводу формы - любую фигуру можно считать образованной замкнутой ломанной с определенной степенью приближения
я тут вспомнил... видел какую-то игру дурацкую на флеше (да простят меня ее создатели). там какой-то невзрачный человечек бегает и прыгает и вещицы собирает (где-то на потрошителе ссылка была). вот там вроде как реализована и сила притяжения и инерция... но, я так понимаю, тут говорят про более глобальные вещицы! кому не лень, поройтесь - найдите ссылку, напишите афторам, накиньте немного Wmz и вам будет счастие 80)
K.A.T.A.F.A.L.K.E.R
15.07.2005, 19:04
бр, зачем вводить массу, точку центра масс и прочее, если это все задается функцией распределения плотности! :) а то что механика до оптики - эт вы зря, теор. механика - она частично в кванты залазит (а это - третий курс физического факультета ;) ). но вот форму вводить - я против! я хочу сделать это для тела произвольной формы, в этом вся фишка :)
бр, зачем вводить массу, точку центра масс и прочее, если это все задается функцией распределения плотности! :) а то что механика до оптики - эт вы зря, теор. механика - она частично в кванты залазит (а это - третий курс физического факультета ;) ). но вот форму вводить - я против! я хочу сделать это для тела произвольной формы, в этом вся фишка :)
дак блин :)
1. что это за функция распрделения плотности? хоть бы описал ее, я лично не физик, а инженер и первый раз слышу...
2. "форма объекта" интересно я про что говорил ? я и говорил что форма это и есть параметр объекта, она произвольная, т.е. ты сам задаешь телу форму и затем распределяешь по телу массу
K.A.T.A.F.A.L.K.E.R
15.07.2005, 19:29
1. Представь себе губку. Она ж не одной определенной плотности - есть плотное вещество, есть дырки :) Но для начала предлагаю ввести именно равномерную плотность и тогда центр масс можно определить... Ну а пример такой функции - ну не знаю, для сферы там радиуса R пусть будет d=m/(R^2)*r, где d - плотность (здесь линейная), r - расстояние до центра ) Получим сферу, пустую в самом центре и плотную снаружи :)
2. то то же, задаешь :) А хотелось бы - взял карандашик, нарисовал че-нить эдакое, конвертнул в мувиклип, сказал мувиклип.физикал = тру и все! Понеслася! Он те и крутится, и падает, и с другими сталкивается - разве не здорово? :D
Супер! Но на такое даже такой маньяк как я не замахнулся! Получится, мы бум гардица табой!
1. Представь себе губку. Она ж не одной определенной плотности - есть плотное вещество, есть дырки :) Но для начала предлагаю ввести именно равномерную плотность и тогда центр масс можно определить... Ну а пример такой функции - ну не знаю, для сферы там радиуса R пусть будет d=m/(R^2)*r, где d - плотность (здесь линейная), r - расстояние до центра ) Получим сферу, пустую в самом центре и плотную снаружи :)
2. то то же, задаешь :) А хотелось бы - взял карандашик, нарисовал че-нить эдакое, конвертнул в мувиклип, сказал мувиклип.физикал = тру и все! Понеслася! Он те и крутится, и падает, и с другими сталкивается - разве не здорово? :D
1. на счет губки... у нее одинаковая плотность... но у нее высокая пористость... (наличие пузырьков газа в материале + каналы там и тд и тп) для физ движка можно сделать такой аналог: материал с одной плотностью но изза пористости он будет лучше сжиматься растягиваться... кароче - мягкость вот надо какой параметр ввести...
2. по-моему мы с тобой говорим об одном и том же...
я ж говорю что форму задаешь произвольную а он там сам все расчитывает... зачем нам какие-то частные случаи... надо интерпретировать вначале каждое свойство... а объединив все это получится физ движка
Sad Jester
17.07.2005, 18:09
в общем, очередные мечты пионэров из категории "а дафайте засучим рукава до самых пяток"...
в общем, очередные мечты пионэров из категории "а дафайте засучим рукава до самых пяток"...
уааххахахаххахахаххахах
неплохо сказано :)
я когда-то пытался написать нечто подобное (2д естесенно про 3д, текстурирование и т.д. я думаю тут шутили)- потом забил.
обьект задавался как координаты точек-вершин обьекта + его масса + момент инерции + еще пару-тройку параметров
при столкновении по хиттесту пересчитывались линейные и угловые скорости из законов сохранения. запара была как-раз в последних.
если правильно сделать упругое столкновение - остальное будет не сложно
KidsKilla
08.08.2005, 17:21
не фкуриваю пристрастия к хиттесту.
а у тебя есть альтернатива?
KidsKilla
08.08.2005, 19:35
мельон
не фкуриваю пристрастия к хиттесту.
мне он тоже не нравится. Можно и ручками но не хочется - ибо гемор
KidsKilla
09.08.2005, 14:14
дубль
KidsKilla
09.08.2005, 14:21
в любой мало-мальски нормальной игре, даже не только флеш, объект это лишь приближеная копия визуальной части. т.е. персонаж это не сложный объектище с руками-ногами, головой и прочими приблудами, а в простейшем варианте прямоугольник в 2д или цилиндр в 3д. в 2д вообще всё строится на 3х фигурах: окружность, прямоугольник, линия.
обязательно прочти
http://www.ozon.ru/context/detail/id/1614909/
там не только и не столько про игры, сколько про физику.
по поводу хит-теста. он медленный, тупой, работает только в течении 1го кадра, т.е. у тя объект сперва пересечется (что будет видно) а потом ты уже его отведёшь + возможны ситуации, когда 1 объект пролетает сквозь другой. кстати, в той же книжке подробно хитТест обосран.
K.A.T.A.F.A.L.K.E.R
09.08.2005, 19:22
1. на счет губки... у нее одинаковая плотность... но у нее высокая пористость... (наличие пузырьков газа в материале + каналы там и тд и тп)
Не пужай меня! Плотность по определению (так она вводится) - это отношение элементарной массы к элементарному объему (я про объемную плотность): r = dm/dV, и только для случая однородного тела r=m/V. Из простого соотношения, приведенного выше, dm = r*dV, или dm=r(x,y,z)*dx*dy*dz и чтобы получить массу тела, нужно, по сути, написать тройной интеграл по всем координатам... Вот такая штука - физика :D
K.A.T.A.F.A.L.K.E.R
09.08.2005, 19:27
в любой мало-мальски нормальной игре, даже не только флеш, объект это лишь приближеная копия визуальной части. т.е. персонаж это не сложный объектище с руками-ногами, головой и прочими приблудами, а в простейшем варианте прямоугольник в 2д или цилиндр в 3д. в 2д вообще всё строится на 3х фигурах: окружность, прямоугольник, линия.
Ты прав, только как раз в нормальных играх объект очень близок к его визуальному отображению... По крайней мере тот самый хавок, с которого я начал эту тему очень даже с приличной степенью точности приближает физическую модель (читать:объект) к визуальному...
KidsKilla
09.08.2005, 20:01
я лишь имею в виду, что игры не делают через затницу (сперва двигать, а потом проверять стукнется или нет?), а просчитывают заранее, исходят не из визуального представления, а лишь приближают объект в его визуалу.
собсно можно глянуть файлы многих 3д игр, там увидите кучу шкурок человечков неестественно растянутых т.е. шкурку на объект натягивают. а тут с умным видом хотят создать обратное — из шкурки создать объект.
KidsKilla
09.08.2005, 21:03
by da way
http://sourceforge.net/projects/flade
пример http://www.sephiroth.it/blog/img/flade.swf
описание http://www.sephiroth.it/index.php?blogId=2005_07_13_weekly.html
я лишь имею в виду, что игры не делают через затницу (сперва двигать, а потом проверять стукнется или нет?), а просчитывают заранее, исходят не из визуального представления, а лишь приближают объект в его визуалу.
собсно можно глянуть файлы многих 3д игр, там увидите кучу шкурок человечков неестественно растянутых т.е. шкурку на объект натягивают. а тут с умным видом хотят создать обратное — из шкурки создать объект.в 2д всё-таки грань между шкурой и объектом очень прозрачна, если не сказать, что её нет вообще
KidsKilla
09.08.2005, 23:12
в 2д всё-таки грань между шкурой и объектом очень прозрачна, если не сказать, что её нет вообще
врешь-с.
вернее ты не фкурил значения слов шкурка и объект. шкурка это набор пикселей. их надо приложить, в другому набору пикселей, чтобы узнать пересекаются ли они. а это время. и вообще такое поведение криво. разница между шкуркой и объектом такая же как между реальным мувиком и переменной типа объект.
пример:
1) ты реальный. будем тебя двигать туда-сюда, чтобы понять столкнёшься ли ты с чем-нибудь. у тя столько шишек будет...
2) ты в виде набора свойств:
var Ion = new Object();
Ion.age = 20; //к примеру
Ion.sex = male;
Ion.weight = 80;
...
итп.
и будем высчитывать столкнёшься ты или нет с чем-нибудь по формулам. не столкнулся, поместили. цел, невредим.
1 просто, но так поступать глупо.
2 сложнее, но только на 1й взгляд. так же сложными и ненужными кажутся классы, если ты писал программы максимум по 10-15 строк.
ввиду не особой производительности флеша и ограниченной точности математики, писать универсальную модель, без привязки к конкретной задаче, кажется мне утопичным занятием.
гораздо лучше создать основные библиотеки с набором физических явлений и использованию их по мере надобности и точности.
шкурка это набор пикселей. их надо приложить, в другому набору пикселей, чтобы узнать пересекаются ли они. а это время. и вообще такое поведение криво. разница между шкуркой и объектом такая же как между реальным мувиком и переменной типа объект
1)во флэше мувиклип - это и есть обьект в смысле ООП
2)к чему этот пример - не понятно
задача не такая сложная как думается
по большому счету в _руте лежат n мувиклипов в каждом из которых нарисована m-угольная фигура.
у каждого обьекта есть линейные и угловые скорости
onEnterFrame = function
{
в каждом кадре проверяем факт столкновения произвольных двух клипов (хиттестом или ручками - хотя я склоняюсь к идеи что быстрее работает все-таки первое) и пересчитываем новые скорости у 2-ух столкнувшихся обьектов.
изменяем координаты и углы поворота всех клипов на экране
}
все
"в каждом кадре проверяем факт столкновения произвольных двух клипов (хиттестом или ручками - хотя я склоняюсь к идеи что быстрее работает все-таки первое) и пересчитываем новые скорости у 2-ух столкнувшихся обьектов."
при больших скоростях или небольших размерах предмета (даже в одном измерении - например - тонкая плита) - предметы пролетят друг сквозь друга не взаимодействуя
KidsKilla
10.08.2005, 11:38
2 Takato
абсолютно прав.
2 руль
а вот ты не понял.
1) чушь. вектор-растр не имеет значения. это реальные пиксели.
2) для того чтобы понять смысл слов. но, вижу, трудно.
ктоме такатовских слов: чтобы использовать хитТест надо мувик сначала переместить. а это бред. если что-то не понятно перечитай предыдущее. а мне надоело.
Было бы хорошо при каждом воздействии на объект просчитывать его траекторию, и рисовать её по отрезкам в виде Motion Guide, а потом просто двигать объект по ней. Это даст высокую точность, хотя будет затрачено определенное время на просчёт
TERRORist
10.08.2005, 14:50
"предметы пролетят друг сквозь друга не взаимодействуя"
я лично для того чтобы этого не происходило, просчитываю несколько раз за кадр, с делением.
"предметы пролетят друг сквозь друга не взаимодействуя"
я лично для того чтобы этого не происходило, просчитываю несколько раз за кадр, с делением.
Но опять же - это ведь уже не хиттест, а программный рассчет
2 руль
а вот ты не понял.
1) чушь. вектор-растр не имеет значения. это реальные пиксели.
2) для того чтобы понять смысл слов. но, вижу, трудно.
ктоме такатовских слов: чтобы использовать хитТест надо мувик сначала переместить. а это бред. если что-то не понятно перечитай предыдущее. а мне надоело.
1) причем тут реальные пиксели ? флэш, если не ошибаюсь, векторный до мозга костей. Неужели ты думаешь что флэшевский хиттест работает по принципу - совподает ли координата любого пикселя из первого мувика с координатой какого-либо пикселя из второго. Если бы это было так то во флэше можно былоб узнать факт столкновения двух произвольных мувиков не прямоугольной формы используя только его.
2) почему бы не подумать шире. Переместил мувик - хиттест сказал что 2 обьекта столкнулись - переместил мувик назад в положение которое он занимал до столкновения. Другое дело что может придется решать проблему о которой говорил Takato - но эту проблему решать придется не зависимо от того используется хиттест или нет (хотя он тут тоже может помочь), в конце-концов всегда можно ограничится или достаточно большими обьектами или достаточно малыми скоростями.
теперь насчет твоего примера:
складывается впечатление что ты его привел чтобы показать свою крутость в понимании ООП. Потому что первый способ о котором ты говоришь взят с потолка. В любом случае используешь ты хиттест или делаешь все "по формулам" ты работаешь не с изображениями мувиков на экране а с ними самими т.е. с обьектами с их полями и методами.
поясню на том-же самом примере
var Ion = new Object();
Ion.age = 20; // да на основании пола, возраста, и веса вычислить столкнешься ты со стеной или нет =)
Ion.sex = male;
Ion.weight = 80;
Ion.shape = new Object() // тут задается векторная форма твоего тела неважно каким образом
далее пишешь метод Ion.shape.hittest(Object) который вычисляет пересекается-ли Ion.shape с Wall.shape. Также впринципе делает и хиттест просто это скрыто.
Другое дело что может придется решать проблему о которой говорил Takato - но эту проблему решать придется не зависимо от того используется хиттест или нет (хотя он тут тоже может помочь), в конце-концов всегда можно ограничится или достаточно большими обьектами или достаточно малыми скоростями
Можно то можно - в большинстве физический игр так и происходит - но это будет очень серьезное упущение для если не "идеального", то по крайней мере, качественного физического движка, который здесь хотят построить
KidsKilla
10.08.2005, 17:08
1) бл* попробуй mc.hitTest(_x, _y, true); и не пори чушь.
векторный или нет пикселям на это пох. иначе тебе бы пришлось оч туго, задавая размеры мувика.
2)
1. ты теряешь 2 кадра. за 1н кадр не пересчитаешь и не переместишь.
2. нельзя. игры с пулями пример.
3. я крут и без знаний ооп. это тут ни при чем. я показывал разницу подходов — двигать объект (самого Ion'а) или юзать набор свойств. это может быть объект, массив, или просто разбросанные мо муву пересенные. не суть. метод не с потолка — это лучшая практика построения игр и вообще приложений.
> "В любом случае используешь ты хиттест или делаешь все "по формулам" ты работаешь не с изображениями мувиков на экране а с ними самими т.е. с обьектами с их полями и методами."
бред.
var Ion = new Object();
Ion.age = 20; // пол и возраст лишь ПРИМЕРЫ
Ion.sex = male;
Ion.weight = 80;
Ion.shape = new Object() // форма в свою очередь задаётся Высотой-шириной отдельных частей (рук-ног), которые сами по себе — список свойств
пс, плиз, не говори чепухи, если не в курсе.
1) бл* попробуй mc.hitTest(_x, _y, true); и не пори чушь.
mc.hitTest(_x, _y, true) = true если точка с координатами (_x;_y) лежит внутри мувика mc. пересечение двух мувиков так не посчитаешь - тут ты поришь чушь
1. ты теряешь 2 кадра. за 1н кадр не пересчитаешь и не переместишь.
да ладно
2. нельзя. игры с пулями пример.
можно
в играх с пулями считается не пересечение обьект-пуля а пересечение обьект-траектория пули. Если траектория пули - есть MovieClip - опять таки hittest нам в помощь.
3. я крут и без знаний ооп. это тут ни при чем.
не знаю
я показывал разницу подходов — двигать объект (самого Ion'а) или юзать набор свойств.
мы говорим про флэш и только про него
обьясни как ты будешь двигать обьект не использую его свойства _x и _y ?
бред.
не обосновано
Ion.shape = new Object() // форма в свою очередь задаётся Высотой-шириной отдельных частей (рук-ног), которые сами по себе — список свойств
в конце-концов тебе все-равно придется задавать конкретную форму рук/ног/пальцев и т.д и считать пересечения этих примитивов....вообще че тебя в игры все тянет. Мы говорим про возможность создания Physical Engine.
пс. я вкурсе
var Ion = new Object();поставьте на место и не трогайте!!!!!!!!
KidsKilla
10.08.2005, 18:00
mc.hitTest(_x, _y, true) = true если точка с координатами (_x;_y) лежит внутри мувика mc. пересечение двух мувиков так не посчитаешь - тут ты поришь чушь
дык ты вознамерился создать систему, которая такую проблему решает? флаг те в руки.
да ладно
100 пудов
можно
в играх с пулями считается не пересечение обьект-пуля а пересечение обьект-траектория пули. Если траектория пули - есть MovieClip - опять таки hittest нам в помощь.
а теперь подумай что есть пуля. и вспомни лазер. в твоём случае разницы никакой, а она есть.
мы говорим про флэш и только про него
обьясни как ты будешь двигать обьект не использую его свойства _x и _y ?
в том и дело, что я буду двигать объект, когда всё давно просчитано. причем спец функцией renderScene или типа того. 1 раз в кадр, а не как сумасшедший дёргать мувик туда-сюда.
в конце-концов тебе все-равно придется задавать конкретную форму рук/ног/пальцев и т.д и считать пересечения этих примитивов....
именно, но это на порядок лучше. еще 1 плюс — независимая реакция этих примитивов.
вообще че тебя в игры все тянет. Мы говорим про возможность создания Physical Engine.
игры самый яркий пример того, где он нужен. придумай ещё что-нибудь, где он будет использоваться, бум говорить об том.
пс. я вкурсе
но не в теме разговора.
переместил мувик - хиттест сказал что 2 обьекта столкнулись он это скажет только тогда, когда они наложатся друг на друга, а не соприкоснутся краями
Угадываю пароли по аватару ануткыть, мой выдай
дык ты вознамерился создать систему, которая такую проблему решает? флаг те в руки.
если мувик задан как n-угольник (этого вполне достаточно для построения более сложных моделей) то пересечение двух таких мувиков считается просто хоть и без использования одного только хиттеста
а теперь подумай что есть пуля. и вспомни лазер. в твоём случае разницы никакой, а она есть.
если ты уж заговорил про игры то в большинстве ее нету. А там где есть считается пересечение не обьект-пуля а обьект-кусок траектории пули - что не принципиально.
в том и дело, что я буду двигать объект, когда всё давно просчитано. причем спец функцией renderScene или типа того. 1 раз в кадр, а не как сумасшедший дёргать мувик туда-сюда.
дергать мувик нужно только чтобы воспользоваться хиттестом т.к. он работает полюбому быстрее чем если бы ты его сам написал (от его использования никуда не денешься т.к. определять пересечение обьект-точка палюбому нада)
именно, но это на порядок лучше. еще 1 плюс — независимая реакция этих примитивов.
Physical Engine должен уметь считать и не более того взаимодействие ПРИМИТИВОВ - т.е. того из чего дальше ты можешь построить свою модель.
KidsKilla
10.08.2005, 18:55
если мувик задан как n-угольник (этого вполне достаточно для построения более сложных моделей) то пересечение двух таких мувиков считается просто хоть и без использования одного только хиттеста
ток подтвердил, что хитТест фигня.
если ты уж заговорил про игры то в большинстве ее нету. А там где есть считается пересечение не обьект-пуля а обьект-кусок траектории пули - что не принципиально.
ты забываешь, что кусок несётся на большой скорости.
дергать мувик нужно только чтобы воспользоваться хиттестом т.к. он работает полюбому быстрее чем если бы ты его сам написал (от его использования никуда не денешься т.к. определять пересечение обьект-точка палюбому нада)
денешься, при использовании объектного способа.
ты забываешь главное: хитТест скажет пересекся ли мув УЖЕ. но он не даст ответа, пересечется ли он в след. кадре. а без этого любой моторчик ненужная побрякушка и трата времени.
Physical Engine должен уметь считать и не более того взаимодействие ПРИМИТИВОВ - т.е. того из чего дальше ты можешь построить свою модель.
именно. таких моторчиков прорва. пример выше. тут же говорилось об "универсальном" моторчике, считающем столкновения без знания его изначальной формы.
хитТест скажет пересекся ли мув УЖЕ а что мешает рассчитать направление движения и прилепить впереди мувика другой, с точкой. Соответственно, когда точка залезет на какой либо объект - значит основной мувик с ним соприкоснулся
KidsKilla
10.08.2005, 19:08
а что мешает рассчитать направление движения и прилепить впереди мувика другой, с точкой. Соответственно, когда точка залезет на какой либо объект - значит основной мувик с ним соприкоснулся
1) аттач сработает не сразу. 2) ты собрался так рвать задницу, когда есть путь проще? валяй. твоё дело.
ток подтвердил, что хитТест фигня.
сделай лучше - потом говори фигня или нет
ты забываешь, что кусок несётся на большой скорости.
не верно. он стоит на месте, просто на каждом кадре - новый кусок.
денешься, при использовании объектного способа.
ты забываешь главное: хитТест скажет пересекся ли мув УЖЕ. но он не даст ответа, пересечется ли он в след. кадре. а без этого любой моторчик ненужная побрякушка и трата времени.
если поведение модели зависит от реакции пользователя - ответа не даст тебе ни одна мега-навороченая обьектная модель
именно. таких моторчиков прорва. пример выше. тут же говорилось об "универсальном" моторчике, считающем столкновения без знания его изначальной формы.
считающем столкновение двух ПРОИЗВОЛЬНЫХ обьектов-n-угольников заданных набором координат вершин. Вполне общая модель.
не принципиально столкнулся ли обьект уже или столкнется в след. кадре.
ты собрался так рвать задницу, когда есть путь проще?и что это за способ?
не верно. он стоит на месте, просто на каждом кадре - новый кусок.да, только этот кусок при достаточной скорости в 1-м фрейме может быть перед объектом, а в следующем - уже за. так и получится, что проскочил насквозь, не задев препядствие
KidsKilla
10.08.2005, 21:33
не принципиально столкнулся ли обьект уже или столкнется в след. кадре.
принципиально. критикески принципиально. иначе объект не отскочит, а сперва вопьётся в другой, а после того, если повезёт не проскочить, полетит назад.
не верно. он стоит на месте, просто на каждом кадре - новый кусок.
верно. кусок на месте как раз не стоит. про него речь.
если поведение модели зависит от реакции пользователя - ответа не даст тебе ни одна мега-навороченая обьектная модель
при чем тут??? обыкновенный моушн. тут не объектная модель, тут баговость использования хитТеста.
считающем столкновение двух ПРОИЗВОЛЬНЫХ обьектов-n-угольников заданных набором координат вершин. Вполне общая модель.
прочитай внимательнее посты. говорилось именно о произвольной фигуре, а не н-угольнике. предполагалось исходить из того, что фигура неизвестна, а столкновения ложатся на хит тест целиком.
итог: мы говорим походу на разных языках. ты мя не хочешь понимать или все мои слова как-то не так понимаешь. если невтерпёжь — в аську стучи, тут мне надоело распинаться.
Возьмите два ромба и расположив их рядом по диагонали не пересекая друг с другом, проверьте их hitTestом. Ответ будет положительным. И это абсолютно простой пример.
Или еще лучше. Нарисуйте прямоугольный трегольник занимающий ровно половину всего клипа, а на вторую половину положите любой объект и опять проверьте хитТестом и опять будет положительный ответ. Но в отличии от первого случая, он всегда будет положителее, пока ваш второй объект на экране. Тут хитТест вообще бесполезен.
А можно ещё так: рисуем бублик, рисуем круг, меньше дырки бублика, ставим круг в центр бублика, получаем hitTest=true; только разговор о столкновениях, поэтому внутренние пустоты объектов не помешают. К тому же никто и не пытается всё реализовать 1-м хитТестом
KidsKilla
11.08.2005, 16:29
ион, ты уже хоть строку написал? =)
KidsKilla
11.08.2005, 19:40
я имею в виду по теме сабжа. приступил к моторчику?
я имею в виду по теме сабжа. приступил к моторчику?
Ну я начал че-то лепить - тока сомневаюсь, что в одиночку сделаю грамотный движок :o
я имею в виду по теме сабжа. приступил к моторчику?нет, я и сам про это хотел сказать: трепимся уже не 1-й месяц, а толку? Лучше по-моему, сделать немного неграмотно, но сделать, а потом уж дебажить
1.Хит тест для объектов не прокатывает т.к. он смотрит не по форме объекта а по боудинбоксу объектов. т.е. по прямоугольным рамкам грубо говоря которые описаны вокруг объектов.
2. ЧТоб решить эту проблему есть только один способ создавать для каждого объекта набор вершин замыкание которых обарзуют форму объекта. И столкновение проверять если хотябы одна из вершин оджного объекта принадлежит отбласти дркгого объекта то столкновение произошло. ОЧень верно было замечено что если набор вершин составляет выпуклую форму то это сильно упрощает расчет. Кроме того в HAVOK точно так же используется понятие боудинбокса, и просчет столкновения (коллижна) может проходить по нескольким параметрам
- ПО прямоугольнику
- ПО сетке натянутой на обхект , чтоб добиться выпуклой ыормы. т.е. игнорируются все впуклости.
- ПО непосредсвенно самой сетке.
- ПО спесиально созданному дополнительному объекту.
Кстати просчитать коллижн для объекта круглой формы это самый быстрый метод.
Для того чтобя из рисунка нарисовнного получить програмно набор точек, можно хиттестом создесть массив точек которые пиняджлежат объекту(т.к. getPixel до 8-й версии функция еще отсутсвует), т.е. создат бинарную карту с экрана, найти у этой карты описывающие точки и проаксимировать край. ПАрамер апроксимации можно создать разный, так же например для созданиф создение выпуклой описывающей формы.
3. ЧТоб объект не заскивал на другой объект, нужно при столкновении искать точку соприкосновения до столкновения, вычисляя дистанцию для обоих объектов по их пути до то чтоки соприкосновения. И в этом же кадре дать координату отхода.
4. ЧТоб объекты не проскаивали друг через друга на большой скорости.
- проверять пересекались ли их отрезки пути сзахватом на размер объхекта, здесь можно использовать окружность в качестве боудинг бокса.
А вообще самый правильный путь реализации движка физики для флеша.
Это использования примитивов описанных вокруг формы объекта.
- Окружность.
- Прямоугольник
- Многоугольник.
Но если например будет 10 многоугольников скажем по 10 вершин в каждом то это будет ж...а. т.к. флеш такая штука тормозная... Где на создании например переменной уходит куча времени. т.е. теаритически Full Phizic Enfine реализовать можно, но практически нет из за того что он интерпретируемый. Машин таких не придумали еще.
Интересный пример.
Вариант1
x1=random(1000);
y1=random(1000);
x2=random(1000);
y2=random(1000);
dx=x2-x1;
dy=y2-y1;
dist=Math.sqrt(dx*dx+dy*dy);
Вариант2
x1=random(1000);
y1=random(1000);
x2=random(1000);
y2=random(1000);
dist=Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
ка не странно, вариант 2 работает выстрее.
KidsKilla
12.08.2005, 17:32
F_Flash,
ты эту мутотень написал от незнания, что есть:
mc.hitTest(_xmouse, _ymouse, true) ?
мя прост твой п.1 покарёжил.
я и читать дальше не стал
про 2 варианта ничего странного.
лишнее время на присвоение переменной.
+ одна особенность компилятора.
если условие взято в скобки и все переменные просчитаны, то компилятор будет условие в скобках принимать за "1 переменную", не просчитывать каждый раз.
Интересный пример.
Вариант1
x1=random(1000);
y1=random(1000);
x2=random(1000);
y2=random(1000);
dx=x2-x1;
dy=y2-y1;
dist=Math.sqrt(dx*dx+dy*dy);
Вариант2
x1=random(1000);
y1=random(1000);
x2=random(1000);
y2=random(1000);
dist=Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
ка не странно, вариант 2 работает выстрее.
на основании чего ты сделал такой вывод?
про 2 варианта ничего странного.
лишнее время на присвоение переменной.
+ одна особенность компилятора.
если условие взято в скобки и все переменные просчитаны, то компилятор будет условие в скобках принимать за "1 переменную", не просчитывать каждый раз.
не заметил разницы
KidsKilla
12.08.2005, 17:54
не заметил разницы
вот тут:
dx=x2-x1;
dy=y2-y1;
F_Flash,
ты эту мутотень написал от незнания, что есть:
mc.hitTest(_xmouse, _ymouse, true) ?
мя прост твой п.1 покарёжил.
я и читать дальше не стал
про 2 варианта ничего странного.
лишнее время на присвоение переменной.
+ одна особенность компилятора.
если условие взято в скобки и все переменные просчитаны, то компилятор будет условие в скобках принимать за "1 переменную", не просчитывать каждый раз.
Грамотей однако:)
1.mc.hitTest(_xmouse, _ymouse, true) это для точки и объека а не для двух объектов.
2. Не компилятора а итерпритатора.
3. И он так не считает а считает тупо и не анализирует что написано в скобках.
Пример.
Вариант 1
s=getTimer();
x1=50000;
x2=10000;
y1=50000;
y2=10000;
for(i=1;i<=100000;i++){
dist=Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
}
trace(getTimer()-s);
Вариант 2
s=getTimer();
x1=50000;
x2=10000;
y1=50000;
y2=10000;
for(i=1;i<=100000;i++){
dist=Math.sqrt((x2-x1)*(x2-x1)+(x2-x1)*(x2-x1));
}
trace(getTimer()-s);
На эти варианты уходит одинаковое количество вермени хотя если по твоему методу то во втором сучае должна быть явная экономия на 1 операции вычитания.
2KidsKilla
И еще прочитай внимательно, хиттест для точки и объхекта исполтьзуется в моем предложенном вариенте для получения описываемиого шейпа.
Интересный пример.
Вариант1
x1=random(1000);
y1=random(1000);
x2=random(1000);
y2=random(1000);
dx=x2-x1;
dy=y2-y1;
dist=Math.sqrt(dx*dx+dy*dy);
Вариант2
x1=random(1000);
y1=random(1000);
x2=random(1000);
y2=random(1000);
dist=Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
ка не странно, вариант 2 работает выстрее.
Во втором варианте на целых две переменных меньше,если они не нужны лучше их не вводить и считать всё вместе.
KidsKilla
12.08.2005, 17:58
1) понял.
2) ты чего бредишь?
я те про переменные dx и dy говорил. а ты написал 2 АБСОЛЮТНО ОДИНАКОВЫХ кода и удивляешься, что время одинаковое.
я имел в виду:
function(){
var x = Math.PI+2;
return x
}
работает дольше чем
function(){
var x = (Math.PI+2);
return x
}
KidsKilla
12.08.2005, 18:02
Во втором варианте на целых две переменных меньше,если они не нужны лучше их не вводить и считать всё вместе.
переменные нужны, когда однотипных вычислений море. но их иожно как раз просто в скобки поместить, будет тот же эффект.
но я дополнительные переменные использую примерно так:
var tmp = long.long.way.to.my.object.for["example"].xml
for(var i in tmp) trace(tmp[i])
1) понял.
2) ты чего бредишь?
я те про переменные dx и dy говорил. а ты написал 2 АБСОЛЮТНО ОДИНАКОВЫХ кода и удивляешься, что время одинаковое.
Слушай, ты че плозхо соображеаешь что ли:)
"
если условие взято в скобки и все переменные просчитаны, то компилятор будет условие в скобках принимать за "1 переменную", не просчитывать "
т.е.
Вариант1.
dist=Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
По твоему всказываению
это равносильно. созданию двух переменных
1.x2-x1
2.y2-y1
Вариант2
dist=Math.sqrt((x2-x1)*(x2-x1)+(x2-x1)*(x2-x1));
А в этом вариете только одной
(x2-x1)
т.е. по сути экономии в вычитание и созданию как ты говоришь виртуальной скобочной переменной. Но работаю одинаково , так то что ты там сказал это чушь полная.
Значение переменных не важно здесь.
Я плохо знать как экшен скрипт создаёт переменные(какого они типа и как он разбирает их тип),но в с++ можно указать её конкретный тип(int,double,char)и сэкономить в некоторых случаях память(int-4 байта,double-8 байт),а также исключить запихивания в переменную типа int значение типа char...
Я плохо знать как экшен скрипт создаёт переменные(какого они типа и как он разбирает их тип),но в с++ можно указать её конкретный тип(int,double,char)и сэкономить в некоторых случаях память(int-4 байта,double-8 байт),а также исключить запихивания в переменную типа int значение типа char...
Верно, о чем и речь, что на создение переменной уходит очень много времени во флеше. Это один из явных примеров о медленности скрипта флеша .
вот тут:
dx=x2-x1;
dy=y2-y1;
это я видел :)
я про разницу во времени.
мне кажется(перекрестился),что флэш так тормозит оттого что он почти полностью автоматизирован,чтобы народ не парился...:)
в том же с++ чтобы создать массив содержащий разные типы нужно создать либо структуру либо класс,а флэш он ,наверно, делает это автоматически,даже когда в массиве данные одного типа(массив это к примеру)
2iNils
Ну через геттаймер проверь.
s=getTimer();
for(i=1;i<=10000;i++){
x1=random(50000);
x2=random(50000);
y1=random(50000);
y2=random(50000);
dist=Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
}
trace(getTimer()-s);
-------------------------------------------
s=getTimer();
for(i=1;i<=80000;i++){
x1=random(50000);
x2=random(50000);
y1=random(50000);
y2=random(50000);
dx=x2-x1;
dy=y2-y1;
dist=Math.sqrt((dx)*(dx)+(dy)*(dy));
}
trace(getTimer()-s);
Верно, о чем и речь, что на создение переменной уходит очень много времени во флеше. Это один из явных примеров о медленности скрипта флеша .
если пройтись дебагером то разница в коде будет такая:
1.
13 _push "dx"/*Dic[4]*/, "x2"/*Dic[2]*/
14 _getVariable
15 _push "x1"/*Dic[0]*/
16 _getVariable
17 _subtract
18 _setVariable
19 _push "dy"/*Dic[5]*/, "y2"/*Dic[3]*/
20 _getVariable
21 _push "y1"/*Dic[1]*/
22 _getVariable
23 _subtract
24 _setVariable
25 _push "dist"/*Dic[6]*/, "dx"/*Dic[4]*/
26 _getVariable
27 _push "dx"/*Dic[4]*/
28 _getVariable
29 _multiply
30 _push "dy"/*Dic[5]*/
31 _getVariable
32 _push "dy"/*Dic[5]*/
33 _getVariable
2.
13 _push "dist"/*Dic[4]*/, "x2"/*Dic[2]*/
14 _getVariable
15 _push "x1"/*Dic[0]*/
16 _getVariable
17 _subtract
18 _push "x2"/*Dic[2]*/
19 _getVariable
20 _push "x1"/*Dic[0]*/
21 _getVariable
22 _subtract
23 _multiply
24 _push "y2"/*Dic[3]*/
25 _getVariable
26 _push "y1"/*Dic[1]*/
27 _getVariable
28 _subtract
29 _push "y2"/*Dic[3]*/
30 _getVariable
31 _push "y1"/*Dic[1]*/
32 _getVariable
33 _subtract
как видите хотя операции разные, их количество одинаково
мне кажется(перекрестился),что флэш так тормозит оттого что он почти полностью автоматизирован,чтобы народ не парился...:)
в том же с++ чтобы создать массив содержащий разные типы нужно создать либо структуру либо класс,а флэш он ,наверно, делает это автоматически,даже когда в массиве данные одного типа(массив это к примеру)
Естественно. На тип например Byte выделяется 1 байт памати всего, и ты знаешь что он принимет значение от 1 дл 256 . И тебе этого хватает.
А во флеше ты можешь например булеан создать так он в себе уже будет внутри содержать непонятную сруктуру и непонятно сколько памяти. Но зато все просто. Ты можешь на лету из булеана сделать целый супер объект с громадной вложеннолстью.
Ну через геттаймер проверь.
перед тем как спросить с чего вы взяли я это и сделал. результат был такой: через раз, когда первый быстрее когда второй.
и кстати, не корректно первую функцию 10000 запускать, а вторую 80000 :)
хмм...а нельзя ли принудительно сделать переменную только такого типа какого мне надо?
если пройтись дебагером то разница в коде будет такая:
13 _push "dist"/*Dic[4]*/, "x2"/*Dic[2]*/
14 _getVariable
15 _push "x1"/*Dic[0]*/
16 _getVariable
17 _subtract
18 _push "x2"/*Dic[2]*/
19 _getVariable
20 _push "x1"/*Dic[0]*/
21 _getVariable
22 _subtract
23 _multiply
24 _push "y2"/*Dic[3]*/
25 _getVariable
26 _push "y1"/*Dic[1]*/
27 _getVariable
28 _subtract
29 _push "y2"/*Dic[3]*/
30 _getVariable
31 _push "y1"/*Dic[1]*/
32 _getVariable
33 _subtract
как видите хотя операции разные, их количество одинаково
2KidsKilla вот прекрасный пример показывает то что одинаковые скобки флеш не ищет а считает все тупо и последовательно не анализируя выражение.
2iNils да, на создание переменной больше вренеи тратится чем на substract
перед тем как спросить с чего вы взяли я это и сделал. результат был такой: через раз, когда первый быстрее когда второй.
и кстати, не корректно первую функцию 10000 запускать, а вторую 80000 :)
смысл в том что вторая всегда будет показывать разницу в одну сторону а первая вриьируется на незначительно, это еще может и влиять паралленьный програмы запущенные.
разница в 35-40 мс на 10000 подсчетов, ну не знаю за уши как притянуто
разница в 35-40 мс на 10000 подсчетов, ну не знаю за уши как притянуто
Ну ты можешь просто не меняя код позапускать у тебя разница будет такая же. Это погрешность просто. Нелтьза создать иделаьные условия.
В первом примере разница 10% аво втором 1% и то не понятно в какую сторону.
1.Хит тест для объектов не прокатывает т.к. он смотрит не по форме объекта а по боудинбоксу объектов. т.е. по прямоугольным рамкам грубо говоря которые описаны вокруг объектов.
2. ЧТоб решить эту проблему есть только один способ создавать для каждого объекта набор вершин замыкание которых обарзуют форму объекта. И столкновение проверять если хотябы одна из вершин оджного объекта принадлежит отбласти дркгого объекта то столкновение произошло.
вот-вот...я это и пытался вдолбить - что если задавать обьект в виде массива вершин - этого будет вполне достаточно. А столкновение считать либо по хиттесту либо попытаться написать свою функцию, но не факт что получится быстрее.
А вообще самый правильный путь реализации движка физики для флеша.
Это использования примитивов описанных вокруг формы объекта.
- Окружность.
- Прямоугольник
- Многоугольник.
первые два - частные случаи последнего
первые два - частные случаи последнего
окружность - не многоугольник. ее ваще задать можно центром и радиусом - и расчет на соприкосновение с ней делать, как уже сказали, гораздо легче
окружность - это по сути правильный многоугольник с бесконечно большим количеством бесконечно малых сторон
Верно, о чем и речь, что на создение переменной уходит очень много времени во флеше. Это один из явных примеров о медленности скрипта флеша .да, тут они не рассчитали. Надо было им сделать как JavaScript: хранится программа в виде скрипта, а перед выполнениемвсё компилится в машинно-зависимый код, что доводит скорость выполнения почти до С(++). Я тут игру 1-у пишу с немеренным количеством графики и заметил вот что: в самом начале все дико тормозит, но когда каждый каждый клип по всем фреймам пройдется и все переменные задействуются, всё идет намного быстрее. Это наводит на мысль, что память для каждого объекта выделятся не при его формальном создании, а непосредственно перед использованием. Видимо, макромедийцы таким образом решили "размазать" загрузку по всей флешке тонким слоем, чтобы не было заметно, но не рассчитали, что если посреди воспроизведения потребуется выделить немеренный блок памяти то добром это не кончится. Отсюда новый вывод: чтобы снизить тормоза до минимума надо все объекты до реального использования заюзать формально:
var a:Number = 123;
a=a+1-1;
my_mc.play();
и т.д..
ЗЫ: прошу простить за флейм, но раз уж затронули эту тему, решил поделиться давнишними мыслями и узнать, что вы думаете по этому поводу.
окружность - это по сути правильный многоугольник с бесконечно большим количеством бесконечно малых сторон
Который будет бесконечно тормозить во флэше :D
более того - он везде вызовет падение системы при попытке выполнения
TERRORist
13.08.2005, 03:47
более того - он везде вызовет падение системы при попытке выполнения
У тебя Линух чтоли?)
Люди, что вы мутите? Какие окружности, прямоугольники, многоугольники? Все ж по точкам строится. Прямоугольник - 4 точки. Многоугольник - много. Окружность - как выяснилось, вообще бесконечность.
Сделайте нормальную физику для точек. Введите зависимость их координат друг от друга. Соедините их линиями или прилепите мувики. Чуть-чуть сопромата и фантазии;) и Ваш кубик, как резиновый, скачет, переворачивется и отпрыгивает.
У тебя Линух чтоли?)
Люди, что вы мутите? Какие окружности, прямоугольники, многоугольники? Все ж по точкам строится. Прямоугольник - 4 точки. Многоугольник - много. Окружность - как выяснилось, вообще бесконечность.
Сделайте нормальную физику для точек. Введите зависимость их координат друг от друга. Соедините их линиями или прилепите мувики. Чуть-чуть сопромата и фантазии;) и Ваш кубик, как резиновый, скачет, переворачивется и отпрыгивает.
RESPECT
только вот как выяснилось - не совсем чуть-чуть
и ваш кубик, как резиновый, скачет, переворачивется и отпрыгивает
ну для начала хотя бы квадратик :)
Забил я на вашу заумную (полоумную, безумную) болтовню и вершинах,хиттесте, дебаггере и прочих "страшных словах".
Короче, катафакер (или картапалкер, катафотер, фотокатер - хрен его разберет) предлагает раздуть из резинового изделия №2 воздушный шар - а спрашивается, нахрен надо?
По делу: если он хочет, чтобы 2д объекты взаимодействовали соответственно законам физики, которая, как известно, близка к реальности, а в ней-родимой измерения аж 3, то напрашиваецца три вывода (а тому, кто будет писать код, много-много вводов в проход):
1. Либо хреном непонятным из (как он говорит - "нарисованных карандашом") 2д объектов делать 3д, а потом их взаимодействие описывать мотором от дяди Ашота (ака Reactor Havok'а). Последнее легко, первое - сломаешь голову. Ведь... а, ну его к черту.
2. Либо описывать взаимодействие 2д тел в 2д же пространстве, с физикой для 3д - вот, сам не понял что сказал.
3. Делать имитацию физики каким-нибудь простеньким кодом, например, симулятор трения, упругости, ну и еще чего-нибудь эдакого - "для виду". Это реализовать нетрудно.
А вот какие-то господа говорили, что мол "без света и преломления не круто", то пускай они сами себе и крутят. Не лечите мозги людям - купите тридэмакс и штудируйте его; найдете омнилайт - считайте, что можете перестать крутить то, что вы там крутили, когда кодингом преломления света при переходе из градиента в растр занимались.
Чую, придет к кому-то палковводец, как два пальца абасфальтить.
2 Takato :
да, квадратика хватило бы. Типа прыгающего кусочка каучука - такую модель бы закодировать. :rolleyes:
По делу: если он хочет, чтобы 2д объекты взаимодействовали соответственно законам физики, которая, как известно, близка к реальности, а в ней-родимой измерения аж 3, то напрашиваецца три вывода
3Д обьекты (векторные ес-но, с заливками, а не текстурами) во флэше легко рисовать. ТЕОРЕТИЧЕСКИ 3д от 2д отличается в коде лишь вводом третьего измерения и большей громоздкостью. НО. При вводе 3-го измерения о ХИТТЕСТЕ не сможет идти и речи - так что, имхо, лучше сразу от него отвыкать, если есть хоть малейшие мысли после создания 2Д перейти к 3-ему измерению
для 3д можно написать свой хиттест, он будет не намного сложнее 2-хмерного
У тебя Линух чтоли?)
Люди, что вы мутите? Какие окружности, прямоугольники, многоугольники? Все ж по точкам строится. Прямоугольник - 4 точки. Многоугольник - много. Окружность - как выяснилось, вообще бесконечность.нет, у меня винда (и мак), а что натолкнуло тебя на мысли о Линуксе? Я говорил о теоретическом представлении окружности, в компе, ессно всё упрощено
для 3д можно написать свой хиттест, он будет не намного сложнее 2-хмерного
Ну если свой - то может быть - тока легче уж сразу програмно все столкновения считать имхо
TERRORist
13.08.2005, 17:19
конечно кубик, а не квадратик. просто в слове кубик 5 букавок, а в слове квадратик явно побольше. воистину лень - двигатель прогресса!)
кстати я бы сначала сделал 2д. потому как флеш все-таки на него рассчитан певоначально. и вменяемую игрушку в 3д сделать сложнее в разы. кто-нить мне покажет такую на флеш?)
лучше старое-бодрое 2д. вормс, инкредебильная машина, и куча других игр, где главное - физика, вот пример.
Niketas в топике http://www.flasher.ru/forum/showthread.php?t=67857 сдалал прикольную вещицу. с "упругой" окружностью...
Прикольно... Эту тему, кстати над заюзать в Physical Engine, а то там народ (включая меня) уже заворотом мозгов страдать начинает
А вот как бы это все могло выглядеть: http://yugop.com/
Правда здорово!? Там за шарики еще тянуть можно...
Какая-никакая, но реализация некоторого физического движка! Гравитация, упругость, инерция... может еще и трение есть?
Берите пример, товарищи! Можно часами, днями, годами обсуждать, а можно за одну ночь сесть и сделать!
TERRORist
14.08.2005, 13:17
пример никетаса конечно неплохой, но на мой взгляд, не имеет ничего общего с физическим движком.
TERRORist
14.08.2005, 13:19
то, что изображено на югпопе, я уже проделывал, но в виде капель воды, которая текла, переливалась и т.д.
Кстати, всех участников этого топика поздравляю - уже ровно месяц прошел (тема создана 13.07)! Правда, интересная тема? 80)
...в виде капель воды, которая текла, переливалась и т.д.
Давай, похвастай: выложи ссылку, а мы заценим!
И вообще, с твоим рвением и энтузиазмом уже давно пора выложить исходники от "Havok For Flash" (с) TERRORist на форуме!
Люди, давайте напишем ТЗ, а TERRORist его реализует?!
Niketas в топике [url]Можно часами, днями, годами обсуждать, а можно за одну ночь сесть и сделать!
За ночь не думаю, что получится. Из две тоже.
И по-мойму там жуткий пример работы hitTest.
TERRORist
14.08.2005, 19:45
kost@, может меня сначала спросите???
iNils, за ночь я думаю можно.
TERRORist
14.08.2005, 19:52
А нету сырцов "Havok For Flash" (с) !(
у кого есть, ссылу дайте или сразу *.fla покажите(что лучше)
кстати в архиве помойму тоже здоровая аналогичная тема есть.
iNils, за ночь я думаю можно.
Не хочешь попробывать ради эксперимента? Можно даже не ночью, а за два вечера.
1. kost@, может меня сначала спросите?...
2. А нету сырцов "Havok For Flash" (с)
3. кстати в архиве помойму тоже здоровая аналогичная тема есть.
1. Забей, мы уже все решили... потом будешь продавать, станешь flash-магнатом! Давай-давай, напрягайся 80)
2. Это я уже придумал название будущего чуда. Думаю, что сырков таких ты по сети вряд ли найдешь... Только (как это тут назвали) жалкие примеры использования hitTest'ов всяких!
3. Че за "здоровая тема"? кинь линк
Да, а за ночь-то, конечно, стоящий мотор вряд ли получится навоять. Даже при условии "полный холодильник пива"! Хорошо, если результат через месяц в бета-виде выйдет...
наконец-то раскочегарились!!давно уже пора было его сделать!!флэшеры-физики всех стран объединяйтесь:)
TERRORist
14.08.2005, 20:46
п2-я и не думал, что в сети такая напряженка на сырцы с флешовой физикой !)
да нет, конечно, что-то может и завалялось... не думаю, что этот топик совершает прорыв в области flash и давно уже где-то все реализовано. вопрос в том, где? Да, я видел пару примеров реализаций физических явлений:
знаменитый пример со скелетом (http://games.spbland.ru/play/386/)
или то про что я раньше говорил (http://yugop.com/)
вот еще пример (http://flash-ripper.com/books/gurski/gurski-fmx2004-chapter-09.zip)
есть еще пару примеров на Flash® Film Festival (http://www.flashforwardconference.com))
и еще куча разных примеров...
Осталось это все в одно собрать!
можно разбить задачу на модули и дать каждому, кто может и хочет свой модуль кодить! я так понимаю, что террорист один тут напрягаться не станет.
есть тут желающие реализовать то, о чем так долго здесь писали?
давайте конкретно, кто хочет принять участие? я лично непрочь...
Для начала можно Ньютоновские замутки реализовать, например!
TERRORist
15.08.2005, 02:23
че-то у меня не так круто получается, но я ошибок кучу наверное наделал. но уже что-то резиновое прыгает тама.
че-то у меня не так круто получается, но я ошибок кучу наверное наделал. но уже что-то резиновое прыгает тама.
Чето там очень часто под пол проваливается и скачет то сильнее то медленне. И угловые скорости не проработаны
TERRORist
15.08.2005, 02:38
А вот тоже сегодня набросал как определить, под каким углом точка ударяется в поверхность, но чего-то пока не получается заюзать этот самый угол. Где-то была своя флешка, но не нашел. Может кто поможет???
Точка летит с ускорением, его проекция на оси 0x=x и 0y=y
При ударе мы имеем угол вектора ускорения r1=Math.atan2(y,x) и угол поверхности r2.
Чего-то я не соображу как угол отражения r3 считать.
Из него обратно можно будет посчитать x=Math.cos(r3) и y=Math sin(r3)
строку с поправкой закомментил. Текстовое поле, как нетрудно догадаться, показывает угол поверхности.
TERRORist
15.08.2005, 02:40
Чето там очень часто под пол проваливается и скачет то сильнее то медленне. И угловые скорости не проработаны
угловых скоростей нет. А так же вообще нет ни одного использования _rotation
А чем вам мой ящик то так не понравился?Его чуть доработать для наклонных(чтоб он углы узнавал под собой-но тут TERRORist уже предложил хороший вешь с линией)и всё...
ну да, чего-то прыгает... есть хоть какой-то сдвиг с места. но какая там физика? что ты моделировал? 3-ий закон ньютона? или юнга?
прикольно, когда сам меняешь параметры. сделай еще интерфейс, если не ломает, чтобы указывать, например:
- массу объекта
- его коэффициент упругости
- упругость поверхности
сделай, чтобы треугольничек можно было кидать с произвольной высоты и под произвольным углом
доработай гравитацию, а то скачет хрен поймешь как без конца
почитай идею о сумме векторов сил (второй закон ньютона) и попробуй ее реализовать
а так прикольно!
TERRORist
15.08.2005, 13:41
А чем вам мой ящик то так не понравился?Его чуть доработать для наклонных(чтоб он углы узнавал под собой-но тут TERRORist уже предложил хороший вешь с линией)и всё...
В том-то и дело, что ЕГО ты под наклонные никак не переделаешь
TERRORist
15.08.2005, 13:55
ну да, чего-то прыгает... есть хоть какой-то сдвиг с места. но какая там физика? что ты моделировал? 3-ий закон ньютона? или юнга?
прикольно, когда сам меняешь параметры. сделай еще интерфейс, если не ломает, чтобы указывать, например:
- массу объекта
- его коэффициент упругости
- упругость поверхности
сделай, чтобы треугольничек можно было кидать с произвольной высоты и под произвольным углом
доработай гравитацию, а то скачет хрен поймешь как без конца
почитай идею о сумме векторов сил (второй закон ньютона) и попробуй ее реализовать
а так прикольно!
А что такое 3-ий закон ньютона? А кто такой Юнг(фамилие знакомое)?)
Прежде чем интерфейс заюзать, надо баги почистить. Щас fla выложу.
было ведь два моих сырца, предлагаю сначала сделать тот который с 1 объектом, для этого совет нужон(№145 пост). Или сами измените как надо.
интересно конечно, но чтоб это все работало быстро, надо раздувать размер плеера до шокверовсого (>3 Мб), для этого убедить Макромедию+Адобу на пойти на такой шаг ...
А если сделать все программными средствами на основе флеша... даже 8-го... не реально по причине тормозов.
Я лично испольую Директор как 3D расширитель, вставляю в презентацию оконо браузера и в нем интерактивное 3D.
Все делать в директоре конечно можно, но много гемора (точно такое же говорят Директорологи по отношению к Флешу :))))
Объективно чистый флеш проигрывает Директору... пока что... :)
Директорологи с опаской глядят на Flash - 8
TERRORist
15.08.2005, 14:03
:eek: :eek: :eek: :eek:
Ладно , начнем с простого.
http://www.freewebs.com/gwiller/spfere2.html
Написал вчера эту штуку, она работает для любой связки объектов.
Здается массив точек и массив связок, указыватеся тип связки резинка или пружина, их элластичность и длина в не деформированном состоянии, отличие резинки от пружины только в одном - резинка имеет свойсво только втягивать пружина как втягивать так и отталкивать.
Идея в чем, здеь показан пример респределения и баланс сил дейсвующих на объекы. Т.е. простая сумма векторов воздейсвия.Это самый простой пример рапределения сил. Здесь нет коллижна.
Для кубика падающего на плоскоость нужно применять похожий принцип, но для каждой из четырех точек кубика нужно делать свое ускорение. А движение самого кубика будет просчитываться из суммы ускорений сил дейсвующих на каждую точку.
Если будут вопросы задавайте. На кубик врмени не хватило напишу по мере возможности.Возможно мой пример кому то поможет.
Кстати вопрос всем на размышление, все знают что объекы с разной массой опущенные с одинаковой высоты в одно и тоже время, при отсутсвии сопротивления воздуха упадут одновеменно. И так же все знают что сила тяжестя в состоянии покоя на поверхности у них разная. ПОчему они падают с одинаковой скоростью если их масса различна? :)
Написал вчера эту штуку, она работает для любой связки объектов.
Для кубика падающего на плоскоость нужно применять похожий принцип, но для каждой из четырех точек кубика нужно делать свое ускорение. А движение самого кубика будет просчитываться из суммы ускорений сил дейсвующих на каждую точку.
Пять балов! Офигенная реализация!
Я уже давно предлагал реализовать все с помощью векторофф. И народ поддержал. Террорист реализовал все на основе random() и никакой физики там нет. Только пример работы hitTest();
Кстати вопрос всем на размышление, все знают что объекы с разной массой опущенные с одинаковой высоты в одно и тоже время, при отсутсвии сопротивления воздуха упадут одновеменно. И так же все знают что сила тяжестя в состоянии покоя на поверхности у них разная. ПОчему они падают с одинаковой скоростью если их масса различна? :)А по качану... физику нужно учить!!!
Второй закон Ньютона F1=m1*a
Закон гравитации F2=G*m1*m2/R*R
F1=F2 -> G*m1*m2/R*R = m1*a -> a = G*m2/R*R
а - ускорение, с которым тело будет падать на землю
G - гравитационная постоянная
m1,m2 - масса объекта и Земли
R - отгадай что? 80)
В идеале я вижу движок таким:
указываются объекты, которые на которые попадают в среду, в которой действуют силы. Указываются силы, которые будут действовать силы (силы выбираются с помощью чекбоксов: законы Ньютона, Гравитация, упругость, трение...). Хорошая задумка насчет того, что тело состоит из нескольких точек (она уже давно мелькала в этом топике) и суммарная сила расчитыватся для каждой точки. А суммарная сила, действующая на весь объект, расчитывается как суперпозиция действия сил на все точки!
Для каждого объекта указываются параметры, включая собственную силу (ну например, если объект движется за счет своего двигателя)... и понеслася!...
шагатель :) (http://www.inils.ru/flasher/stepGo102.html)
Пять балов! Офигенная реализация!
Я уже давно предлагал реализовать все с помощью векторофф. И народ поддержал. Террорист реализовал все на основе random() и никакой физики там нет. Только пример работы hitTest();
А по качану... физику нужно учить!!!
Второй закон Ньютона F1=m1*a
Закон гравитации F2=G*m1*m2/R*R
F1=F2 -> G*m1*m2/R*R = m1*a -> a = G*m2/R*R
а - ускорение, с которым тело будет падать на землю
G - гравитационная постоянная
m1,m2 - масса объекта и Земли
R - отгадай что? 80)
^))
Да уж:)
ОТвет не верный.С точки зрения суждения.
Смысл вопроса был не как посчитать ускорение на какой либо планете, а почему при различных силах тяжести ускорение одинаково.
F1=m1*a
F2=G*m1*m2/R*R
Это одно и тоже. РАзница только что F2 общая формула для любых 2-х тел. А первая формула это упрощенный вид второй формулы,и введено полнятие было g, для тього чтобы не зная массу земли и ее радиус ,можно было применять вычисления. f1- это следсвие формулы F2 , они не являются независимыми для доказательсва:) .ПОнятно что g это и есть ускорение тела:) ПОтому что это определение.
Можно задать вопрос так
F2=G*m1*m2/R*R она явно зависит от массы , т.е. сила тяжети в данной точке явно зависит от массы объекта.Но ускорение постоянно.
Почему?
Пример 2 объекта падают с одинаковой скоростью, но как только на них будет воздесвовать какая либо сила например сила натяжения резинки то объекты будут продолжать движение с разной скоростью и разной траекторией.
old_dark_elf
15.08.2005, 16:16
обьекты упадут одновременно, потому что:
S=s0+V0*t+a*t*t/2
т.е.
V=V0+a*t
осюда видим - скорость (в том числе и падения) не зависит от Силы а зависит от ускарения и кста не F=m*a, а a=F/m ;) (причинно следственные связи)
F2=G*m1*m2/R*R она явно зависит от массы , т.е. сила тяжети в данной точке явно зависит от массы объекта.Но ускорение постоянно. Почему?
Уж не хочешь ли ты спросить, почему гравитационная постоянная, постоянна?! 80)
TERRORist
15.08.2005, 16:37
так, так!!! это где это я реализовал _все_ с помощью рандомов??? рандомно только ускорение точек выбиралось.
обьекты упадут одновременно, потому что:
S=s0+V0*t+a*t*t/2
т.е.
V=V0+a*t
осюда видим - скорость (в том числе и падения) не зависит от Силы а зависит от ускарения и кста не F=m*a, а a=F/m ;) (причинно следственные связи)
:) Естесвенно что скорость зависит от ускорения:) А ускорение зависит от сил десвующих не объект, будь то двигатель автомобиля или сила выталкивания отбъека из жидкости и т.д.это все силы, сумма которых и дает ускорени в точке:) Но почему же на ускорение свободного падения сила тяжести к пирмеру не действует, или поставим вопрос так, какая сила дествует на падающий объект?
2kost@
"Уж не хочешь ли ты спросить, почему гравитационная постоянная, постоянна?! 80)"
Я тебе даже отвечу на этот вопрос)
Никто не знает постоянна она или нет, возможно в пределах нашей галактики она такая. А в другой другая.
это оабстакная величина которая сейчас заменяет пробелы в знаниях нынешней физики. Когда то ньютон просчитал g. Сейчас появились возможности просчитать почему g~9.8 не земле. Чуть более общее понятие ввели и заметили что при вычислениях для небьесных тел ,все же присутсвует некий коефициет. Вот и назвали его гравитационной постоянной, а почему его значение именно таково никто не знает.
--------------------
Неужели никто не может ответить грамотно на мой вопрос?)
KidsKilla
15.08.2005, 16:54
титанам физ моторчиков.
http://www.initclip.com/articles/0000004/
по поводу скобок я лоханулся. разговор шел только о константах. переменные ни при чем.
old_dark_elf
15.08.2005, 16:56
<<Но почему же на ускорение свободного падения сила тяжести к пирмеру не действует, или поставим вопрос так, какая сила дествует на падающий объект?>>
Как так не действует???
Хочешь сказать, что если обьектотело поднять на два метра от земли и сделать так, что бы скорость обьекта равнялась нулю, а затем убрать руку - то обьект зависнит???
Нет - он начнет падать => Сила действует, НО:
a1=F1/m1 в тоже время F1=G*m1*m2/R*R
т.е. a1=(G*m1*m2/R*R)/m1 =G*m2/R*R
отсюда видно, что масса самого обьекта не действует на ускорение этого обьекта...
так, так!!! это где это я реализовал _все_ с помощью рандомов??? рандомно только ускорение точек выбиралось.
:) ну а зачем тогда вообще точки использовать если для них ускорение рандомное? Ну сделай один вектор движения рандомный и ротейшн к нему тоже радномный:)и все твое движения заменится 5-ю строчками кода.
это оабстакная величина которая сейчас заменяет пробелы в знаниях нынешней физики..., а почему его значение именно таково никто не знает.. Если великие ошибались, то почему ты думаешь, что на ФЛЕШЕРЕ тебе дадут нормальный ответ? Давай еще раскажи мне, что уже есть скорость, больше, чем скорость света, расскажи о телепортации фотонов, о разуме атомов...
Переспи со своей учительницей по физике и она тебе все расскажет и покажет 80)
Я вообще не въезжаю, зачем это тебе нужно знать, почему при разной силе ускорение одинаковое. В 9-м классе мне это тоже казалось неестественным и я говорил, что пол-кирпича упадут медленнее, чем кирпич (серъезно). Учительница надо мной смеялась, а я плакал 80)
Я не могу ответить, почему, да и вряд ли кто другой объяснит "грамотно". Может на другом форуме попробовать поинтересоваться?
Давайте дальше пойдем... Это вопрос, конечно, интересный. Но дело стоит 80)
не помню точно, что там за формула, но фишка в том, что если выводить формулу ускорения свободного падения, то масса в ней сократится
[QUOTE=F_Flash]это оабстакная величина которая сейчас заменяет пробелы в знаниях нынешней физики..., а почему его значение именно таково никто не знает.
Если великие ошибались, то почему ты думаешь, что на ФЛЕШЕРЕ тебе дадут нормальный ответ? Давай еще раскажи мне, что уже есть скорость, больше, чем скорость света, расскажи о телепортации фотонов, о разуме атомов...
Переспи со своей учительницей по физике и она тебе все расскажет и покажет 80)
Я вообще не въезжаю, зачем это тебе нужно знать, почему при разной силе ускорение одинаковое. В 9-м классе мне это тоже казалось неестественным и я говорил, что пол-кирпича упадут медленнее, чем кирпич (серъезно). Учительница надо мной смеялась, а я плакал 80)
Я не могу ответить, почему, да и вряд ли кто другой объяснит "грамотно". Может на другом форуме попробовать поинтересоваться?
Вопрос был задан про суть физикал енжин .
Отвечу почему. Например дествительно чтоб расчитать ускоренире в точке в данный момент, нужно сложить все силы дейсвующие на объхект в текущий момент времни( а точнее векторов сил). Но если для просчета взаимодейсвия сил ты не будешь использовать массу объекта то объект будет вести тебя так же как и все остальные.не провисать на нике ьольше чем другие, не тануть в жидкости и т.д. ТАк вот вопрос сводился к рассуждению а не доказательсву. Но если в момент падения использовать массу объекта то объекты будут падать с разной скоростью, что не является верным.Так вот что получается что при падении идет расчет один при взаимоджейсвии других сил расчет другой.
НАдеюсь суждения понятны, но в них есть ошибка. НЕ буду говорить какая, возможно догадаетесь.ПРосто по логике проверка падает ли просто объект или на него воздесвуют доп силы и от этого вести тот или иной расчет не верное решение.но как быть?
титанам физ моторчиков.
http://www.initclip.com/articles/0000004/
по поводу скобок я лоханулся. разговор шел только о константах. переменные ни при чем.
Хорошая статья.
old_dark_elf
15.08.2005, 17:20
а все потому, что кто-то плохо учил физику...
ты берешь суперпозицию всех сил, и делишь ее на масу обьекта - получаешь ускорение...
по этому-то и получается, что при разных силах ускорение одинаковое (читай мой предыдущий пост, если хочешь разобраться с силой притяжения...
титанам физ моторчиков.
Давно читал, но уже многое позабывал... В целом статья очень гуд! 80)
А в целом, круто было бы еще реализовать систему работы с векторами! Это ведь по сути самое важное. Кто-нибудь до этого с этим работал?!
а все потому, что кто-то плохо учил физику...
ты берешь суперпозицию всех сил, и делишь ее на масу обьекта - получаешь ускорение...
по этому-то и получается, что при разных силах ускорение одинаковое (читай мой предыдущий пост, если хочешь разобраться с силой притяжения...
Молоток! ответ верный! Респект.
титанам физ моторчиков.
http://www.initclip.com/articles/0000004/
по поводу скобок я лоханулся. разговор шел только о константах. переменные ни при чем.
Кстати, помню у меня с кем-то была дисскусия (но не помню, с кем) на счет отображения объектов с визибле=0
"Невидимый клип
Если графический интерфейс состоит из множества скрытых клипов на сцене, которые могут быть показаны при определенных событиях или действиях пользователя, то важно правильно их прятать. Использование свойства _visible, и тем более _alpha (например, may_mc._visible = false; или may_mc._alpha = 0;) на объекте муви-клипа, совсем ошибочно. В действительности, плеер только не отрисовывает невидимый клип, но он его выполняет. Это легко проверить если поместить муви-клип с анимацией на сцену и в его фреймах написать вывод в Output при помощи команды "trase()". Получим бесконечную обработку невидимого клипа. Это ощутимо может забрать ресурсы при достаточно большом количестве скрытых роликов. Выходом из этой ситуации может послужить дополнительный пустой фрейм на муви-клипе, на который мы переходим командой "gotoAndStop()", что запрещает его дальнейшее выполнение. Если клип больше не нужен или не будет использоваться длительное время, желательно вообще удалять его "my_mc.unloadMovie();". "
силу трения среды чуть больше поставь они остановятся.
упругость пружин большая.
представь себе прижину которая не лопаятся при любой деформации, и сдави метровую до 1 мм ее сила толчка будет немеренная. вот и успокаевается эта сила долго.
силу трения среды чуть больше поставь они остановятся.
упругость пружин большая.
представь себе прижину которая не лопаятся при любой деформации, и сдави метровую до 1 мм ее сила толчка будет немеренная. вот и успокаевается эта сила долго.
Угу, уже разобрался
вот такую штуковину (http://www.emomi.com/download/jones/p1aalgva.html) если реализовать, то потом все упирается в знание физики...
вот такую штуковину (http://www.emomi.com/download/jones/p1aalgva.html) если реализовать, то потом все упирается в знание физики...
Чето у мя там только красный крестик
Чето у мя там только красный крестик Посмотри настройки браузера... там похоже на JAVA какая-то лабудень... Короче, вруби че у тебя там отключено (может файервол, может еще как-то чо-то блочится)
вот такую штуковину (http://www.emomi.com/download/jones/p1aalgva.html) если реализовать, то потом все упирается в знание физики...
Чет я не врубился и че тут?))
Ну сложение векторов не знает что ли кто-то?)
TERRORist
15.08.2005, 20:26
вот такую штуковину (http://www.emomi.com/download/jones/p1aalgva.html) если реализовать, то потом все упирается в знание физики...
А что собсна тебе мешает?) Как два пальца об асфальт!
old_dark_elf
15.08.2005, 21:52
вот такую штуковину (http://www.emomi.com/download/jones/p1aalgva.html) если реализовать, то потом все упирается в знание физики...
тут простое сложение координат векторов :) , не думаю, что бы это подошло для физ-движка...
Ну сложение векторов не знает что ли кто-то?)
Как два пальца об асфальт!Точно сможешь? ;)
тут простое сложение координат векторов , не думаю, что бы это подошло для физ-движка...Двоечник! :)
Ну да! Сложение вектороф. Так это 50% движка, как я вижу! Ведь хочешь не хочешь, а придется с векторами работать. Или как вы собираетесь силы учитывать?!
TERRORist
16.08.2005, 00:09
тут простое сложение координат векторов :) , не думаю, что бы это подошло для физ-движка...
Это основа физ движка, но ничего сложного в этой его части нету
TERRORist
16.08.2005, 00:29
вот вам сложение векторов. для детишек, пусть играются. :d
old_dark_elf
16.08.2005, 00:36
я считаю, что силы примененые ко всему обьекту - это лишь мала часть, есть более трудные вещи моменты с их центрами, взамодействие обьектов и т.д....
TERRORist
16.08.2005, 00:57
я считаю, что силы примененые ко всему обьекту - это лишь мала часть, есть более трудные вещи моменты с их центрами, взамодействие обьектов и т.д....
Да силы допустим применены ко всему обьекту Но работать мы можем только с векторами
TERRORist
16.08.2005, 00:59
и потом когда объект бьется углом в стенку, то взаимодеиствует только точка-угол, от которой (если удар упругий) ускорение передается другим точкам. ускорение-вектор, понятное дело.
вот вам сложение векторов. для детишек, пусть играются. :d Здорово, блин... выложил... когда я сам уже написал 80)
Ну да! Сложение вектороф. Так это 50% движка, как я вижу!
народ-да-вы-че? Какое сложение векторов? Переменные тоже хочешь-не хочешь использовать придется - но это не значит, что присваивание значение переменной - 50% движка. Повторяю еще раз : все что нужно - при регистрации столкновения пересчитать угловые и линейные скорости сталкивающихся обьектов - и все, этого вполне достаточно. Всего 3 формулы - другой вопрос как формулы получить. Впринципе законов сохранения энергии-импульса-момента импульса должно вполне хватить, но тут встает проблема определения нормали к поверхности в точке столкновения. Я пока не придумал как эту проблему решить средствами флэш чтоб при этом не сильно тормозило.
Будут предложения - предлагайте
народ-да-вы-че? Какое сложение векторов? Вот такое, двоечник!... Для тебя и всех остальных сча буду объяснять че сделал:
шарики из воздуха попадают в воду. Пока летят - действует ветер и сила тяжести. Как попадают в воду - еще и сила архимеда! Вылетают из воды - архимед перестает парить шарики и т.д. и т.п.
1. Придраться есть к чему: шарики пока непонятно почему без конца прыгают?
2. Паршивый недружелюбный дизайн
Дорабатывать не в силах. Уже 3 часа и я спать хочу 80)
Зато фсе исключительно на физике! И на моделировании законов. Все заккоментировал. Силы можно добавлять, написав соответствующие функции в файл forces.as и потом не забудьте их в onEnterFrame вставить (нужно push сделать - там в коде увидите). Функция должна возращать объект со свойствами {len: len, dir: dir}:
len - длина вектора (значение ускорения, сообщаемое силой)
dir - направление вектора (куда направлено ускорение)
Теперь можно забрасывать помидорами 80)
придраться есть к чему: шарики пока непонятно почему без конца прыгают?
как это непонятно? у тя ж трение и сопротивление среды нигде не запрогено
TERRORist
16.08.2005, 12:41
как это непонятно? у тя ж трение и сопротивление среды нигде не запрогено
Сопротивление среды можно так запрогить: Ко всем векторам каждый кадр /=1,05
TERRORist
16.08.2005, 12:44
а в воде, скажем, /=1,7
Сопротивление среды моно так запрогитьА нафига я расширяемость по вашему делал? Вуаля... Почти работает. Еще нужно доработать, но уже интересная штуковина получается:
Шарики даже на волнах (которые еще не прорисованы даже) подпрыгивают! 80)
TERRORist
16.08.2005, 13:24
еще бы !
кибенематика - мать всех наук!
TERRORist
16.08.2005, 13:28
у,ёёёё! закачал!
а что их наелво-то косячит??? а почему подергиваются?
у,ёёёё! закачал! а что их наелво-то косячит??? а почему подергиваются? Там еще течение реки добавилось... смотри файл с силами!
TERRORist
16.08.2005, 13:36
все срочно смотрим тему "конкурс" во флейме!
TERRORist
16.08.2005, 13:38
Там еще течение реки добавилось... смотри файл с силами!
Но дергаться-то не должны!
Но дергаться-то не должны!
А тут уже, похоже, дело в непрально отработаной физике... Может где с уравнениями накосячил, может еще что. Сча разбираться некогда. Попозжа покопаюсь. Есть пара идей!
TERRORist
16.08.2005, 13:43
и ну ее нафик воду. (или ты хочешь сделать преломление, рефракцию, рефлекцию!)
я давал исхидник хита с ломанной поверхностью, давай его юзай. тогда это будет 1 шаг к физике объекта (щас-то пока объект-точка)
или ты хочешь сделать преломление, рефракцию, рефлекциюПока только кинематика.
Я просто продемонстрировал, что векторный подход рулит. Что можно учитывать любые силы, если описать на AS их матчасть. Показал, как объект будет вести себя в разнородных средах (пока дергается, но со временем исправим).я давал исхидник хита с ломанной поверхностью, давай его юзай. тогда это будет 1 шаг к физике объекта (щас-то пока объект-точка)Согласен... Но начинать надо с простого. Сначала на точке нужно отработать все. Если ты хочешь использовать связку точек (то, что ты раньше выкладывал), то это тоже реально! Как уже тут все говорили, нужно просто использовать суперпозицию всех точек из которых состоит тело. Не сложно... Пока делать не начнешь 80)
old_dark_elf
16.08.2005, 14:07
жесткач :) ...
я конечно понимаю, что это слегка не то, но:
можешь исходник выложить?
TERRORist
16.08.2005, 14:56
а самому слабо?
Сопротивление среды можно так запрогить: Ко всем векторам каждый кадр /=1,05
Сопротивление среды это хорошо, но придется еще учитывать из чего объект состоит, ведь он может и тонуть.
Плюс брызги от всплеска :D
K.A.T.A.F.A.L.K.E.R
16.08.2005, 16:42
Сопротивление среды это хорошо, но придется еще учитывать из чего объект состоит, ведь он может и тонуть.
Плюс брызги от всплеска :D
Не придется. Природа ничего такого не знает, и ничего такого не учитывает... Есть второй закон дядьки Ньютона. Просто если тело слишком плотное, сила Архимеда больше mg и оно тонет...
2 Kost@
С силами там действительно чуть глюк... Именно в силе Архимеда - она равна pgv, где v - НЕ объем тела, а лишь его погруженной части, потому оно и дергается :) И еще... Сопродивление жидкости/газа в первом приближении можно считать функцией скорости - т.е. она зависит не только от параметров тела, но еще и от его скорости (может ты это и учел... Но вроде нет... Ну извини если я протупил :) )... Да... И это... Не глянул - но... "ветер постоянно дует вправо и сообщает телу ускорение wind_strength/m" - надеюсь, когда тело под водой - эта сила не в счет? :D
Просто если тело слишком плотное, сила Архимеда больше mg и оно тонет...
Ты хотел сказать, если плотное - сила Архимяда меньше?
Сопродивление жидкости/газа в первом приближении можно считать функцией скорости - т.е. она зависит не только от параметров тела, но еще и от его скорости
А также от формы, от присутствия/отсутствия турбулентности...
Предлагаю сделать вакуум :D
old_dark_elf
16.08.2005, 16:48
а на кой там исходник?
есть скорость движения, есть препятсятвия, скорости по х и у изменяются по законам физики...
кста, если к моему батскетболу приделать ту фишку с резинками и пружинками :) то должно получиться очень даже прикольно :) ...
кто-нить возметься?
K.A.T.A.F.A.L.K.E.R
16.08.2005, 16:49
Ах ДА! "ветер постоянно дует вправо и сообщает телу ускорение wind_strength/m" - да ну! Перейди в систему отсчета, жестко связаную с ветром. В этой системе отсчета движется не сам ветер, а движется шарик в неподвижной атмосфере! То есть эта сила - то же самое, что сопротивление воздуха! Она НЕ одинаковая для всех тел, а зависит от их площади поперечного сечения в направлении ветра (фиг с ним, пускай от объема :) )... То есть, wind_strength не может быть константой! ;)
K.A.T.A.F.A.L.K.E.R
16.08.2005, 16:50
Ты хотел сказать, если плотное - сила Архимяда меньше?
ну да :) оЧепятка :)
K.A.T.A.F.A.L.K.E.R
16.08.2005, 16:55
А также от формы, от присутствия/отсутствия турбулентности...
Ну, форма была по сути учтена :) Но вот турбулентность не может присутствовать или отсутствовать, это поток может с ламинарного перейти в турбулентный при некоторых параметрах движущегося тела (площади поперечного сечения, скорости) и среды... Но турбулентными потоки в атмосфере да и в воде стают лишь при реально больших значениях скорости, что предлагаю не учитывать :D
ну, форма была по сути учтена но вот турбулентность не может присутствовать или отсутствовать, это поток может с ламинарного перейти в турбулентный при некоторых параметрах движущегося тела (площади поперечного сечения, скорости) и среды...
ну да, это я просто упрощенно сказал
но турбулентными потоки в атмосфере да и в воде стают лишь при реально больших значениях скорости, что предлагаю не учитывать
но уж испарение воды-то всяко ввести надо?? :d влажность будет увеличивать сопротивление воздуха, а конденсация капель на шаре (да и их присутствие после ныряния) - увеличивать массу тела ))))
Именно в силе Архимеда - она равна pgv, где v - НЕ объем тела, а лишь его погруженной части, потому оно и дергается :) Точно! Этого не учел... Но и ты учти, что все делал ночью в полусонном состоянии и с утра, в непроснувшемся 80)
Думаю, что это все решит и подергиваний не будет...
Сча еще на досуге попробую связку точек напрограммить! И будет HAVOK в 100000 приближении 80)Не глянул - но... "ветер постоянно дует вправо и сообщает телу ускорение wind_strength/m" - надеюсь, когда тело под водой - эта сила не в счет? :D Не, читай комменты - это учел 80)
Прикольный момент, что 2-а последних объекта несет течение, а первый поддувает ветер!?... Ваще стеба вышла! Типа на легкие объекты действует ветер, а на более тяжелые течение! Ну-ка попробуйте такое учеть хитТестом!? :D
типа на легкие объекты действует ветер, а на более тяжелые течение! ну-ка попробуйте такое учеть хиттестом!
кстати, как ты думаешь прогить рельеф, то есть неровные поверхности?
зы если будет время и желание, сделай дно - хотя бы ровное - на какой-то глубине. типа, если шар уж слишком тяжелый, чтобы он об него стукался. да и утонувшие шары чтоб не покидали пределы флэхи
Она НЕ одинаковая для всех тел, а зависит от их площади поперечного сечения в направлении ветра (фиг с ним, пускай от объема :) )... То есть, wind_strength не может быть константой! ;) Я, и не претендую на звание ЭНШТЕЙН ФЛЕШЕР.РУ... У меня в школе по физике была 3-ка 80)
Сила ветра и не была константой! Но справедливо, что ветер дует не на массу, а на объем! То есть меняем "wind_strength/m" на "wind_strength/V"
В самой флешке это сильно не отразиться...
Ты вообще охренел! Всех (включая меня завел), а сам фиг знает чем занимается 80)
кстати, как ты думаешь прогить рельеф, то есть неровные поверхности?Офигенно хороший вопрос. Вот тебе офигенно неинтеерсный ответ: не знаю пока 80)
По любому придется вводить силу реакции опоры, касательные... Така-а-ая жопа-а-а!
зы если будет время и желание, сделай дно - хотя бы ровное - на какой-то глубине. типа, если шар уж слишком тяжелый, чтобы он об него стукался. да и утонувшие шары чтоб не покидали пределы флэхи Ночью поковыряю сегодня, если глаза не будут возмущаться сильно от передоза радиации от монитора... Ее (радиацию) тоже нужно будет учесть в движке 80)
Офигенно хороший вопрос. Вот тебе офигенно неинтеерсный ответ: не знаю пока 80)
По любому придется вводить силу реакции опоры, касательные... Така-а-ая жопа-а-а!
Ночью поковыряю сегодня, если глаза не будут возмущаться сильно от передоза радиации от монитора... Ее (радиацию) тоже нужно будет учесть в движке 80)
1) Агааааа :)
2) А так же суточное вращение Земли :o
Прикольный момент, что 2-а последних объекта несет течение, а первый поддувает ветер!?... Ваще стеба вышла! Типа на легкие объекты действует ветер, а на более тяжелые течение! Ну-ка попробуйте такое учеть хитТестом!? :D
В свое время занимался я кораблевождением. При прокладке курса, учитывается как и скорость ветра, так и скорость течения.
Но надо учитывать, что ветер действующий на надводную часть объекта, встречает сопротивление со стороны воды на часть объекта погруженную в воду.
TERRORist
16.08.2005, 17:30
"офигенно хороший вопрос. вот тебе офигенно неинтеерсный ответ: не знаю пока 80)
по любому придется вводить силу реакции опоры, касательные... така-а-ая жопа-а-а!"
так, опять! что еще за жопа!
сила реакции зависит от силы воздействия объекта. направление её(угол) я вам дал, для ломанной.
и я уже сказал, лучше про плотность среды, ветер и все такое забыть.
тз:
среда - вакуум и твердая несжимаемая поверхность (для начала-плоскость, потом моя с хиттестами:-)
объект - точка, имеет упругость, массу, ускорение
для плоскости - фигня.
для ломанной - надо всего лишь посчитать угол отражения и угол, под которым точка полетит после соударения.
2) А так же суточное вращение Земли :o
А также положении луны, высоту над уровнем моря и широту.
для ломанной - надо всего лишь посчитать угол отражения и угол, под которым точка полетит после соударения.
ломаная одно, кривая - другое
А также положении луны, высоту над уровнем моря и широту.
Ндык, куда ж без этого-то
TERRORist
16.08.2005, 18:08
"ломаная одно, кривая - другое"
няяя. кто-то уже говорил, что круг - это правильный многоугольник с бесконечным числом сторон????? аналогии мы не видим, да?
ломаннуюя могу сгладить так, что блестеть начнет как лысына моего начальника, а комп в ступор войдет!!
K.A.T.A.F.A.L.K.E.R
16.08.2005, 18:13
Я, и не претендую на звание ЭНШТЕЙН ФЛЕШЕР.РУ... У меня в школе по физике была 3-ка 80)
Сила ветра и не была константой! Но справедливо, что ветер дует не на массу, а на объем! То есть меняем "wind_strength/m" на "wind_strength/V"
В самой флешке это сильно не отразиться...
Ты вообще охренел! Всех (включая меня завел), а сам фиг знает чем занимается 80)
Насчет масса/объем - не гони! Масса там для того чтобы рассчитать ускорение! Там нужна именно масса! Просто саму wind_strength нужно делать не константой, а зависящей от объема! Ну, не wind_strength = 0.1, а wind_strength = 0.1*V или че-то из этой серии :) А насчет того что не занимаюсь... Занимаюсь! Но изредка. Работа, млин! Приходится флешерить не то что хочется, а то что говорят :D Но вообще занимаюсь... Результаты как-нить выложу. Когда заработает :D
"ломаная одно, кривая - другое"
няяя. кто-то уже говорил, что круг - это правильный многоугольник с бесконечным числом сторон????? аналогии мы не видим, да?
ломаннуюя могу сгладить так, что блестеть начнет как лысына моего начальника, а комп в ступор войдет!!
Это опять же - вручную все точки прогить... А вот чтобы просто взять нарисовать какие-нить холмики - и пусть от них шарик отскакивает... Хит-тест столкновение то расчитает - а вот угол?
TERRORist
16.08.2005, 18:49
Так, у меня такое очучение что я с чукчей резговариваю.
Я ручками точки НИГДЕ не ставлю.
32 точки в массиве. Пару синусоид к Y с произвольными амплитудами/периодами, +random(50).
И СГЛАЖИВАТЬ РУЧКАМИ НОРМАЛЬНЫЙ ФЕЛЕШЕР ИХ НЕ СТАНЕТ!!!!
TERRORist
16.08.2005, 18:51
из 32 получаем напр. 128 - и на флеше шириной 640 так заблестит, что углов не заметишь!)
Холмики получаются - АБЪЕДЕНЬЕ!!!
Не налюбуюсь! Да еще с подливкой текстурной - м-м-м-м......!!!! :) :) :) :)
Так, у меня такое очучение что я с чукчей резговариваю.
Я ручками точки НИГДЕ не ставлю.
32 точки в массиве. Пару синусоид к Y с произвольными амплитудами/периодами, +random(50).
И СГЛАЖИВАТЬ РУЧКАМИ НОРМАЛЬНЫЙ ФЕЛЕШЕР ИХ НЕ СТАНЕТ!!!!
Нафиг мне ПРОИЗВОЛЬНЫЕ синусоиды? Я мож хочу четкую конкретную карту нарисовать - здесь ступенька, тут обрыв, тут вобще утёс
TERRORist
16.08.2005, 20:00
значит вбиваешь 24 или там 32 точки, скрипт их сглаживает.
TERRORist
16.08.2005, 20:01
поздравляю, тему просмотрело 2000 человек.
значит вбиваешь 24 или там 32 точки, скрипт их сглаживает.
Ну - и то хлеб... Хотя до этого еще далеко - хотя бы с плоской поверхностью реально разобраться - что все скакало и крутилось, как надо :)
поздравляю, тему просмотрело 2000 человек
Да, физика акутальна нынче...
Млин да че вы все филосовствуете... Напишите просто падающий кубик на плосткость, с разной стартовым ускорением.
Введите параметры
1.Упругость грани.
2.Масса кубика.
3.Стратовое ускорение кубика(задать вектором.)
4.y - Координату плоскости.
Среда однородная гравитация однороданая.сила трения максимальная,обхъект не скользит,сила трения воздуха 0.
НАдо начинать с простого....Все это философия - состояние среды, сила прогибаемости поверхности всплески волн....Может еще тепературу среды будете расчитывать, в разных участах котрых стоят различные источники нагревания?
Вот на фоне кубика разберитесь какие и как силы действуют.
Кстати для этой задачи можно обойтись даже без тригономерии вообще.
Вектор нормали плоскости тех кого смущает просчет этого вестора, это просто обратный вектор от вектора гравитации гравитации в данной ситуации.
ВОт например если эту задачу разобрать , или может кто то напишет? Это уже интереснее, будет все четче и яснее, потом можно наврорачивать различными консантами и коефициентами.
Вводный курс аналитичекской геометрии.
векторы.
a=[x1,y1]
b=[x2,y2]
1.Сложение векторов.
a+b=[x1+x2,y1+y2]
2.Вычитание.
a-b=[x1-x2,y1-y2]
3.умножение векора на чисто.
ka=[k*x1,k*y1]
4.Скаляроное произведение.
scalar=x1*x2+y1*y2
5. Длина вектора a
dist=Math.sqrt(x1*x1+y1*y1);
6. ПРиведение вескора a к единичному вектору(модуль которого равен 1)
n=[x1/dist,y1/dist]
7. Угол между векторами. Обычно его в чисметодах ищут так но в математике много спообов.
a-> в единичный
b-> в единичный
склярное произведение даст косинус угла между ними.
Укол соотвесвенно арккосинус , но как правило само знаечение косинуса хватает.
Это важный момент , не используя тригонометрию спомощью скалярного призведения можно найтьи проекцию одного вектора на тругой и т.д.
Удачи.
жесткач :) ...
я конечно понимаю, что это слегка не то, но:
А для 15-ти шаров? и чтоб ни один не был фиксированным:)
Например
http://www.freewebs.com/gwiller
Кстати это еще под 5-й флеш когда то писал.
Млин да че вы все филосовствуете... Напишите просто падающий кубик на плосткость, с разной стартовым ускорением. Так и есть... нужно вообще с простого начинать! А то если сразу (как я) заморачиваться, то потом такая лажа вылазит. Вчера в своем проете столько косяков нашел! Пришел к выводу, что нужно сначала для однородной среды все реализовать с минимальным набором сил.
Биллиард - прикольный: физика неплохая!
K.A.T.A.F.A.L.K.E.R
17.08.2005, 16:15
Млин, народ, вы не о том! "столкновение шариков с некоторой упругостью" я еще года четыре назад писал - нормально, порвал всех на МАНе. Это все просто. Главное - сделать взаимодействие тел произвольной формы! Вот каким должен быть первый шаг - и поздравьте меня, я его вчера почти сделал. Смысл таков: рисуете карандашом "тело", заливаете его (заливка - и есть "вещество", только залитые участки идут в подсчет массы), конвертите в мувиклип, пишите <name>.addAnchors() - и по вашим бесценным рекомендациям к нему добавляются "ключевые точки" по контуру - именно в них идет просчет взаимодействия с другими объектами. Кроме того есть функция <name>.hitBody(body) - проверяет, не столкнулся ли этот объект с другим объектом (body), и если да - определяет в каких точках и находит силы, действующее на эти точки. Повторяю: физики пока никакой, но уже идет определение 1)точек, в которых происходит взаимодействие 2) сил, возникающих при взаимодействии. Делал дома, щас я на работе, но винт с собой - через часок подключу, стащу исходники и выложу ;)
old_dark_elf
17.08.2005, 18:13
кого хочешь удивить?
:)
для отскока мячиков люди уже давно классы понаписали :cool: - скоко хочешь столько и мячиков, все летают и поют :D сталкиваются, а ты еще сделай что бы от массы зависило, хотя и это я уже видел и делал...
надо такие мячики соеденить твоими пружинами - и будет вам счастье, покрайней мере любую фигуру можно будет легко сделать :cool:
кого хочешь удивить?
:)
для отскока мячиков люди уже давно классы понаписали :cool: - скоко хочешь столько и мячиков, все летают и поют :D сталкиваются, а ты еще сделай что бы от массы зависило, хотя и это я уже видел и делал...
надо такие мячики соеденить твоими пружинами - и будет вам счастье, покрайней мере любую фигуру можно будет легко сделать :cool:
Я никого не хучу удивлять)
Ну покажи что делал)
old_dark_elf
17.08.2005, 19:57
свое лень искать :D:D:D
http://www.silin.fatal.ru/misc/index.html
вот тут силиновский класс
свое лень искать :D
http://www.silin.fatal.ru/misc/index.html
вот тут силиновский класс
1. Если ты имеешь ввиду упругое столкновение шаров:) то это глючная фигня в которой одни шары залязят на другие,И отскоки дерганные.
2. Число 15 я взял не спроста. Нужно сделать так чтоб оно же не тормозило , в этом суть, РАсчитать векторы отражения это задача для седьмого класса школы наверное. Смысл этого дела продумать так и отобрать те объекты которые вообще нужно просчитывать. Тут счысл в самом алгоритме.ПО этому я и говорю про 15. Мой бильярд я тогда писал под 800MHZ требование было такое,фиг знает когда это было, аналога американки тогда не было в инете на флеше, восьморки были, но для восьмерки количество просчетов в несколько раз меньше:) Конечно можно так сказать что и для 100 шаров это все будет работать толко нафик такой движок который тормозит?
3. Лень искать это не ответ, если нет то и говори нет, либо молчи либо приводи пример.
4. Основные составляющие физ движков.
1. Физика воздейсвия на точку.
2. Алгоритм просчета столкновений. collision
И именно их я имеею ввиду и примеры привожу на эти составляющие.
Если эти 2 компоненты сложить вот и будет движок.
old_dark_elf
17.08.2005, 20:37
ну это я уже показывал на форуме, там происходит отскок метиорита от корабля, конечно при 50 (а может и при меньшем количестве) метиоритах может торамзить - но вопервых мое, во вторых сильных глюков (перенахлест) не замечал...
ну это я уже показывал на форуме, там происходит отскок метиорита от корабля, конечно при 50 (а может и при меньшем количестве) метиоритах может торамзить - но вопервых мое, во вторых сильных глюков (перенахлест) не замечал...
млин странный ты какойто:) У тебя же метеориты не отталкиваются друг от друга, ты прочитал то что я написал?
Естесвенно если ты делаешь просчет метирота с кораблем то о чем речь:)
ПРедставь 15 шаров ты должен проверить столкновение каждый с каждым. т.е.
Если ты мой друг , хорошо учился в школе то знаешь такую науку комбьинаторику и биномы ньютона
То легко получишь вормулу количесва просчетов
для N оъектов это будет
N*(N-1)/2 т.е. для 15 ти это 15*14/2=105 насколько ьы видишь эта цивра гораздо больше 50 ти:)
old_dark_elf
17.08.2005, 21:44
вот елки...
ослеп-ослеп...
ну да ладно, я это все к чему?
а к тому - не хочешь попробовать сделать квадрат падающий по законам физики?
сделай вот такую модельку с пружинами:
O---O
|\ /|
| O |
|/ \|
O---O
O-круги
линии - пружинки
а внутрь кругов такой код:
v_y=0;
v_x=0;
this.onEnterFrame = function() {
v_y = v_y+9.8/fps;
_x += v_x*=0.995;// или как ты там делаешь перемещение?
_y += v_y*=0.995;
if(_y+_height/2>_root.scena.height) v_y*=-0.9;
}где
v_y - скорость по оси у
v_x - по x
fps - оно и есть :)
вроде должно получиться забавно :)
вроде должно получиться забавно
гы, идея хорошая, тока по-мойму получется забавнее, чем надо :) но попробовать стоит
вот елки...
ослеп-ослеп...
ну да ладно, я это все к чему?
а к тому - не хочешь попробовать сделать квадрат падающий по законам физики?
сделай вот такую модельку с пружинами:
O---O
|\ /|
| O |
|/ \|
O---O
O-круги
линии - пружинки
а внутрь кругов такой код:
v_y=0;
v_x=0;
this.onEnterFrame = function() {
v_y = v_y+9.8/50;
_x += v_x*=0.995;// или как ты там делаешь перемещение?
_y += v_y*=0.995;
if(_y+_height/2>_root.scena.height) v_y*=-0.9;
}где
v_y - скорость по оси у
v_x - по x
вроде должно получиться забавно :)
ДА я то сделаю точнее сделал пости, но еще не готово. Времени просто свободного нет, до конца доделать. Куда просто делись люди которым интересно посидеть посоображать и сделать самому?
Для кубика же надо предусмотреть столкновение, грани с точкой из вне ,и просчитать распределение импульсов от столкновения на смежных вершинах этой грани...
old_dark_elf
17.08.2005, 22:00
ДА я то сделаю точнее сделал пости, но еще не готово. Времени просто свободного нет, до конца доделать. Куда просто делись люди которым интересно посидеть посоображать и сделать самому?
Для кубика же надо предусмотреть столкновение, грани с точкой из вне ,и просчитать распределение импульсов от столкновения на смежных вершинах этой грани...
ну
1 - мне кааанкретно влом придумывать пружины, а они у тебя есть
2 - пружины есть и у меня - твои, но мне еще больше влом капаться в твоем коде
3 - а ты сделай попроще (без всех этих наворотв, которые ты приписал) и проверь - если будет работать в таком простом, то Диська-зашибиська и скорее всего в усложненом виде тоже будет работать, а если не будет СЕЙЧАС, то по этому пути идти не стоит, а стоит придумывать что-то другое...
народ тут про книгу говорил:
http://www.flasher.ru/forum/showthread.php?t=68012
Я заглянул в содержание и офигел... там весь курс физики запрограммирован 80) Но, чуствую, что скоро тут выложат исходники по которым можно будет новую книгу писать!
http://www.ultrashock.com/flas/Detailed/118.html ценить усем!
TERRORist
19.08.2005, 17:59
http://www.ultrashock.com/flas/Detailed/118.html ценить усем!
Ничего особенного, я сам такой за 3 минуты сделаю, честное пионерское!
А вот дизайн сайта понравился.
Ничего особенного... А вот дизайн сайта понравился.
Да там физики-то может и не быть вовсе (декомпилить лень). Дизайн, действительно, вкусный 80)
кто бы что не говорил, там вычисляется равнодействующая 2-х сил и непофикли каким способом?
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.