![]()
Toadcop
![]() ![]() offline
Опыт:
52,713Активность: |
лол ? xD ...
это делаетса так...
vec o1 = шарег
vec o2 = объёкт update...
x=o2.x-o1.x y=o2.y-o1.y z=o2.z-o1.z lng=sqrt(x*x+y*y+z*z)+0.001 lolol say NO to divided by zero :P
x=(x/lng)*o1.speed y=(y/lng)*o1.speed z=(z/lng)*o1.speed короче это шаманство сначало нормализировала вектро направления для o1 а потмо установила на нужную длину "скорость" теперь. двигаем.
o1.x=o1.x+x*period
o1.y=o1.y+y*period o1.z=o1.z+z*period а ну еще нужен форс... кстати выше приведёный пример тоже можно как форс расматривать... только надо его "аккамулировать" а точней добавлять к вектору движения а не посредствено к позицыи объекта.
если есть форс то так.
x,y,z - здесь являютса силой которая постояно влияет на объект тем самым он будет "ускорятса"
o1.vx=o1.vx+x*period
o1.vy=o1.vy+y*period o1.vz=o1.vz+z*period o1.x=o1.x+o1.vx*period
o1.y=o1.y+o1.vy*period o1.z=o1.z+o1.vz*period ну короче это самое просто движение... и ничего здесь не будет лагать даже при 150 объёктах не на сильный компах (2Ггц какойнить) с периодом 0.025 даже вроде... |
![]() |
#41
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
![]()
NETRAT
![]() ![]() offline
Опыт:
82,062Активность: |
чет я не вижу что бы у тебя получалась парабола...
сила тут нафиг никому не нужна - обьекту передается импульс а не на обьект действует сила, сила на него действует только одна - притяжения, а импульсов может быть много |
![]() |
#42
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
![]()
Toadcop
![]() ![]() offline
Опыт:
52,713Активность: |
короче мне реально насрать... но некаких "формул" для достижения плавных движений не надо =) порабола как раз за счёт форса и делаетса. мне лично всё время убивает когда юзают "формулу параболы" для движения снарядов...
Toadcop добавил: Цитата:
|
|
![]() |
#43
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
![]()
ScorpioT1000
Работаем
![]() ![]() offline
Опыт: отключен
|
Цитата:
трения/сопротивления не всчет?) особенно когда пишешь симулятор гонок |
|
![]() |
#44
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
![]()
NETRAT
![]() ![]() offline
Опыт:
82,062Активность: |
ScorpioT1000 чет я еще ни одного эмулятора силы трения и сопротивления в варкрафте не видел, ты бы еще написал про слабую ядерную силу и силу Лоренца. В исходном сообщении речь идет только о гравитационных силах.
Toadcop если вектором скорости ты описываешь импульс - единовременно приложенную к телу силу, то ты никак не опишешь постоянно действующую на тело силу - силу притяжения, если вектором ты описываешь постоянно действующие на тело силы - то ты не опишешь импульс - бросок, нуипотом - скорость это всего лишь производная ускорения, в твоей модели оно не учитывается, фактически ты описал только кусок подсчета координат для вывода их на экран по части плавных движений я с тобой согласен, впрочем, я уверен, что автор топика в курсе как нормализовать вектор... Да, я наконец-то понял чегой-ты накорябал, эта хрень может и будет стабильно работать, но если дополнить модель до той которая тут обсуждается, то у меня есть сомнения насечет скорости вычислений. Отредактировано NETRAT, 10.02.2009 в 02:17. |
![]() |
#45
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
![]()
Toadcop
![]() ![]() offline
Опыт:
52,713Активность: |
Цитата:
а споротивление это относительное свойство... т.е. вся зависит как ты его представиш (т.е. тоже можно постояно множить и тем самым объёт просто будет тормозитса) и т.п. Цитата:
как я понял здесь какой либо вектор, статик + динами форс (статик напр гравитацыя мы его не будет изменять в динамик форсе) динамик форс = стремление к какой либо точке. != направление. ну а скорость вычисления достаточно высокая тока вот всякие нормализацыии и т.п. "медленые" незнаю если хотите посмотреть на что то "крутое" то вот. http://epicwar.com/maps/30863/ |
||
![]() |
#46
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
![]()
MF
Что-то вокруг не так
![]() ![]() offline
Опыт:
26,194Активность: |
какие бурны обсуждения!
![]() Собственно никто от старичка движка ничего сверхьестественного не требует! А насчет парабол... даже по формулам он не будет плавной (движение то все равно расчитываеться дискретно), а расчитывать каждую координату по формулам, по-моему, даже дольше чем вариант с векторами... Ну хорошо, оставим в покое параболу... В одном из примеров-задач Toadcop'a, там где гномик бегает от летающих за ним сфер, движение тоже довольно таки просто реализуется... но тоже на векторах, при чем не будет это лагать. Посмотрю я на того кто станет реализовывать такое движение формулами... я даже не представляю какие формулы тут могут помочь |
![]() |
#47
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
![]()
dk
![]() offline
Опыт:
60,993Активность: |
1 алгоритм тоадкопа "притяжение к объекту" как я понял) Равномерное движение норм.
А вот смысл второго несовсем понятен относительно данной тематики... Это даже не равноускоренное, а движение с постоянно возрастающим ускорением. А вобще в чем проблема с вычислениями броска предмета по параболе? Равномерное движение по ху и равноускоренное по z. o1.x = o1.x + speed.x o1.y = o1.y + speed.y o1.z = o1.z + speed.z speed.z = speed.z + g //g - ускорение св. падения, в данном случае отрицательное... Ну и проверку на достижение земли. Цитата:
наоборот |
|
![]() |
#48
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
![]()
ScorpioT1000
Работаем
![]() ![]() offline
Опыт: отключен
|
Цитата:
+1 |
|
![]() |
#49
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
![]()
NETRAT
![]() ![]() offline
Опыт:
82,062Активность: |
В два часа ночи, видимо, моск не в том направлении работал, пожалуй, вы правы насечет простоты исполнения, впрочем, я убежден что наличие в одной карте большого количества фич, сильно уменьшает производительность. Естественно, на тестовых картах наработок этого не видно, в любом случае, сейчас у меня нет рабочего места что бы что-то потестить и пояснить на примере. |
![]() |
#50
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
![]()
MF
Что-то вокруг не так
![]() ![]() offline
Опыт:
26,194Активность: |
NETRAT
Я согласен что каждая наработка это путь к лагам. Причем как сказал Toadcop в какой то теме это еще и дорога к всевозможным багам и глюкам, но если очень хочеться или надо, то вектора это выход. Завтра все таки выложу пример, пока без дополнения статьи, просто голый пример. в моей наработке на движение была версия с прыжком, там прыжок введен для фана, но принцип тот же. |
![]() |
#51
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
![]()
MF
Что-то вокруг не так
![]() ![]() offline
Опыт:
26,194Активность: |
Добавил пример движения по параболе, если будет интересно дополню статью информацией. |
![]() |
#52
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
![]()
ScorpioT1000
Работаем
![]() ![]() offline
Опыт: отключен
|
Цитата:
зато я тестил много и имхо это чуть более чем наполовину зависит от "совметимости" систем, т.е. их совместного взаимодействия ну и от реализации еще ScorpioT1000 добавил: исправил оформление темы, а то сплошные заголовки - непонятно что из чего вытекает =) |
|
![]() |
#53
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
![]()
Toadcop
![]() ![]() offline
Опыт:
52,713Активность: |
Цитата:
1) не надо 2) лишние затраты ресурсов 3) + еще ряд "оптимизацый" // логических а не алгоритмических |
|
![]() |
#54
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
![]()
Sergey
Старейший
![]() ![]() offline
Опыт:
28,363Активность: |
MF_Andreich
Есть у меня одна наработка: Objector - сценарий, в котором имеются специальные jass-функции, упрощающие построение разного рода ломаных, кривых, поверхностей и сложных траекторий. Посмотреть можно здесь: http://xgm.guru/forum/showthread.php?t=2602 В архиве также есть текстовый файл со статьей, где я объясняю, как все это работает. Может быть, удастся создать общую статью об использовании геометрии в war3. Подумай. |
![]() |
#55
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
![]()
Toadcop
![]() ![]() offline
Опыт:
52,713Активность: |
+1 хороший набор функций |
![]() |
#56
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
![]()
adic3x
![]() offline
Опыт:
99,989Активность: |
кста в последнем листинге из статьи стоит мб убрать бж_дегторад, и обьсянить, что туда нуно совать значение в радианах? бесит всетаки бж=) |
![]() |
#57
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
![]()
MF
Что-то вокруг не так
![]() ![]() offline
Опыт:
26,194Активность: |
ADOLF
Хм... не вижу вселенского зла в bj_ константах, но пожелание читателей (не противоречащие мнению автора) закон. ![]() |
![]() |
#58
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
![]()
adic3x
![]() offline
Опыт:
99,989Активность: |
Цитата:
зло не в константе, зло в том что бы хранить значение угла в градусах и по 100500 раз за проход цикла перемножать его для получения значения в радианах, а это как раз "узкое" место которое дб оптимизированно |
|
![]() |
#59
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
![]()
MF
Что-то вокруг не так
![]() ![]() offline
Опыт:
26,194Активность: |
ADOLF
Проблема в том, что функции возвращающие всевозможные игровые углы работают в градах, а БЖ тригонометрия в радах... Так или иначе умножение проводить придеться. |
![]() |
#60
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|