Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Дистанция до координат
SusaniN
сообщение 29.12.2014, 13:12
Сообщение #1


*****

Journeyman
Сообщений: 411
Регистрация: 23.6.2004
Группа: Пользователи
Наличность: 0
Из: Izmaylovo
Пользователь №: 1.873



Стало вот интересно, как узнать дистанцию до нужных координат или точки, если она где-нибудь далеко, например в Веспере, а ты в Брите? Чтобы выдавало ближе ты к нужной точке или дальше. Можт сравнивать координаты? Если да то как?


--------------------
Cause i can dodge the bullets, baby © Phil Hellmuth
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Destruction
сообщение 29.12.2014, 17:04
Сообщение #2


**********

Группа: Администраторы
Наличность: 4
Пользователь №: 1.833



А что мешает?

Квадрат гипотенузы равен сумме квадратов катетов.

Пусть твоя позиция x1:y1, а позиция нужной точки x2:y2.

Построим прямоугольный треугольник с точками x1:y1, x2:y2, x1:y2. Посчитаем гипотенузу. Профит.


--------------------
Discord: tatikom
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
SusaniN
сообщение 30.12.2014, 0:03
Сообщение #3


*****

Journeyman
Сообщений: 411
Регистрация: 23.6.2004
Группа: Пользователи
Наличность: 0
Из: Izmaylovo
Пользователь №: 1.873



Цитата(Destruction @ 29.12.2014, 17:04) *

А что мешает?

Квадрат гипотенузы равен сумме квадратов катетов.

Пусть твоя позиция x1:y1, а позиция нужной точки x2:y2.

Построим прямоугольный треугольник с точками x1:y1, x2:y2, x1:y2. Посчитаем гипотенузу. Профит.


Я не очень понял как сравнивать, давай на примере на любом языке хоть блок схемами, под 51а я адаптирую.


--------------------
Cause i can dodge the bullets, baby © Phil Hellmuth
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Sirocco
сообщение 30.12.2014, 0:16
Сообщение #4


******

Expert
Сообщений: 809
Регистрация: 2.2.2012
Группа: Пользователи
Наличность: 15408
Пользователь №: 14.566
Возраст: 30



в школе уроки геометрии прогуливал?
квадратный корень из |х1 - х2|^2 + |y1 - y2|^2

хорошо хоть мир не сферический... формула расчета длины дуги убила бы тебе мозг.


Кстати я поржу как он будет считать квадратный корень. дайте блок-схему

PS. пользователи 0.51 сферы рулят!
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
pelican
сообщение 30.12.2014, 0:49
Сообщение #5


**

Neophyte
Сообщений: 31
Регистрация: 4.12.2012
Группа: Пользователи
Наличность: 0
Пользователь №: 15.538



В УО не евклидова геометрия. Никакие квадраты высчитывать не надо.

Просто высчитываешь 2 числа : |х1 - х2| и |y1 - y2| - наибольшее число это и будет твоя дистанция до координаты.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Wap
сообщение 30.12.2014, 2:14
Сообщение #6


**********

Администратор Форума
Сообщений: 3.003
Регистрация: 22.12.2006
Группа: Администраторы
Наличность: 31646
Пользователь №: 9.227



Цитата(pelican @ 29.12.2014, 23:49) *

В УО не евклидова геометрия. Никакие квадраты высчитывать не надо.

Просто высчитываешь 2 числа : |х1 - х2| и |y1 - y2| - наибольшее число это и будет твоя дистанция до координаты.
Вообще-то в Сфере как раз-таки по теореме Пифагора дистанция рассчитывается. С округлением до целого числа.
Я правда про 56 говорю, с 51 дел не имел.


--------------------
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
RL_ka
сообщение 30.12.2014, 2:32
Сообщение #7


*****

Разработчик Injection
Сообщений: 464
Регистрация: 13.7.2013
Группа: Модераторы
Наличность: 13691
Из: Екатеринбург
Пользователь №: 16.211



Цитата(pelican @ 29.12.2014, 22:49) *

В УО не евклидова геометрия. Никакие квадраты высчитывать не надо.

