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

Труды Кольского научного центра РАН. Серия: Технические науки. 2025. Т. 16, № 3. С. 117-130. Transactions of the Kola Science Centre of RAS. Series: Engineering Sciences. 2025. Vol. 16, No. 3. P. 117-130. Рис. 2. Переменные Y, Z и их домены 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 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 54 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 86 87 88 89 90 91 92 93 94 95 96 97 98 99 Рис. 3. Пространство 10 х 10 Рис. 4. Домен переменной Z после распространения Ограничение CornerConstraint Так как данное ограничение унарное, то оно будет удовлетворено при первоначальном распространении. Для этого для каждого значения из домена переменной проверяется, будет ли объект, поставленный в эту клетку, располагаться в углу. Также можно задавать расположение объекта у конкретного угла (или нескольких углов). Для каждого из четырех видов углов проверяются две опорные клетки, которые должны быть незанимаемыми. Если хоть одна из них свободна, то, значит, объект не будет располагаться в проверяемом углу. Для верхнего левого угла опорными являются клетка выше p - widthg и клетка левее p - 1. Для верхнего правого угла вначале вычисляется верхняя правая клетка объекта p 1 = p + widthobj - 1, а после проверяются клетка выше p 1 - widthg и клетка правее p 1 + 1. Для нижнего левого угла вначале вычисляется нижняя левая клетка объекта p 2 = p + (heightobj - 1) х widthg, а затем проверяются клетка ниже p 2 + widthg и клетка левее p 2 - 1. Для нижнего правого угла вначале вычисляется нижняя правая клетка объекта p 3 = p + (heightobj- 1) х widthg + widthobj - 1, а после проверяются клетка нижеp3 + widthg и клетка правее p 3+ 1. Если при проверке всех углов, объект не располагается ни в одном из углов, следовательно, проверяемая клетка p не удовлетворяет ограничению и удаляется из домена. Пример: есть объект Y (см. рис. 2), который необходимо поставить в любой из углов пространства 10 х 10 (см. рис. 3). При распространении проверяется каждая клетка, но в данном примере показывается алгоритм при рассмотрении клетки 51. Вначале необходимо определить четыре крайние клетки объекта: верхняя левая клетка p = 51; верхняя правая клетка p \ = p + widthobj - 1 = 54; нижняя левая клетка p 2 =p + (heightobj - 1) х widthg = 81; нижняя правая клеткаp 3 = p + (heightobj- 1) х widthg + widthobj - 1 = 84. © Таран П. В., Зуенко А. А., 2025 121

RkJQdWJsaXNoZXIy MTUzNzYz