#0
by Dirk Diggler
Есть поле 1000х1000 единиц, поделенное на клетки 10х10, итого получается сетка 100х100. Есть робот высотой 20 единиц, который может перемещаться по этому клеточному полю из клетки в клетку. У него строго в центре тела есть сенсор, высота которого произвольная( 0-20 ед). Поле заставлено прямоугольными блоками одного размера - 2х2 единицы в основании, 5 ед. высотой. Задача - _быстро_ проверить, может ли робот из клетки A,B (высота сенсора C) видеть точку X1,Y1,Z1. Как это сделать? Предпочтительны быстрые алгоритмы.
#1
by Широкий
Лазерный метр присобачь. Если расстояние геометрической и реальное совпадают - значит видит
#3
by Dirk Diggler
Сейчас работает алгоритм "полета пули" - создается точка, и протаскивается по всей траектории от начала до конца с шагом 1 ед. На каждом шаге вычисляется пересечение со всеми блоками... Это очень медленно, нужен быстрый алгоритм. Интересно, тут BSP случаем не применим?
#4
by 0xFFFFFF
"Поле заставлено прямоугольными блоками одного размера - 2х2 единицы в основании, 5 ед. высотой. " Смотря как заставлено.
#5
by a_alenkin
что значит быстрые алгоритмы? ты на счетах считать будешь? я думаю что при правильных алгоритмах решения этой геометрической задачи время различаться будет на погрешность измерения
#7
by Dirk Diggler
На торце стоят. Вертикально. т.е. основание 2х2 всегда внизу. Стоят причем так, что ВСЕГДА можно наставить туда еще этих блоков так, их получилось ровно 25(5х5) на уровень. Т.е. для них клетка как бы еще порезана на 5х5 подклеточек-гнезд. Ну, bsp - быстрый алгоритм.
#8
by Asmody
если "в лоб", то строишь по двум точкам (A,B,C) и (X1,Y1,Z1) уравнение прямой и проверяешь удовлетворяют ли ему координаты блоков. Если вектора подтянуть, то вполне элегантно может получиться.
#10
by a_alenkin
сначала реши в проекции на само поле - основание - пересечение с проекциями блоков потом уже в плоскости полета - перпендикулярной основанию
#11
by Dirk Diggler
А как узнать, какие блоки проверять? Вообще все блоки? Сейчас модель такая - блоки привязаны к клеткам в виде списков. При "протаскивании" точки клетка известна, список блоков к проверке - ограничен...
#13
by Dirk Diggler
Да, чуть не забыл. Задача осложняется тем, что блоки могут стоять друг на друге, а также просто висеть в воздухе...
#14
by НЕА123
попробовать с тем же алгоритмом, но ограничить сначала на плоскости кол-во блоков. для этого: 1. выбрать блоки которые входят либо пересекаются на пути т.е. на квадрат с диагональю А,В X1,Y1; 2. найти блоки, пересекающиеся с отрезком А,В X1,Y1(наверное, проще всего на пересечение с диагоналями)
#15
by a_alenkin
а то что проверив проекцию на основание - ты будешь знать - какие блоки проверять уже в перпендикулярной плоскости
#17
by Asmody
на плоскости вообще всё можно было перевести в полярные координаты, где за 0й вектор взять {(A,B),(X1,Y1)}. дальше всё просто
#18
by 0xFFFFFF
Я так и не понял, как "заставлено", но, думаю уравнение прямой (геометрия 7й класс) должно помочь...
#19
by Dirk Diggler
Представь частокол из прямоугольных чурбанов,стоящих вертикально с размерами 2х2х20 единиц(допустим, дюймов). В несколько рядов и слоев. Условие - чурбан не может стоять в клетке частично(вылезая в дргугую), только целиком в ней.
#20
by Dirk Diggler
Пардон, а что такое "проверяешь удовлетворяют ли ему координаты блоков"? Блок - не точка, между прочим. А объемная фигура. Пространство у нас только на плоскости порезано, оно ж на самом деле не дискретно. ЧТо в уравнение-то подставлять?
#23
by Dirk Diggler
Это я в курсе. Вот буду своё писать - обязательно воспользуюсь. ) Тут же всё-таки уже готовая модель, и надо придумать быстрый способ без её изменения.
#27
by Dirk Diggler
Не. Такова игровая модель всего лишь древнего как гно мамонта Jagged Alliance 2. Без решения сабжевого вопроса не удается ничего сделать для модификации AI....
Тэги: Математика и алгоритмы
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- Остатки по усредненной себестоимости в Торговля и Склад
- [8.2] Передать в форму выбора ссылку
- Не переносятся Платёжные поручения из УТ11 в БП2..0 остальное переносится
- Хочу загрузить данные из экселя в документ Корректировка записей рн
- Где в обработке клиент банка правильнее подставлять префикс номеру документа?
- Как в запросе (СКД) перевести секунды в формат ЧЧ:ММ?
- 1С v8 Как отключить проверку заполнения реквизита при проведении?
- Вычисляемые поля в скд
- нет районного коэффициента в расчетной ведомости
- Конвертация обычных форм в управляемые?
- БП 1.6.28. При реализации не списывается сумма с 41 счета.
- 1C-8.1 ЗУП : КаК ввести два табеля на сотрудника работающего в разных подраздел
- УПП 1.2.36. Не расчитывается средний заработок в больничном
- Очистить регистр
- Как определить, что документ Word, открытый из 1С, был изменен
- 1С 8.2. УПП. Прошу помочь, работаем под РАУЗ. Но себестоимость не считается (((
- Учет ВР и ПР по основным средствам в 1С
- Не работает отбор в группе !!! Плиз хелп !
- Страница формы (закладка) при открытии
- Не считается ТФОМС и ФФОМС в Бухгалтерии 7 только одному сотруднику