Просто высчитываешь 2 числа : |х1 - х2| и |y1 - y2| - наибольшее число это и будет твоя дистанция до координаты.


Тоесть как это?
А если расстояние нужно считать не по прямой а по диагонали? Твоими цифрами можно посчитать лишь разницу по одной из осей координат, а не расстояние между точками.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
pelican
сообщение 30.12.2014, 3:21
Сообщение #8


**

Neophyte
Сообщений: 31
Регистрация: 4.12.2012
Группа: Пользователи
Наличность: 0
Пользователь №: 15.538



Цитата(RL_ka @ 30.12.2014, 3:32) *

Тоесть как это?
А если расстояние нужно считать не по прямой а по диагонали? Твоими цифрами можно посчитать лишь разницу по одной из осей координат, а не расстояние между точками.

Геометрия мира УО отличается от нашего мира, в котором мы живём. Там другие законы.
В мире УО расстояние по прямой равняется расстоянию по диагонали. УО карта состоит из квадратов, по которым перемещаются персонажи.


Перемещения в УО дискретны и чар не может находится между квадратами. Чар переходит на соседний квадрат по прямой или по горизонтали - в обоих случаях ровно за один за один шаг.
Посмотри на картинку.
Там 2 пути - красный(прямой от точки к точке) и зеленый (по диагонали). От START к END
Так вот, в УО чар совершает красный и зеленый путь ЗА ОДНО И ТО ЖЕ КОЛИЧЕСТВО ШАГОВ и ЗА ОДНО И ТО ЖЕ ВРЕМЯ!
Из этого следует, что в УО длина красной и зеленой линии равны.
Поэтому теорема Пифагора в УО неуместна и дистанцию стоит находить как наибольшую разницу координат.
Прикрепленное изображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Sirocco
сообщение 30.12.2014, 8:28
Сообщение #9


******

Expert
Сообщений: 809
Регистрация: 2.2.2012
Группа: Пользователи
Наличность: 15408
Пользователь №: 14.566
Возраст: 30



Код

int CPointBase::GetDist( const CPointBase & pt ) const // Distance between points
{
    // Get the basic 2d distance.
    if ( ! IsSameMapPlane( pt.m_mapplane ))    // as far apart as possible
        return( SHRT_MAX );
    return( GetDistBase( pt ));
}

    int GetDistBase( const CPointBase & pt ) const // Distance between points
    {
        // Do not consider z or m_mapplane.
        int dx = abs(m_x-pt.m_x);
        int dy = abs(m_y-pt.m_y);
        return( max( dx, dy ));
        // Return the real distance return((int) sqrt(dx*dx+dy*dy+dz*dz));
    }




Вот просто код из исходников. я его оставлю тут.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Wap
сообщение 30.12.2014, 17:12
Сообщение #10


**********

Администратор Форума
Сообщений: 3.003
Регистрация: 22.12.2006
Группа: Администраторы
Наличность: 31646
Пользователь №: 9.227



Цитата(pelican @ 30.12.2014, 2:21) *
Так вот, в УО чар совершает красный и зеленый путь ЗА ОДНО И ТО ЖЕ КОЛИЧЕСТВО ШАГОВ и ЗА ОДНО И ТО ЖЕ ВРЕМЯ!
Прикрепленное изображение
А вот и неправда, каждый разворот требует время шага.


--------------------
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
pelican
сообщение 30.12.2014, 17:56
Сообщение #11


**

Neophyte
Сообщений: 31
Регистрация: 4.12.2012
Группа: Пользователи
Наличность: 0
Пользователь №: 15.538



Цитата(Wap @ 30.12.2014, 18:12) *

А вот и неправда, каждый разворот требует время шага.

+1 поворот ещё, но сути это не меняет.
Окей, перерисовал картинку, где нет разворота. Теперь правда:
Прикрепленное изображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
SusaniN
сообщение 31.12.2014, 2:07
Сообщение #12


*****

Journeyman
Сообщений: 411
Регистрация: 23.6.2004
Группа: Пользователи
Наличность: 0
Из: Izmaylovo
Пользователь №: 1.873



