задача известная и откровенно говоря хреновато решенная даже для прямоугольных деталей
в принципе программу для деталей произвольной формы написать можно
для достижения идеального результата придется производить чуть ли не полный перебор что дико медленно даже на современных компьютерах