Труды КНЦ (Технические науки вып.3/2025(16))

Затем для каждой из крайних точек проверяются две опорные клетки: для верхней левой клетки р = 51: клетки выше (p - widthg = 41) и левее (р - 1 = 50). Так как клетка 41 является незанимаемой, то объект Y не будет располагаться в верхнем левом углу пространства. для верхней правой клетки рі = 54: клетки выше (рі - widthg = 44) и правее (рі+1 =55). Обе клетки являются свободными, поэтому условие на расположение в верхнем правом углу не выполняется. для нижней левой клетки р 2 = 81: клетки ниже ( р + widthg = 91) и левее ( р - і = 80). Обе клетки являются незанимаемыми, а значит, выполняется условие на расположение объекта в нижнем левом углу. для нижней правой клетки рз = 84: клетки ниже (рз + widthg = 94) и правее (рз + 1 = 85). Так как клетка 85 свободна, то условие на расположение объекта в нижнем правом углу не выполняется. В результате проверки получилось, что если объект Y поставить в клетку 51, то объект будет располагаться в нижнем левом углу, что удовлетворяет ограничению, а значит, значение {51} остается в домене. В случае, когда при проверке значения выявляется, что объект не будет располагаться в каком-то из углов пространства, то проверяемая клетка удаляется из домена. В результате распространения в домене переменной останутся только те значения, которые удовлетворяют ограничению (рис. 5). Труды Кольского научного центра РАН. Серия: Технические науки. 2025. Т. 16, № 3. С. 117-130. Transactions of the Kola Science Centre of RAS. Series: Engineering Sciences. 2025. Vol. 16, No. 3. P. 117-130. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 IS 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 3:4 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84; 85 Ш 87 88 89 90 91 92 93 94 95 96 97 98 99 Рис. 5. Домен переменной Y после распространения Ограничение DistanceToWallConstraint Данное ограничение также является унарным и удовлетворяется при первоначальном распространении. У ограничения два параметра — направление (direction) и расстояние (distance). Параметр направления (direction) может принимать четыре значения: «North» — вверх; « South » — низ; « East » — право; «West» — лево. Параметр расстояния (distance) измеряется в клетках пространства и может задаваться двумя вариантами: жестко ограничивать максимальное расстояние до «стены» или гибко задавать, что расстояние до стены должно быть не меньше заданного. При создании пространства для каждого из направлений создается матрица, в элементах которой хранится информация о расстоянии от соответствующей клетки до стены. Например, ниже показано графическое представление пространства и матрицы для направления «South» (рис. 6). При распространении рассматривается каждое значение р из домена переменной: вычисляется набор клеток {pk}, которые займет объект, если поставить его в проверяемую клетку, по следующей формуле: р + i + j х widthg, при i е [0, widthi), j е [0, height!). (5) Далее для каждого значения {pk} из полученного набора вычисляются координаты x и y. Координатой y является результат целочисленного деления pi на ширину пространства (y =pi DIV widthg); а x — это остаток от деления pi на ширину пространства (x = pi MOD widthg). Затем из полученных пар координат из матрицы расстояний вычисляются соответствующие элементы и берется минимальное из них. Если полученное значение не равно заданному, значит, проверяемая клетка р не удовлетворяет ограничению и удаляется из домена. © Таран П. В., Зуенко А. А., 2025 122

RkJQdWJsaXNoZXIy MTUzNzYz