Добавлен MpW
У меня такой вопрос как разбить фигуры на прямоугольники?
возьмем такую ситуацию, что вам заранее известна форма, и имеются точки. нужно разбить фигуру на прямоугольники (rect), дело в том что саму область-фигуру не добавишь в регион. По любому надо разбивать на ректы. Ими проще проверять лежит ли точка внутри ректа или нет, чем какая то фигура.
возьмем такую ситуацию, что вам заранее известна форма, и имеются точки. нужно разбить фигуру на прямоугольники (rect), дело в том что саму область-фигуру не добавишь в регион. По любому надо разбивать на ректы. Ими проще проверять лежит ли точка внутри ректа или нет, чем какая то фигура.
Я уже многое сделал, у меня система находит эту фигуру. И надо после разбить на ректы.
Вот пример уже имеются 6 точек p1-p6, могу найти p7-p8. Теперь надо как-то собрать ректы (на глазок понятно что там 3, а то и меньше 2). надо как-то написать алгоритм, что эти отрезки образовали ректы
Вот пример уже имеются 6 точек p1-p6, могу найти p7-p8. Теперь надо как-то собрать ректы (на глазок понятно что там 3, а то и меньше 2). надо как-то написать алгоритм, что эти отрезки образовали ректы
Фигуры могут быть любой формы
находил такой вопрос вот здесь, но ответа не нашел. алгоритм просто нужен
Принятый ответ
Вот конечный вариант. Переделал на хэш-таблицу
Исправил многие подвисы - большая часть которых эта строки. Именно строки вызывают подвисы. Они не только в дебагах, но в ExecuteFunc, строковое название молнии и пр. И теперь молнии могу миллиардами создавать без проблем. Я тексты строк все сохранил в бд. Без этого почему у юнитов анимация ходьбы поддергивалась.
Теперь все работает как надо и как часики. Единственная зараза - когда строю несколько деревней, потом вылетает чего-то с критом. Но это происходит очень и очень редко. где-то с шансом 0.05%. Возможно либо работаю с несуществующими объектами либо пытаюсь выгрузить из хэша не существующие данные. У вара какие то проблемы.
Пробовал вставить проверки GetHandleId(object) > 0 или HaveSavedReal или HaveSavedHandle - теперь сохранять карту не хочет. Пробую снова написать код
Исправил многие подвисы - большая часть которых эта строки. Именно строки вызывают подвисы. Они не только в дебагах, но в ExecuteFunc, строковое название молнии и пр. И теперь молнии могу миллиардами создавать без проблем. Я тексты строк все сохранил в бд. Без этого почему у юнитов анимация ходьбы поддергивалась.
Теперь все работает как надо и как часики. Единственная зараза - когда строю несколько деревней, потом вылетает чего-то с критом. Но это происходит очень и очень редко. где-то с шансом 0.05%. Возможно либо работаю с несуществующими объектами либо пытаюсь выгрузить из хэша не существующие данные. У вара какие то проблемы.
Пробовал вставить проверки GetHandleId(object) > 0 или HaveSavedReal или HaveSavedHandle - теперь сохранять карту не хочет. Пробую снова написать код
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Ред. MpW
Кстати пробовал массивами точек группировать, но код уж получился ужасным
Ред. MpW
исправил циклы, забыл поставить чистку и из этого цикл не завершал.
уменьшил кол-во шага. и пр
я не везде проставил в нативке call RegionAddRect(re, minx,miny,maxx-32,maxy-32
и многое другое. теперь работает. правда очень много дебагов и проверочных молнии, текстагов и поэтому подлагивает. если код в порядок привести будет норм. пока не закрываю тему. тк не знаю мб баги выявятся новые.
я еще не начинал пробовать как будет несколько регионов работать.
Ред. ScorpioT1000
И можно будет вычитать что угодно сколько угодно раз.
Вот реализация для 2д ректа stackoverflow.com/questions/25116092/boolean-operations-on-2d-re...
Ред. MpW
У меня из-за региона такие проблемы. Криво определяет IsPointInRegion лежит ли точка. Могу доказательства даже показать. Поэтому выверяю лишними проверками.
prog, не 9 месяцев. 2 года. У меня такая идея возникла тогда, мне показалось это необычным.
все говорят, возьми сделай что-то подобие массива ректов. Но это еще надо придумать как их объединить вместе. Это алгоритм составить. И чтобы друг на друга не наслаивались. Потом еще регион то будет не один, планируется что у игрока мб несколько деревней (если он там захочет). А еще допустим игроков то тоже несколько будет. Это сколько регионов. А на каждый регион еще надо эти массивы. Да это наверное самое неудобная идея. А еще надо будет проверять лежит ли точка в регионе. Поэтому это отменяется.
Самое простое это иметь массив регионов udg_Region и туда просто добавлять ректы. Или удалять.
Ред. Vlod
Ред. MpW