2 Геометрические задачи
у кого-нибудь есть какие нибудь мысли, а можно
и код на Си или Паскале :)
I.
прямоугольная область:
struct sZone { int x, y, w, h; };
имеется инициализированный массив этих структур,
где-то в другом месте программы, скажем такой:
struct sZone A[24];
нужно написать функцию вида:
struct sZone * integra ( struct sZone * A );
которая будет объединять все взаимнопересекающиеся зоны
в одну прямоугольную зону (прямоугольную), а непересекающиеся
оставлять в покое.
возвращать она должна указатель на вектор, содержащий
итоговые непересекающие зоны - результат вышеуказанной деятельности.
II.
написать функцию вида:
struct sZone * cross ( struct sZone * A, struct sZone * B);
которая будет возвращать указатель на зону
пересечения A и B, или ноль, если зоны не
пересекаются друг с дружкой.
Сам ща думаю, но какие то гнилые решения получаются,
а надо максимально быстро. Вроде бы легко, но чето торможу :)
Но если кому-то неймётся, то любопытно было б увидеть более хитроумный вариант, если он есть
Но если кому-то неймётся, то любопытно было б увидеть более хитроумный вариант, если он есть[/QUOTE]
Если не секрет, с какой целью тебе это нужно?
Спрашиваю потому, что я решал подобную задачу, когда писал движок для 2-мерных игр типа стратегий, с целью оптимизации перерисовки экрана.
Правда первая (I) задача сюда не относится, а вторую ща использую вовсю у себя в проге.
Говоря не по теме, не хватает еще одной функции для полного счастья, но уже сейчас все побыстрее работает.