Решение:
https://codepen.io/Ni55aN/pen/aYyPoB
Алгоритм:
1. Триангулировать Shape (сразу получаем ShapeGeometry)
2. Получить площадь фигуры (из полученной геометрии)
3. Задать начальную координату y = 0.5, относительно которой по Y будет поделена фигура
4. Отсекаем верхнюю часть геометрии
5. Получаем площадь оставшейся нижней геометрии
6. Рассчитываем погрешность delta = 0.5-area/originalArea, где area - площадь нижней части, originalArea - площадь всей фигуры. Таким образом получаем коэффициент, по которому нужно сместить координату, чтобы уравнять площади нижней и верхней частей
7. Повторяем с пункта 4 с новым y = y + delta * h до тех пор, пока разница в площади половин фигур будет допустимой, где h - высота фигуры