LINUX.ORG.RU

Двойной ассоциативный массив

 


0

2

Нужен массив-хранилище объектов по двойному float ключу. При этом нужна очень специфическая функция нахождения объекта в массиве:
По двум ключам (X₀,Y₀) нужно вернуть объект с такими ключами (X,Y), чтобы (|X-X₀| + a*|Y-Y₀|) было минимальным (параметр a заранее известен).
Как вариант, сойдет условие чтобы |X-X₀| < b, а |Y-Y₀| минимально.

Короче, нужен двумерный аналог map::lower_bound. Есть где такой, или надо изобретать?

★★★★★
Ответ на: комментарий от anonymous

а при повороте, наверно, получится стена из прямоугольников

подумал что вряд ли здесь получатся прямоугольники;

исходные многоугольники областей притяжения путем поворота осей никуда не денутся, а останутся многоугольниками, хотя и со сторонами параллельными новым осям; конечно, такие многоугольники можно разбить на прямоугольники, но это еще надо ухитриться сделать программно то; да и искать потом по этой мозаике — не фонтан :)

anonymous
()
Ответ на: комментарий от morse

Мне почему-то «мой» вариант более логичным кажется

да я не против! :)

я пытался более подробно описывать, чтобы легче было понять суть алгоритма, чтобы посмотреть на него критически; твое же описание — более компактное и технически грамотное и больше подходит для имплементации!

учти только, что в твоей формулировке в п.3 «поиск прекращаем» означает лишь, что границы области претендентов больше не изменятся, но все попавшие в эту область точки все-таки нужно допроверить; так что небольшая неточность все же есть, и если дальше просто тупо начать кодить по этому алгоритму — получишь ошибку: смотри, Землю не взорви! :)

anonymous
()
Ответ на: комментарий от morse

ну и да, ты хоть открой страшную тайну, что это за переменные то (X,Y)? :)

координата-импульс?

энергия-импульс?

anonymous
()
Ответ на: комментарий от anonymous

но все попавшие в эту область точки все-таки нужно допроверить

Если мы сохранили минимальное значение заранее, то не нужно

ну и да, ты хоть открой страшную тайну, что это за переменные то (X,Y)? :)

Никаких страшных тайн. Первая переменная - очевидно энергия, а вторая - pseudorapidity, она же eta (η)

morse ★★★★★
() автор топика
Ответ на: комментарий от morse

Нет, я ничего не путаю

Путаете, на LHC ускоряют протоны и тяжелые ионы, а на ATLASe ничего не ускоряют, а только регистрируют вторичные частицы, которые образуются при взаимодействии протонов или тяжелых ионов, среди этих частиц есть и упомянутые вами фотоны и нейтроны.

anonymous
()
Ответ на: комментарий от anonymous

Путаете, на LHC ускоряют протоны...

не умничай, он ускоряет не сами фотоны, а обсчет их траекторий на компьютере

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.