Сейчас 00:56:23 Среда, 27 ноября, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
[Вопрос] Функция
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ом курсе выводил диф.ур. для каждого случая.
 

  • Страница 1 из 1
  • 1
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz