Я работаю над проблемой пространственного стекирования ... в данный момент я пытаюсь решить в 2D, но в конечном итоге придется выполнить эту работу в 3D.
Я делю пространство на nxn квадратов вокруг центрального блока, поэтому n всегда нечетно ... и я пытаюсь найти количество мест, где прямоугольник любого размера меньше nxn (например, 1x1, 1x2, 2x2 и т.д.) могут быть размещены там, где средний квадрат недоступен.
Пока у меня есть это ..
total number of rectangles = ((n^2 + n)^2 ) / 4
.. также общее количество квадратов = (n (n + 1) (2n + 1)) / 6
Однако я застрял в разработке формулы, чтобы определить, сколько из этих мест невозможно, так как средний квадрат будет занят.
Так, например:
[] [] []
[] [x] []
[] [] []
Доска 3 х 3 ... с 8 возможными местами для хранения вещей, так как используется средняя площадь.
Я могу использовать формы 1x1, 1x2, 2x1, 3x1 и т. Д. ...
Формула дает мне количество прямоугольников как: (9 + 3) ^ 2/4 = 144/4 = 36 мест расположения
Однако, поскольку средний квадрат незанятый, все это не может быть реализовано.
От руки я вижу, что это невозможные варианты:
1x1 формы = 1 невозможно (средний квадрат)
2x1 фигур = 4 невозможно (все, что использует средний квадрат)
3x1 = 2 невозможно
2х2 = 4 невозможно
так далее
Всего невозможных комбинаций = 16
Поэтому решение, которое я выбрал, - это 36-16 возможных прямоугольных стеков на доске 3х3.
Я закодировал это в C #, чтобы решить это методом проб и ошибок, но я действительно после формулы, которую я хочу найти для больших значений n, а также в конечном итоге сделать это 3D.
Может кто-нибудь указать мне какие-нибудь формулы для такого рода пространственной проблемы / проблемы тесселяции?
Также приветствуется любая идея о том, как перенести формулу полного прямоугольника в 3D!
Спасибо!