В своём проекте я принял решение использовать для проверки симметрии конечностей морфидов 3 параметра.
1) С чётного или нечётного значения должна начинаться симметрия. 0 - без разницы, 1 - с нечётного, 2 с чётного.
2) Маска дублирования. Отмеченные в ней битом True конечности являются дублями первой в симметрии.
3) Маска блокирования. Отмеченные в ней битом True конечности остаются пустыми.
Собственно сейчас пишу процедуру проверки валидности симметрии и у меня есть вопрос по битовым маскам.
Что лучше применять? Формулу n=2^(y-1) где n число с маской, а y позиция бита. Или же при инициализации класса заранее вычислить 16 позиций и записать их в массив класса? Как будет лучше? Так же есть мысль не вычислять значения формулой в коде, а методом китайского кодирования внести их в процедуре инициализации в массив при помощи констант. Как поступить?
Собственно описание http://star-engineers.blogspot.ru/2013/12/part-unit.html
Способ организации гибкого хранения множества данных и быстрой работы с ними (с возможностью использования собственных оптимизаций при помощи кэширования индексов). Изюминка движка в общем http://star-engineers.blogspot.ru/2013/09/blog-post_30.html
Программу пишу на gambas 3
В настоящий момент в процедуре проверки валидности пишу код проверяющий выход симметрии за границу максимального количества лап морфида.