Бред


Ответить в тред Ответить в тред

Check this out!
<<
Назад | Вниз | Каталог | Обновить тред | Автообновление
83 8 13

Аноним 26/01/20 Вск 17:18:46 2123394891
HRODA6A4 — копия.png (190Кб, 1140x657)
1140x657
У меня есть несколько многоугольников. Каждый можно охарактеризовать двумя массивами, в одном точки в другом линии межд точками. Каждая из точек знает какой линии она принадлежит и каждая линии знает какие две точки она соединяет.

Проблема вот в что иногда считываются неправильно созданные массивы и программма считывает данные как на пикче. Массивы уже никак не поправить если че. Другими словами, выделенные красным цветом два многоугольника программа считывает как один.
Вопрос, как определить связность фигуры, тобишь является ли фигура образованная линиями одним многоугольником или несколькими?
Аноним 26/01/20 Вск 17:21:28 2123397062
Бамп
Аноним 26/01/20 Вск 17:24:09 2123399063
Бамп
Аноним 26/01/20 Вск 17:26:57 2123400804
Бамп
Аноним 26/01/20 Вск 17:27:45 2123401475
Как тут отвечать если программы мы не видим? Ну хз, попробуй пройтись по вершинам - зациклишься вот и многоугольник
Аноним 26/01/20 Вск 17:30:39 2123403556
>>212340147
Создает массивы одна программа считывает другая. Ту что считывает я могу поправить а ту что создает нет.
Аноним 26/01/20 Вск 17:31:38 2123404427
>>212339489 (OP)
У тебя 3 выделено. Нихуя не понятно блять.
Аноним 26/01/20 Вск 17:32:58 2123405418
>>212340442
Два. Те в которых циферки те и выделены. Квадрат отдельно.
Аноним 26/01/20 Вск 17:33:59 2123406319
>>212340541
Так они даже не касаются. Делай 2 пика, чтобы понять как должно быть.
Аноним 26/01/20 Вск 17:35:02 21234072010
>>212340355
А что с проходом по вершинам подойдёт?
Аноним 26/01/20 Вск 17:44:05 21234142911
То, что у тебя фигуры лежат в двух массивах это конечно лютое извращение, ну да ладно
Если у тебя массив изначально неправильно создался, и ты его никак не можешь исправить, то имхо, тут уже ничего особо не поделаешь. По крайней мере каким-нибудь простеньким универсальным алгоритмом
Аноним 26/01/20 Вск 17:44:32 21234146412
HRODA6A4 — копи[...].png (186Кб, 1084x591)
1084x591
HRODA6A4 — копия.png (190Кб, 1074x571)
1074x571
>>212340631
Вот смотри, на первом пике я выделил все многоугольники. Программа их видит в количестве четырех штук, каждый пронумерован по номеру массива.

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

>>212340720
Квадрат внутри квадрата (номер 3 на пиках) по такому методу это "отдельная" фигуры. Тобишь он мне создает копию уже существующего из нихуя.
Аноним 26/01/20 Вск 17:48:51 21234172513
Бамп
Аноним 26/01/20 Вск 17:51:14 21234189914
ОП, а на чем пишешь-то? Чисто из любопытства
Аноним 26/01/20 Вск 17:51:26 21234191515
>>212341464
Сколько вершин у тебя в 1 прямоугольнике в исправленном виде 4 или 8?
Аноним 26/01/20 Вск 17:52:31 21234199016
>>212341464
Но они даже не касаются ничем. Так что ковыряй код, твоя читалка лажает.
Или у тебя на них уже общий массив? Может тогда отсекать все точки, которые не дружат? Чтобы остался замкнутый контур.
Аноним 26/01/20 Вск 17:56:14 21234230017
>>212341915
В исправленом виде 8.

>>212341990
Читалка все нормально читает. Она находит массив, считывает его и следующий за ним для точек/линий. Так дефективный многоугольник она считывает за один проход.
>Может тогда отсекать все точки, которые не дружат
Не понял, что значит не дружат?
Аноним 26/01/20 Вск 17:59:03 21234256718
>>212342300
Ну вот у тебя есть точка, она касается только 2х других в многоугольнике. Все остальные с ней не дружат, они где-то там. Если выбрать точки по такому проходу, то у тебя будет контур замкнутый. Всё что не в нём - отдельно нахуй и из них опять пробуешь запилить кирпич.
Аноним 26/01/20 Вск 17:59:15 21234258819
Аноним 26/01/20 Вск 17:59:53 21234264720
>>212342300
>Читалка все нормально читает.
Охуеть, читалка нормальная, массивы править нельзя, больше в процессе ничего не участвует. Чего ты от двачеров хочешь? Думаешь проблема в фазе луны?