Цитата(Sirocco @ 30.12.2014, 0:16) *

в школе уроки геометрии прогуливал?
квадратный корень из |х1 - х2|^2 + |y1 - y2|^2

хорошо хоть мир не сферический... формула расчета длины дуги убила бы тебе мозг.
Кстати я поржу как он будет считать квадратный корень. дайте блок-схему

PS. пользователи 0.51 сферы рулят!


Слы умник-геометр, я школу закончил больше 10 лет назад, давай я поржу как ты мне годовой баланс посчитаешь в 1с, или поржу как ты будешь отдуплять латинский язык или поржу как ты дружишь с датами и событиями в истории, я найду с чего поржать над тобой и без пифагоровых штанов и квадратных корней.
Знания геометрии мне в жизни не пригодились, потому и написал, не хотел заморачиваться.


--------------------
Cause i can dodge the bullets, baby © Phil Hellmuth
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Mirage
сообщение 31.12.2014, 8:12
Сообщение #13


*******

Группа: Пользователи
Наличность: 0
Из: Иваново
Пользователь №: 13.089
Возраст: 35



Цитата(pelican @ 30.12.2014, 17:56) *

+1 поворот ещё, но сути это не меняет.
Окей, перерисовал картинку, где нет разворота. Теперь правда:
Прикрепленное изображение

Если не изменяет память то алгоритм движения по диагонали выглядит вот так:
Прикрепленное изображение
При таком раскладе он 3 раза длиньше чем по прямой. Не?
Расстояние до объекта да, по диагонали можно. Но лучший способ как написали в самом начале - пифагоровы штаны.


--------------------
Изображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Sirocco
сообщение 31.12.2014, 11:13
Сообщение #14


******

Expert
Сообщений: 809
Регистрация: 2.2.2012
Группа: Пользователи
Наличность: 15408
Пользователь №: 14.566
Возраст: 30



Цитата(SusaniN @ 31.12.2014, 2:07) *

Знания геометрии мне в жизни не пригодились, потому и написал, не хотел заморачиваться.


Так ты еще похвастайся сколько ты от груди жмешь, и твое интеллектуальное превосходство будет неоспоримо, я буду повержен.

Вот тебе еще парочка задач. Определить дату через № дней от текущей через юлианов день или unix, осуществить конвертацию градусов минут и секунд в десятичные градусы, вычислить квадратный корень методом ньютона или через натуральный логарифм.
Все это тебе может понадобится, раз уж ты выбрал такую древнюю версию 0.51!



И вот тебе сказка на ночь!
Код

ФРЕДЕРИК БРАУН

ОНО И ВИДНО

Пер. С. Ирбисова

Бросив взгляд на часы, Генри Блоджет схватился за голову. Уже два часа ночи! Он раздраженно захлопнул учебник - все равно ему нипочем не успеть до утра.
Чем больше он зубрил геометрию, тем меньше понимал. Математика вообще плохо давалась ему, а уж геометрия! Ее даже зубрить невозможно.

Если он завтра провалится, его вышвырнут из колледжа; у него и без того уже три хвоста за прошлые семестры. Еще один провал - и его отчислят автоматически.

Тогда конец всему: мечтам, карьере. Но сейчас его могло спасти только чудо.

Вдруг он вскинул голову, даже на стуле подпрыгнул. А почему бы не призвать на помощь тайные силы? Генри издавна интересовался магией и даже собрал небольшую библиотечку.
В этих книгах простым языком объяснялось, как вызывать демонов и как подчинять их своей воле. До сих пор он не решался попробовать, но сейчас стоило рискнуть. Хуже не будет. Все равно без волшебства геометрию не осилить.

Он подошел к полке, достал самую толковую книгу по черной магий, открыл на нужной странице и повторил простые инструкции.

Генри взялся за дело: сдвинул мебель к стенам, мелом нарисовал посреди пола пентаграмму, ступил в нее и произнес заклинание.

Демон явился. Он был куда страшнее, чем предполагал Генри. Собравшись с духом, Блоджет обратился к сути дела.

