Ответы пользователя по тегу Алгоритмы
  • Как сравнить два дерева каталогов?

    MANAB
    @MANAB
    Разрабатываю на C#: Web, Desktop, Gamedev
    Ну для меня алгоритм выглядит следующим:
    - если рутовые Folder.Path не совпадают, то выбирается одно из деревьев и по все Subfolders ищется Folder.path другого дерева, если не найдено - меняются местами. Если по итогу не найдено - это разные не совпадающие деревья
    - Если найден общий root - разница это добавленнные/удаленные папки и деревья.
    - далее от общего рута сравниваются списки папок и файлов и рекурсивно (либо циклично) как обход дерева происходит сравнение все SubFolders
    Ответ написан
  • Самый быстрый алгоритм для определения, находится ли точка внутри области?

    MANAB
    @MANAB
    Разрабатываю на C#: Web, Desktop, Gamedev
    Ну из того, что я понял по описанию, я бы использовал Quad-tree для того, чтобы сгруппировать и точки и полигоны по областям. Минимальный уровень Qaud я бы делал таким, чтобы его размер был много меньше размера полигона, чтобы в случае пересечения полигоном Qaud-a он бы разбивался на 2 или несколько треугольников. Ну и далее сам алгоритм проверки: находим Qaud для точки (константная по времени операция, т.к. по позиции можно формулой определить), смотрим, есть ли в этом Qaud часть заданного полигона, проверяем, полностью ли эта часть содержится в Quad или нет., если полностью - все ок, если не полностью - делим на треугольники, образованные точками пересечения полигона и Quad-а и проверяем попадание точки в треугольник, принадлежащий полигону.
    Ответ написан
    2 комментария