>Не понял, что значит не дружат?
Нет пути
Аноним 26/01/20 Вск 18:03:33 21234300821
>>212342300
Раз 8, значит считаем, что фигуры с дырками. Тогда можешь найти все вершинные циклы и проверять их на вложенность друг в друга (с помощью линейной алгебры), можешь просто проверять влеженость 1 вершины из цикла в некий другой цикл.
Аноним 26/01/20 Вск 18:04:20 21234307922
>>212342567
А, пробовал уже так. Выходит что квадрат номер три из этих
>>212341464
пикч (который внутри прямоугольника) считывается как отдельный многоугольник. Дублируется он короче.

>>212342647
Я сохраненный массив в джсоне вручную править буду? Их там дохуя.
Аноним 26/01/20 Вск 18:04:31 21234309923
>>212341464
>Программа их видит в количестве четырех штук
Объяснение уровня "комплюктер ни работает"
Задача не выглядит сложной, но не похоже что у тебя есть достаточное понимание проблемы для её решения.
Аноним 26/01/20 Вск 18:07:19 21234335124
>>212343099
Объяснил максимально доступно без проволочек, чтобы понятно было. Нужно было дизассемблированный код скинуть?
Аноним 26/01/20 Вск 18:08:30 21234347625
Безымянный.png (158Кб, 1084x592)
1084x592
>>212343079
>Выходит что квадрат номер три из этих
Как? Он не связан с ними.
Аноним 26/01/20 Вск 18:13:45 21234397326
>>212343476
Если точки с линиями принадлежат двум разным массивам они дублируются в каждом.
Например линия между двумя разными многоугольниками.
Аноним 26/01/20 Вск 18:15:01 21234406827
>>212343351
Алгоритм этот
https://neerc.ifmo.ru/wiki/index.php?title=%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BE%D0%B1%D1%85%D0%BE%D0%B4%D0%B0_%D0%B2_%D0%B3%D0%BB%D1%83%D0%B1%D0%B8%D0%BD%D1%83_%D0%B4%D0%BB%D1%8F_%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B8_%D1%81%D0%B2%D1%8F%D0%B7%D0%BD%D0%BE%D1%81%D1%82%D0%B8
Но чёт сомневаюсь, что ты осилишь. Наверное потому, что ты спросил в /b, а не в /pr.
Аноним 26/01/20 Вск 18:16:36 21234420528
>>212343973
> в каждом.
У тебя проблема в том, что 2 прямоугольника в одном массиве живут из-за говнокода, а не в дублях. Работай с одним массивом для проверки контура и разделения его на два, если он порвался нахуй. Вряд ли у тебя будут сложные фигуры деленные 1 точкой на части.
Аноним 26/01/20 Вск 18:33:51 21234571129
HRODA6A4 — копия.png (71Кб, 1111x580)
1111x580
>>212344068
Запустил я алгоритм с вот таким вот единственным многоугольником от помеченой вершины (с той у которой вершины[0]) с проходом по всему массиву вершин, используя ссылкку вершины на линии которым она принадлежит для проверки связности, пока массив полностью не пройдется.
Он отработал и вернул мне два многоугольника. Он внутренние вершины с линиями посчитал отдельно. Дойти к ним через линии внешнего контура он не смог.
Че делать теперь?
Аноним 26/01/20 Вск 18:34:42 21234578930
>>212344205
Я хочу сразу покрыть все возможные варианты чтобы потом не возвращаться к этому гавну еще раз.
Аноним 26/01/20 Вск 18:39:00 21234619231
>>212345711
А что тебе в итоге надо получить?

