Разделение выпуклого многоугольника на равные части



Дан выпуклый многоугольник и число k.
Необходимо разделить наш многоугольник на k равных частей.

    Будем "отламывать" искомые многоугольники от исходного по одиночки. Сначала, нам надо разделить многоугольник в отношении 1:(k-1). Потом 2:(k-2) и так далее. У всех найденных многоугольников будет общая вершина - первая вершина в исходном многоугольнике.

Асимптотика O(n).

P.S. Ниже приведена реализация алгоритма с асимптотикой O(n2).


Листинг C++

void npart_convex (vector < point > v, int k, vector < point > &s)
{
    int i;
    for (i = 1; i < k; ++ i)
        s.push_back (part_convex (v, i, k - i));
}


14:50
22.07.2009


По всем вопросам обращаться: rumterg@gmail.com