- Мне никак не дается геометрия...

- Оно и видно! - прогремел демон; в голосе его слышалось торжество.

Полыхая пламенем, он вышел из мелового шестиугольника, который Генри нарисовал вместо пентаграммы.

Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Soteric
сообщение 31.12.2014, 13:31
Сообщение #15


********

Master
Сообщений: 1.377
Регистрация: 7.8.2006
Группа: Пользователи
Наличность: 3227
Пользователь №: 7.166



Цитата(Mirage @ 31.12.2014, 8:12) *
Если не изменяет память то алгоритм движения по диагонали выглядит вот так:

Нет. Движение по диагонали это такое же действие как движение по горизонтали или вертикали.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Mirage
сообщение 31.12.2014, 16:21
Сообщение #16


*******

Группа: Пользователи
Наличность: 0
Из: Иваново
Пользователь №: 13.089
Возраст: 35



а, нано с проходимостью перепутал (IMG:style_emoticons/default/smile.gif)


--------------------
Изображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
SusaniN
сообщение 1.1.2015, 19:10
Сообщение #17


*****

Journeyman
Сообщений: 411
Регистрация: 23.6.2004
Группа: Пользователи
Наличность: 0
Из: Izmaylovo
Пользователь №: 1.873



Цитата(Sirocco @ 31.12.2014, 11:13) *

Так ты еще похвастайся сколько ты от груди жмешь, и твое интеллектуальное превосходство будет неоспоримо, я буду повержен.

Вот тебе еще парочка задач. Определить дату через № дней от текущей через юлианов день или unix, осуществить конвертацию градусов минут и секунд в десятичные градусы, вычислить квадратный корень методом ньютона или через натуральный логарифм.
Все это тебе может понадобится, раз уж ты выбрал такую древнюю версию 0.51!


Я уже давно не занимаюсь ультимой, у меня нет на это времени, но задался таким вопросом, потому что стало интересно, у меня спросили, и я заинтересовался.

Ты похоже совсем неадекват, удачи тебе по жизни, она тебе точно понадобиться =)

Всем спасибо за обсуждение.


--------------------
Cause i can dodge the bullets, baby © Phil Hellmuth
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Sirocco
сообщение 1.1.2015, 19:27
Сообщение #18


******

Expert
Сообщений: 809
Регистрация: 2.2.2012
Группа: Пользователи
Наличность: 15408
Пользователь №: 14.566
Возраст: 30



Т.е вас там таких двоечников уже двое...

Цитата

Я не очень понял как сравнивать, давай на примере на любом языке хоть блок схемами, под 51а я адаптирую.


рассказывай дальше, как ты не занимаясь ультимой, будешь что-то там адаптировать с помощью блок-схем.
Ты ври то как-нибудь с оглядкой на то, что писал до этого....

Человек, который оправдывается тем что он окончил школу 10 лет назад, жалок. Это как признаться в том, что ты остановился в развитии...
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
SusaniN
сообщение 2.1.2015, 1:49
Сообщение #19


*****

Journeyman
Сообщений: 411
Регистрация: 23.6.2004
Группа: Пользователи
Наличность: 0
Из: Izmaylovo
Пользователь №: 1.873



Цитата(Sirocco @ 1.1.2015, 19:27) *

Т.е вас там таких двоечников уже двое...
рассказывай дальше, как ты не занимаясь ультимой, будешь что-то там адаптировать с помощью блок-схем.
Ты ври то как-нибудь с оглядкой на то, что писал до этого....

Человек, который оправдывается тем что он окончил школу 10 лет назад, жалок. Это как признаться в том, что ты остановился в развитии...


Да все давай пока "интеллигент" ты погромче кричи о своих интеллектуальных данных, а то ж не признают мало ли, удачного развития, окончания школы, или если уже успел - компьютерного задротства. Мне реального мира хватает, чтобы с такими ценными экземплярами вести беседу.


--------------------
Cause i can dodge the bullets, baby © Phil Hellmuth
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 28.3.2024, 22:06
Designed by Nickostyle