Вершины до которых алгоритм смог дойти это первая компонента связности. Если надо получить все компоненты - то среди оставшихся вершин выбираешь случайную и повторяешь процесс пока вершин не останется.
Аноним 26/01/20 Вск 18:41:58 21234644132
>>212346192
Нужно получить область которую эти вершины с линиями ограничивают, ту в которой текстурка есть короче.
Аноним 26/01/20 Вск 18:43:59 21234659433
>>212346441
Делаешь проходки, а потом смотришь, есть ли фигура, точки которой все влезают внутрь другой, тогда их взад дружишь.
Аноним 26/01/20 Вск 18:46:27 21234675234
>>212346594
А если там несколько вложено друг в друга? Квадрат в квадрате в квадрате в квадрате.....
Аноним 26/01/20 Вск 18:46:43 21234678135
Screenshot20200[...].png (663Кб, 1231x686)
1231x686
Аноним 26/01/20 Вск 18:47:23 21234682036
>>212346752
Ну, тогда жопа случается.
Аноним 26/01/20 Вск 18:49:54 21234700337
>>212339489 (OP)
Что пишешь то ОП, игру или генератор уровней для неё? Скинь тогда хотя бы псевдокод своего генератора.
Аноним 26/01/20 Вск 18:57:47 21234756038
>>212346752
Ну так выкладывай сразу какие ещё граничные ситуации возможны. Общая угловая точка у многоугольников? Общая сторона? Пересечение многоугольников? Самопересечение у одного многоугольника?
Какое максимальное количество точек и линий?
Аноним 26/01/20 Вск 19:05:50 21234809239
>>212347560
Общая вершина для неограниченого количества многоугольноков, линия может принадлежать только двум максимум многоугольникам, самопересечений нету, максимальное количество вершин и линий (отдельно) для многоугольника 65536
26/01/20 Вск 19:11:53 21234848540
>>212339489 (OP)
>>является ли фигура образованная линиями одним многоугольником или несколькими?
Есть теорема что если набор не нулевых векторов имеет нулевую сумму, то этот набор образует многоугольник.
Аноним 26/01/20 Вск 19:14:22 21234865941
кек
26/01/20 Вск 19:17:06 21234881842
>>212348485
Не, малех иначе: если набор векторов, отложенных из одной точки, имеет нулевую сумму, то сумма векторов образует замкнутую ломанную.
Аноним 26/01/20 Вск 19:18:50 21234894643
26/01/20 Вск 19:27:33 21234950544
>>212348946
А какое ограничение на время обработки?
Аноним 26/01/20 Вск 19:37:25 21235012845
Аноним 26/01/20 Вск 19:44:17 21235049846
>>212350128
Так, а как заполняется массив? Какая инфа хранится в массиве с "отрезками"?
Аноним 26/01/20 Вск 19:52:33 21235103047
>>212348092
Неприятные ограничения. Особенно про общую точку и сторону. Изучи https://ru.wikipedia.org/wiki/%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0_%D0%BE_%D0%BF%D1%80%D0%B8%D0%BD%D0%B0%D0%B4%D0%BB%D0%B5%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D1%82%D0%BE%D1%87%D0%BA%D0%B8_%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE%D1%83%D0%B3%D0%BE%D0%BB%D1%8C%D0%BD%D0%B8%D0%BA%D1%83 и https://ru.wikipedia.org/wiki/%D0%92%D1%8B%D0%BF%D1%83%D0%BA%D0%BB%D0%B0%D1%8F_%D0%BE%D0%B1%D0%BE%D0%BB%D0%BE%D1%87%D0%BA%D0%B0 чтобы лучше понять подходы.

Вряд ли стоит самому всё писать. Полазь по гитхабу, поищи подходящие либы для работы с полигонами, типа https://github.com/bast/polygons

И посмотри на реальные данные. Может они проще чем ты описал.
Аноним 26/01/20 Вск 20:00:29 21235155148
Мда, не тривиальная штука.
Аноним 26/01/20 Вск 20:00:30 21235155249
>>212350498
Точки линии и внутренне число массива с оригинальной датой, тобишь номер пары (вершины линии) в джонсе.

Аноним 26/01/20 Вск 20:11:56 21235226150
>>212351552
Кажется есть решение:
1) Наш массив - это граф.
2)Многоугольником будет "кратчайший цикл" (не уверен насчет названия)
Тогда, если п.2 верный, нас устроит следующий алгоритм: Возьмем произвольную точку, перейдем из нее в другую, за каждый переход будем +1 к счетчику, если появляется развилка, счетчик дублируем, если мы вернулись в изначальную точку и наш счетчик меньше всех остальных - мы нашли многоугольник. Вырезаем все с ним связанное и повторяем.

