Re[29]: Наследование квадратов и прямоугольников
От: Erop Россия  
Дата: 01.04.13 16:46
Оценка: 81 (2)
Здравствуйте, Serginio1, Вы писали:

E>>Ты перебираешь маленькие углы поворотов? Зачем? Можно же сразу вычислить на какой угол максимально можно повернуть фигуру в эту или в другую сторону?

S> Для многоугольников какой угол будет оптимальным? Он может зависеть от расположения ближайшей фигуры.
Ну, например, так, что бы следующая размещаемая фигура во что-то упёрлась...

S>Для прямоугольникв ближайшая сторона под прямым углом.

S>Для примера посмотри раскрои для портных, где криволинейки полно. И там как раз нужно крутить вертеть.

У портных есть тонкость, обычно ориентация всех деталей относительно утка и основы строго задана...

S>Поэтому мне понятна проблема с раскроем. Это более сложная задача, чем задача о рюкзаке.

И что с того? Я вот, в основном, наработе укладываю такие рбкзаки, но ен в одно- или дву-мерном пространстве (задача раскроя), а в пространстве с сотнями измерений.
Ты говоришь вообще не о том. Ты всё время упираешь на то, что что-то там легче повернуть, пересчитать, упростить какую-то формулу и т. д.
Но это всё оптимизация раз в 10, и то если повезёт. То, что ты пока что предлагал, IMHO, вообще писсимизация, а не оптимизация.

А в таких задачах нужно оптимизировать на несколько порядков, хороше, если не на много порядков, а только на три-четыре.
Скажем в предыдущей задаче мне удалось оптимизировать перебор примерно в 100 000 раз...
Понимаешь, надо копать что и как там в этом пространстве состояний этого укладчика можно выциганить, а не какой-то хренью с ООП рюшечками страдать

S> Нет есть реальное наследование. Прямоугольник это фигура. Все её свойства никуда не делись. Но добавились часные случаи, которыми проще оперировать.

Ох, религия, такая вещь, упёртая. Тут ничего не поделаешь.
У нас, как бы стоит задача. Грубо говоря она называется оптимизация перебора, идти надо, скорее всего, через поиски каких-то частей решения, и какие-то движения в пространстве решений.
А ты всё время рассказываешь, что у прямоугольника есть какие-то там хитрые свойства.
Насколько я тебя понял, основное свойство прямоугольника -- это то, что его пожно поставит на край листа только одной из двух сторон. Но это же примитивно делается и без прямоугольника. Просто смотрим на фигуру, понимаем, что она хорошо вписываетя в прямоугольник и генерим для неё всего ДВА варианта ориентации при размещении. Потом, когда кладём её, то двигаем максимально вниз и влево, например. ФСЁ.
Никакого ООП, и вообще никакого много чего ещё.
Мало того, можно какие-то куски дерева перебора, на которых удалось получить компактное заполнение по ширене листа, например, запоминать и брать сразу кусками. Этакий кэш поддеревьев сделать. И т. д.

S>Если угол может быть всего в двух вариациях как 0 и 90 то еще проще с ним работать.

Тогда и с оринигальной фигурой работать так же просто...
Мало того, программа получится сильно короче. Так как особо простую и выразительную логику работы с прямоугольниками вообще ен надо будет программировать. Полное отсутсвие кода проще же, чем сколь угодно простой код?..
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.