Пьяная походка - Drunked walking / вычисление точки встречи

Разработка новых функций.

Модератор: 4epT

MFBeaST
Новичок
Сообщения: 9
Зарегистрирован: Ср май 16, 2007 11:48 am

Сообщение MFBeaST »

kLabMouse писал(а): В общем: Задача очень проста на первый взгляд: Есть тогка где щас моб, есть точка куда движется моб, есть его скорость. Есть точка где стоим мы, есть наша скорость движения. Найти точку сопрекосновения с прямой движения моба.
кхм, а пусть лучше наводится по методу половинного спрямления (как ракеты :) )
т.е. (x, y) = ( (x1+x2)/2, (y1+y2)/2 );
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

Да, но где тут учтена скорость, MFBeaST?
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
MFBeaST
Новичок
Сообщения: 9
Зарегистрирован: Ср май 16, 2007 11:48 am

Сообщение MFBeaST »

piroJOKE
скорость моба вобщем-то учтена в конечной точке его движения,
а собственная нигде.. если её учитывать, то как-то много заморочек
MFBeaST
Новичок
Сообщения: 9
Зарегистрирован: Ср май 16, 2007 11:48 am

Сообщение MFBeaST »

хм, ну можно и со скоростями поигратся:
k = (velMob / velSelf) * kMod;
if (k>1) k=1;
(x, y) = ( x1+(x2-x1)*k, y1+(y2-y1)*k );

kMod - грубо говоря с потолка, т.е. хорошо бы на время отладки метода толкнуть в конфиг и поподбирать его.. (начав с 0.5 примерно)
Аватара пользователя
kLabMouse
Профессионал
Сообщения: 4776
Зарегистрирован: Вс ноя 05, 2006 4:32 pm

Сообщение kLabMouse »

MFBeaST
Половинное спрямление не катит, вообще. Всё дело в том что я описывал как клиент ето делает. Мы же хотим чтоб наш бот не светился. Верно? думаю все согласны что верно.

А твоя формула только добавит пляску (уже пробовалось)

В общем, как оно решается, я вычитал с книжки по физике за 8й клас. Там приведено на примере торпеды.

Только самое но осталось енмного напрячь знания по геометрии и решить такую задачу:
Предположим у нас есть треугольник АБВ, есть синусы углов А и Б а так-же длинна отрезка АБ, нам нужно найти длинну отрезка АВ имея вышшеприведённые данные.

Задача в общем-то тривиальная. Узнав длинну отрезка АВ мы имеем путь на который моб походит до соприкосновения с ним. Берём его вектор движения. И находим точку где он будет если пройдёт длинну отрезка АВ. Тем самым мы будем иметь точку соприкосновения. Теперь составляется вектор движения чара к точке соприкосновения и от длинны отрезка от чара до точки соприкосновения отнимается дистанция атака, таким образом мы будем иметь точку куда нам нужно будет походить чтоб мы могли бить маба.


ЫЫ. Много букф, верю. Да ещё и ход моих мыслей учадать очень тяжело. Но думаю справитесь.
MFBeaST
Новичок
Сообщения: 9
Зарегистрирован: Ср май 16, 2007 11:48 am

Сообщение MFBeaST »

kLabMouse писал(а): Всё дело в том что я описывал как клиент ето делает.
..невидел, ссылку не подскажешь?
kLabMouse писал(а): Предположим у нас есть треугольник АБВ, есть синусы углов А и Б а так-же длинна отрезка АБ, нам нужно найти длинну отрезка АВ имея вышшеприведённые данные.
с такими данными берём теорему синусов:
sin B / len АБ = sin Б / len АВ,
B = 180 - A - Б,
и получаем:
len АВ = len АБ * (sin Б) / (sin(180-А-Б))

только вот что это всё значит в терминах нач.точка моба, конечн.точка моба, точка игрока я совершенно не понял ..
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

Нарисуйте кортинки в паинте, ага?
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Аватара пользователя
kLabMouse
Профессионал
Сообщения: 4776
Зарегистрирован: Вс ноя 05, 2006 4:32 pm

Сообщение kLabMouse »

ГГ. А как ето пощитать?:
sin(180-А-Б)

Мы только знаем
sin(А), sin(Б)
Вложения
Intercept.GIF
Intercept.GIF (2.4 КБ) 1772 просмотра
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

А знаете, если вдруг выясниться, что пакеты описывают движение мобов только на маленькое расстояние, скажем 3...5 клеточек, то имхо, в этом случае синусы ну точно считать смысла не будет....
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
MFBeaST
Новичок
Сообщения: 9
Зарегистрирован: Ср май 16, 2007 11:48 am

Сообщение MFBeaST »

kLabMouse писал(а):ГГ. А как ето пощитать?:
sin(180-А-Б)
ну.. акрсинусы ж есть? (незнаю точного названия перловской ф-ии)
sin(180-arcsin(sin(А))-arcsin(sin(Б)))

как ты точку В определяешь-то? это пересечение нормали из точки А на прямую движения моба? вроде ж нет .. (если да, то для прямоугольного треугольника все формулы упрощаются)
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

kLabMouse писал(а):я описывал как клиент ето делает
Эээ, а напомни в 2х словах, пожалуйсто!

ЗЫ: Ушел читать геометрию; вот заодно и оцению, насколько я отупел с этим RO.
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

Кстати о птичках. А как соотносятся ваши, господа, вычисления
с такими пунктами конфигурации OpenKore:

attackDistance 1.5
attackMaxDistance 2.5

Ы?
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Аватара пользователя
kLabMouse
Профессионал
Сообщения: 4776
Зарегистрирован: Вс ноя 05, 2006 4:32 pm

Сообщение kLabMouse »

piroJOKE
Яж уже писал. Читай вышше.
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

Если честно, я этого в упор не нашел (я про attackDistance и про то, как это делает клиент).

Зато, успел перебрать в голове несколько граничных вариантов,
и пришел к выводу, что фигню вы затеяли, господа.

На мой взгляд, при достаточно небольших отрезках, которыми движеццо моб, всё можно свести к трем случаям - выбор его начальной точки движения, выбор его конечной точки движения и... "стоять на месте, нихера не делать N милисекунд".
Подчеркиваю, при небольших отрезках.
Подчеркиваю, именно выбор алгоритма (а не тупо один из них на все случаи жизни).
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
MFBeaST
Новичок
Сообщения: 9
Зарегистрирован: Ср май 16, 2007 11:48 am

Сообщение MFBeaST »

piroJOKE
про attackDistance было тут:
kLabMouse писал(а):Узнав длинну отрезка АВ мы имеем путь на который моб походит до соприкосновения с ним. Берём его вектор движения. И находим точку где он будет если пройдёт длинну отрезка АВ. Тем самым мы будем иметь точку соприкосновения. Теперь составляется вектор движения чара к точке соприкосновения и от длинны отрезка от чара до точки соприкосновения отнимается дистанция атака, таким образом мы будем иметь точку куда нам нужно будет походить чтоб мы могли бить маба.
как именно определяется т.В я не понял ..
т.е. всего алгоритма на знаю

kLabMouse
угол В прямой? (да/нет)
Ответить