Наверное можно получить прибавку к скорости если отмечать уже пройденные отрезки.

Проверь, м.б. сработает но не спеши радоваться, графы - не самая сильная моя сторона
Аноним 26/01/20 Вск 20:26:39 21235305851
HRODA6A4 — копи[...].png (108Кб, 1920x575)
1920x575
>>212352261
Проблема с такой вот конфигурацией будет.
Левый многоугольник он обойдет раз, вернет один многоугольник, обойдет по не пройденным вернет второй.
А если он по правому пойдет, он вернет те же два многоугольница. Но по факту он там один, так как "внутренний" квадрат там пуст.
Аноним 26/01/20 Вск 20:42:10 21235397752
>>212353058
Ну тогда уже у задачи нет решения, или ты что-то не договариваешь: Если дан набор точек (как на пике), то откуда мне, как человеку, узнать что там 1 фигура, а не 2? Если это нигде не оговорено, то это невозможно. Разве что нам дано количество фигур...
Аноним 26/01/20 Вск 20:44:11 21235409353
>>212353977
>Разве что нам дано количество фигур
Значит я не пояснил правильно. Каждая фигура пронумерована.
Аноним 26/01/20 Вск 20:45:09 21235415354
>>212354093
Бля, давай еще раз и сначала. А еще лучше сразу ссылку на первоисточник.
Аноним 26/01/20 Вск 20:48:54 21235439955
>>212354153
Есть несколько многоугольников.
Каждый многоугольник состоит из точек и линий между ними. Данные о них хранятся в двух разных массивах, один для точек другой для линий.
Многоугольники пронумерованы в том же порядке в каком они сохранены в джонс файле.

Некоторые из многоугольника имеют багованные массивы в которых кодируются несколько многоугольников вместо одного. Нужно определить такие массивы и разделить их на отдельные многоугольники.
Аноним 26/01/20 Вск 20:53:13 21235467456
>>212354399
>>Многоугольник — геометрическая фигура, обычно определяемая как часть плоскости, ограниченная замкнутой ломаной, звенья которой не пересекаются.

Переделывай, под это опрнделение твой "выколотый прямоугольник" не подходит.
Аноним 26/01/20 Вск 20:55:58 21235485057
Аноним 26/01/20 Вск 20:58:26 21235500058
>>212354399
Алсо,
>>Данные о них хранятся в двух разных массивах
Непонятно: для каждого многоугольника своя пара массивов?

Т.е. на вход мы получаем:
n - кол-во многоугольников.
2n массивов с данными.
Так?
Аноним 26/01/20 Вск 21:00:25 21235511759
>>212355000
>для каждого многоугольника своя пара массивов
Да
Аноним 26/01/20 Вск 21:06:04 21235546460
>>212354399
Если багованные массивы хранят данные об отдельных фигурах не вперемешку, а по-очереди, то это надо использовать. Иначе всё непросто.
Аноним 26/01/20 Вск 21:08:21 21235560161
>>212355117
Ну тогда почему не подходит вышеуказанный алгоритм?
Всё так же: прошлись по вершинам, если получили >1 многоугольника - смотрим попадают ли все вершины одного в область другого, если да - это дырка, ее не трогаем, если хоть одна нет - разделяем.
Аноним 26/01/20 Вск 21:09:37 21235569862
>>212355117
Ну и сравниваем с кол-вом конечно
Аноним 26/01/20 Вск 21:11:40 21235581963
>>212355698
Однако задача не будет иметь решения в таком случае:
Есть у нас многоугольник с дыркой, и одним лишним многоугольником в своей области. У нас нет возможности определить кто из двух "дырок" будет тру дыркой
Аноним 26/01/20 Вск 21:12:37 21235588064
>>212355601
>попадают ли все вершины одного в область другого
Придется все фигуры тогда проверять.
Аноним 26/01/20 Вск 21:38:32 21235762365
>>212355880

Тогда только вариант с обходом вершин. Вершина №1, дальше обход по линиям до тех пор, пока не будет достигнута вершина №1 (многоугольники все замкнутые, так?).
Оставшиеся вершины скидываются в отдельный массив, после чего операция повторяется до тех пор, пока не останется непройдённых вершин.
Аноним 26/01/20 Вск 21:42:38 21235793366
>>212339489 (OP)

