[Вопрос] Функция
|
|
Smartaros | Дата: Суббота, 11 Августа 2012, 01:39:40 | Сообщение # 1 |
9 уровень
Группа: Проверенные
Сообщений: 810
Награды: 0
Репутация: 135
Блокировки:
| кто может написать функцию нахождения числа x, которое вычисляется циклом n раз из другого большего числа y, так чтобы разность была максимально приравнена к нулю? Добавлено (11 Августа 2012, 00:55:46) --------------------------------------------- к примеру: число y = 100, n = 10, и тогда x будет равен 10 Добавлено (11 Августа 2012, 01:00:18) --------------------------------------------- y - nx = 0 y = nx x = y/n ......... ааааа, извините, закройте тему Добавлено (11 Августа 2012, 01:06:54) --------------------------------------------- стоять... Добавлено (11 Августа 2012, 01:08:29) --------------------------------------------- перепутал, мне нужна та же функция, только в которой с каждым последующем циклом число x возрастает на константу Добавлено (11 Августа 2012, 01:13:02) --------------------------------------------- y - n*((n+k)-nk) = 0
xD Добавлено (11 Августа 2012, 01:30:01) --------------------------------------------- ошибся, правильное:
y - n*(x+k-nk) = 0 Добавлено (11 Августа 2012, 01:39:40) --------------------------------------------- x = y/n+k(n-1)
|
|
|
|
SirNikolas | Дата: Суббота, 11 Августа 2012, 08:07:20 | Сообщение # 2 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Можно подробнее, что такое k, откуда оно берется, и для чего нужна функция.
|
|
|
|
Hexing | Дата: Суббота, 11 Августа 2012, 09:07:13 | Сообщение # 3 |
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
| Quote (Smartaros) x = y/n+k(n-1) если важно сохранять уравнение, то: x = y/n+k(n-1) x =10/4+5(4-1) x = 2,5 + 15 = 17,5 тогда, если увеличивая y влиять на результат x y = y+n*константа x увеличится на константу
ничего сложного? хотя я не уверен в своих рассуждениях до конца
|
|
|
|
Smartaros | Дата: Суббота, 11 Августа 2012, 13:40:56 | Сообщение # 4 |
9 уровень
Группа: Проверенные
Сообщений: 810
Награды: 0
Репутация: 135
Блокировки:
| в уравнении y это константа равная большему числу, k это константа, на которую уменьшается переменная x за цикл, n это переменная цикла Добавлено (11 Августа 2012, 13:40:56) --------------------------------------------- как бы придумал это для нормального замедляющегося движения юнитов
|
|
|
|
Hexing | Дата: Суббота, 11 Августа 2012, 13:43:05 | Сообщение # 5 |
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
| Quote (Smartaros) в уравнении y это константа равная большему числу, k это константа, на которую уменьшается переменная x за цикл, n это переменная цикла Добавлено (11 Августа 2012, 13:40:56) --------------------------------------------- как бы придумал это для нормального замедляющегося движения юнитов
не могу сообразить как всё это работает, но имхо для варика не нужны такие сложные формулы, максимум 100%->0% * замедление, по 10% в секунду, зачем грузить так
|
|
|
|
Smartaros | Дата: Суббота, 11 Августа 2012, 13:50:23 | Сообщение # 6 |
9 уровень
Группа: Проверенные
Сообщений: 810
Награды: 0
Репутация: 135
Блокировки:
| ну смотри, юнита надо передвинуть на расстояние 400 столько раз на x, чтобы движение было плавнозамедленное, допустим в карте скилл взрыв, таковой отброс ударной волной будет выглядеть красивее..
|
|
|
|
kapa6acvlk | Дата: Суббота, 11 Августа 2012, 13:59:41 | Сообщение # 7 |
Группа: Проверенные
Сообщений: 612
Награды: 0
Репутация: 361
Блокировки:
| Smartaros, Если скорость равна 800, то расстояние в 400 он проходит за 0,5 сек. Если начинать замедление на отметке 200, а таймер у тебя 0,02 сек. то количество тактов (n) будет 12 (200/800=0,25)(0,25/0,02=12) то замедление должно составить ~ 800-(800/12). Как-т так я пологаю
Как говориться, не обязательно есть всю кучу говна, чтобы понять, что она однородна. © Александр Зорич
|
|
|
|
Smartaros | Дата: Суббота, 11 Августа 2012, 14:41:48 | Сообщение # 8 |
9 уровень
Группа: Проверенные
Сообщений: 810
Награды: 0
Репутация: 135
Блокировки:
| формула у меня неправильная вроде :-/
|
|
|
|
lawson | Дата: Суббота, 11 Августа 2012, 17:26:53 | Сообщение # 9 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Уже писали кучу раз, форумлы замедления и ускорения.
Добавлено (11 Августа 2012, 17:26:53) --------------------------------------------- Smartaros,Объясняю на пальцах: Допустим макс расстояние на которое вызрыв воздействует на юнита 1000 - МРасстояние. Еще допустим чтоскорость которую юнит может приобрести находясь в центре взрыва равна 100(100 ед расстояние за один шаг цикла, это не скорость юнита указанная в характеристике) - МСкорость. И возьмем расстояние юнита на котором он находится от взрыва - РЮнита(высчитывается через DistanceBeetwen чета там). Тогда скорость юнита рассчитывается в момент взрыва: скорость юнита =МСкорость - (РЮнита \ МРасстояние) * МСкорость. Пример: МРасстояние = 1000 МСкорость = 100 РЮнита = 0 - значит что юнит находится в центре взрыва скорость юнита = 100 - (0 / 1000) * 100 = 100 - значит что юнит в центре взрыва приобретает скорость равную 100. Другой пример для особо отличающихся: МРасстояние = 1000 МСкорость = 100 РЮнита = 1000 - юнита находится за пределами где на него может воздействовать взрыв скорость юнита = 100 - (1000 / 1000) * 100 = 0 - значит юнит не приобретает ни какую скорость т к находится за пределами воздействия взрыва! НО в этой системе должно быть обязательноусловие что юнит находися на расстояние не больше МРасстояния иначе он приобретает скорость в несколько раз больше. Тоесть в данном случае при МРасстоянии = 1000, расстояние юнита по условию не должно быть больше 1000!!!! ЭТО ВАЖНО! Ну а дальше простая математика по замедлению юнита: И так мы знаем скорость юнита которую он приобрел от взрыва и знаем расстояние на которое юнит может переместиться с такой скоростью. СЮнита = 100- значит расстояние на которое он может переместиться = 1000. Дальше по таймеру вычисляем перемещение юнита и постепенно затухающую скорость его пермещения:
Формула затухающего перемещения, таймер бери шагом в .1: скорость юнита = МСкорость - (пройденное расстояние / МРасстояние) * МСкорость Пример: МСкорость = 100 пройденное расстояние в момент взрыва = 0 - т к юнит в момент взрыва прощел 0 ед расстояния МРасстояние= 1000 скорость перемещения= 100- (0 / 1000 ) * 100 = 100 - юнит в первый шаг пройдет 100 ед расстояния. Дальше через разницу точек находим расстояние пройденное юнитом, оно равно 100 - т к в первый шаг юнит прошел 100 ед расстояния, теперь наше пройденное расстояние равно 100, теперь снова находим скоррость пермещения: скорость перемещения равно = 100- (100 / 1000) * 100= 90 - юнит переместиться на 90 ед. И так далее по кругу: сначала находим расстояние пройденное юнитом в данном случае оно уже равно 190 = 100(в первый раз) + 90(во второй раз) и до тех пор пока скорость перемещения не будет равна 0, в таком случае глушим таймер и все системка готова. А то что ты наделал я вообще не могу понять, как такое можно использовать!
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Суббота, 11 Августа 2012, 18:11:43 |
|
|
|
SirNikolas | Дата: Суббота, 11 Августа 2012, 18:07:31 | Сообщение # 10 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Равноускоренное движение? x = x0 + v0t + at2 / 2
|
|
|
|
lawson | Дата: Суббота, 11 Августа 2012, 18:12:32 | Сообщение # 11 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Quote (SirNikolas) Равноускоренное движение? "Равнозамедленное"!! Я расписал все даже для полных даунов.
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Суббота, 11 Августа 2012, 18:14:33 |
|
|
|
SirNikolas | Дата: Суббота, 11 Августа 2012, 18:13:39 | Сообщение # 12 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| А разница? Просто a < .0
|
|
|
|
lawson | Дата: Суббота, 11 Августа 2012, 18:15:36 | Сообщение # 13 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| SirNikolas, это два разных понятия, как заморозить и нагреть.
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
|
|
|
|
Smartaros | Дата: Суббота, 11 Августа 2012, 18:53:52 | Сообщение # 14 |
9 уровень
Группа: Проверенные
Сообщений: 810
Награды: 0
Репутация: 135
Блокировки:
| скажи мне пожалуйста, колличество шагов ты можешь задать?
|
|
|
|
lawson | Дата: Суббота, 11 Августа 2012, 18:58:50 | Сообщение # 15 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Quote (Smartaros) скажи мне пожалуйста, колличество шагов ты можешь задать? Можно задать конечно, но тогда перемещение будет не плавным а резким, если конечно у тебя не 200 или больше шагов будет, а тебе зачем, ведь замедление и так уже плавное.
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Суббота, 11 Августа 2012, 18:59:09 |
|
|
|
Smartaros | Дата: Суббота, 11 Августа 2012, 19:04:49 | Сообщение # 16 |
9 уровень
Группа: Проверенные
Сообщений: 810
Награды: 0
Репутация: 135
Блокировки:
| я тему создал не в частности для плавного замедления, мне была важна возможность задавать колличество шагов для некоторых скиллов, в которых действия происходят на определенных шагах
|
|
|
|
lawson | Дата: Суббота, 11 Августа 2012, 19:06:09 | Сообщение # 17 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Quote (Smartaros) мне была важна возможность задавать колличество шагов для некоторых скиллов, в которых действия происходят на определенных шагах Поподробней можно, о таки я ни че не понял.
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
|
|
|
|
Smartaros | Дата: Суббота, 11 Августа 2012, 19:16:05 | Сообщение # 18 |
9 уровень
Группа: Проверенные
Сообщений: 810
Награды: 0
Репутация: 135
Блокировки:
| ну на пример: герой при убийстве крипов копит их души, у него есть скилл, он берет вражеского крипа и выстреливает им на расттояние, каждый шаг этого расстояния высвобождается душа, которая наносит урон зависящий от макс хп бывшего крипа врагам и хилит союзников по тому же принципу
|
|
|
|
BinGO | Дата: Воскресенье, 12 Августа 2012, 08:04:53 | Сообщение # 19 |
Группа: Модераторы
Сообщений: 2906
Награды: 8
Блокировки:
| Quote (lawson) SirNikolas, это два разных понятия, как заморозить и нагреть. Ну в физике оно вообще-то общим случаем называется именно равноускоренным. Отрицательное ускорение никто не отменял.
|
|
|
|
Smartaros | Дата: Воскресенье, 12 Августа 2012, 16:10:57 | Сообщение # 20 |
9 уровень
Группа: Проверенные
Сообщений: 810
Награды: 0
Репутация: 135
Блокировки:
| В физике оно в общем не называется равноускоренным
|
|
|
|
SirNikolas | Дата: Воскресенье, 12 Августа 2012, 18:55:29 | Сообщение # 21 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Smartaros, учи физику.Quote (lawson) это два разных понятия, как заморозить и нагреть. По сути, "заморозить" и "нагреть" - это одно и то же действие: изменить температуру тела. А само изменение может быть как положительным, так и отрицательным.
|
|
|
|
lawson | Дата: Воскресенье, 12 Августа 2012, 19:03:19 | Сообщение # 22 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Quote (SirNikolas) А само изменение может быть как положительным, так и отрицательным. Я могу написать здесь один пример, но оно того стоит, о чем вообще мы говорим!?
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
|
|
|
|
Smartaros | Дата: Воскресенье, 12 Августа 2012, 22:36:37 | Сообщение # 23 |
9 уровень
Группа: Проверенные
Сообщений: 810
Награды: 0
Репутация: 135
Блокировки:
| николас, ты учи, в общем это движение называется геперболическим, а равноускоренное и равнозамедленное это частные случаи этого движения. Еще на 1ом курсе выводил диф.ур. для каждого случая.
|
|
|
|