А что мешает хранить только выпуклые многоугольники, а дырки обрабатывать разностью? Ну типа точка входит в большой и не входит во вложенный == всё заебись.
Аноним 26/01/20 Вск 21:46:11 21235820567
>>212357623

А, почитал тред и понял, что кодеров, как у инцелов, проблема в дырках, лол. Для решения вопроса ты берёшь полученные на предыдущем этапе многоугольники, и смотришь их вложенность друг в друга. Если один вложен в другой, то это дырка.
Аноним 26/01/20 Вск 21:49:46 21235843768
>>212357623
Да, другого пути нету видимо.
Аноним 26/01/20 Вск 21:51:46 21235857269
>>212358437

Но ведь ты должен уметь прогнать один раз эту проверку и создать правильные массивы, не?
Аноним 26/01/20 Вск 21:53:47 21235869270
>>212358205
Там может быть как дырка так и другая фигура, в этом то и проблема а не конкретно в дырках.
Аноним 26/01/20 Вск 21:59:23 21235901971
Хор
Аноним 26/01/20 Вск 21:59:25 21235902472
>>212358572
Че там сложного то? Создал цикл, создал массив, хуяк хуяк и в продакшн.
Аноним 26/01/20 Вск 21:59:53 21235905273
Баалро
Аноним 26/01/20 Вск 21:59:54 21235905374
>>212359024
>>212358572
Тем более у меня уже похожий вариант есть, тьолько доработать его чутка и все.
Аноним 26/01/20 Вск 22:29:39 21236094675
>>212358692

Предполагаю, что это не существующий вариант. В Build-подобных редакторах (а это явно что-то из такой области) всё равно текстура как-то привязывается к многоугольнику, и массивы должны сохраняться по большей части по отдельности.
Хотя, если писал долбоёб (а среди индюков это частое явление), то всё возможно, лол. Тогда можно проверять, какие текстуры привязаны именно к этой области. Если есть текстура - то многоугольник, если нет текстуры то дырка.
Текстур-то явно меньше, чем фигур.
Аноним 26/01/20 Вск 22:45:43 21236201476
>>212360946
>Текстур-то явно меньше, чем фигур.

Это я хуйню сморозил. Имел ввиду, что проверок на текстуры нужно меньше, чем на вершины.
Аноним 26/01/20 Вск 22:56:23 21236270077
>>212360946
>>212362014
Полная инфа по фигуре состоит из охулиона пунктов, мне же нужна только сама фигур чтобы я мог построить ноды для ботов.
Тобишь, одна фигура - одна нода.
А тут несколько фигур под одну ноду попадают и все ноды ложатся как сосач когда макака яйца чешет.
26/01/20 Вск 23:03:02 21236309478
15800483276070-[...].png (191Кб, 1140x657)
1140x657
>>212339489 (OP)
Ну хз, если у тебя два квадрата обрабатываются как один, ниши добавь - и из за уникальности шейпа и координат не будет совпадения.
Мимо ебался с TrenchBroom по той же причине
https://www.youtube.com/watch?v=shcAvnYp9ow
Аноним 26/01/20 Вск 23:04:44 21236317179
>>212363094
Не могу, фигурки уже в файле и я их поменять не имею права (работа аффтара, лицензия, все дела).
26/01/20 Вск 23:08:02 21236335980
15800596004170-2.png (111Кб, 1920x575)
1920x575
>>212353058
ты делаешь это хуево. либо без дыр, либо вот так:
26/01/20 Вск 23:09:03 21236341181
>>212363171
Хуйню не неси, да. Всегда можно. (Невидимые, блядь, дырки. БЕЗ ТЕКСТУР. )
Аноним 26/01/20 Вск 23:13:43 21236366682
>>212363411
Там непроходимая область.
26/01/20 Вск 23:14:51 21236372283
>>212363666
Мне кажется, движками и левелдизайном тебе еще работать рано.
Аноним 26/01/20 Вск 23:15:51 21236379484
>>212363722
Колонна там может быть, к примеру.
Настройки X
Ответить в тред X
15000 [S]
Макс объем: 20Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
X
Ваш шидевор X
Стикеры X
Избранное / Топ тредов