[/b/] [/d/] [/tu/] [/a/] [/ph/] [/wa/] [/cg/] [/t/] [/p/]
Собрал http://vimeo.com/28369397Возник вопрос оптимизации раскроя бревна.Есть какие-то программы под GPL или алгоритмы, которые можно было бы без особых выкрутасов реализовать под GPL для оптимизации раскроя круга заданного размера на квадраты заданных размеров?
>>76680Разве так сложно написать?
>>76680Никогда не интересовался данным вопросом.
>>76741Я понятия не имею какой алгоритм должен быть у заполнения круга прямоугольниками заданного сечения и где его искать.
>>76779Старый добрый перебор чем не устраивает? Бревна все равно не всегда бывают идеальной формы.
>>76780Неровностями можно пренебречь, потому что пила в любом случае пилит только по прямой.> переборНу давай распиши алгоритм.
>>76780Неровностями можно пренебречь, потому что пила в любом случае пилит только по прямой.
> перебор
Ну давай распиши алгоритм.
>>76781> Неровностями можно пренебречьКакой тогда смысл считать оптимальное занчение?> Ну давай распиши алгоритм.Что тут расписывать? Для всех возможных сдвигов сетки считаешь количество заполненых не мнеее чем на нужный процент ячеек, лучший результат запоминаешь. Чтобы меньше считать можешь предварительно уменьшить разрешение, затем при желании посчитать в большем.
>>76781
> Неровностями можно пренебречь
Какой тогда смысл считать оптимальное занчение?
> Ну давай распиши алгоритм.
Что тут расписывать? Для всех возможных сдвигов сетки считаешь количество заполненых не мнеее чем на нужный процент ячеек, лучший результат запоминаешь. Чтобы меньше считать можешь предварительно уменьшить разрешение, затем при желании посчитать в большем.
>>76782> cмыслДолго объяснять.> сетки> > прямоугольниками
>>76782
> cмысл
Долго объяснять.
> сетки> > прямоугольниками
>>76783Если тебе не лень менять шаг пилы для каждого прохода, то подобрать сдвиг только для одной оси, дальше просто перемещаешь маркер по другой оси и в момент заполнения вычитаешь результат из поверхности бревна. Потом при желании делаешь другой проход, но уже с развернутым на 90 градусов прямоугольником. В результате первого прохода получаешь что-то вроде пикрелетеда, на втором меняешь длинну с шириной местами и обрабатываешь то, что получилось после первого.
>>76784А для разных размеров прямоугольника и симметрично относительно центра?
>>76785> для разных размеров прямоугольникаВ одном бревне?> симметрично относительно центра?Но зачем? В таком случае у тебя будет получаться менее оптимальный результат. Впрочем ничего не мешает после кажого прохода выравнивать ряды блоков по центру.
>>76785
> для разных размеров прямоугольника
В одном бревне?
> симметрично относительно центра?
Но зачем? В таком случае у тебя будет получаться менее оптимальный результат. Впрочем ничего не мешает после кажого прохода выравнивать ряды блоков по центру.
>>76786> В одном бревне?Да.> Но зачем?В пиломатериале должно быть определённое направление волокон.
>>76786
> В одном бревне?
Да.
> Но зачем?
В пиломатериале должно быть определённое направление волокон.
>>76786> выравнивать ряды блоков по центруКак промежуточный вариант подходит, но если требуемый пиломатериал не одинаковый?
> выравнивать ряды блоков по центру
Как промежуточный вариант подходит, но если требуемый пиломатериал не одинаковый?
>>76787> Да.Добавь к перебору еще и тип доски, правда при большом их количестве ресурсов у тебя уйдет немеряно.> определённое направление волоконИ каким образом на него повлияет симметричность расположения досок?>>76788> если требуемый пиломатериал не одинаковыйАлгоритм применим к фигуре произвольной формы.
>>76787
> Да.
Добавь к перебору еще и тип доски, правда при большом их количестве ресурсов у тебя уйдет немеряно.
> определённое направление волокон
И каким образом на него повлияет симметричность расположения досок?>>76788
> если требуемый пиломатериал не одинаковый
Алгоритм применим к фигуре произвольной формы.
>>76789> Добавь к перебору еще и тип доскиКаким образом?> правда при большом их количестве ресурсов у тебя уйдет немеряноБоллмеру это расскажешь.> И каким образом на него повлияет симметричность расположения досок?На картинке разве не видно?> Алгоритм применим к фигуре произвольной формы.Но не к разным формам в рамках одного полена, расположенным симметрично относительно центра.
>>76789
> Добавь к перебору еще и тип доски
Каким образом?
> правда при большом их количестве ресурсов у тебя уйдет немеряно
Боллмеру это расскажешь.
> И каким образом на него повлияет симметричность расположения досок?
На картинке разве не видно?
> Алгоритм применим к фигуре произвольной формы.
Но не к разным формам в рамках одного полена, расположенным симметрично относительно центра.
>>76794> Каким образом?Меняя размеры.> На картинке разве не видно?Все волокна идут вдоль досок, вне зависимости от того, где они расположены. На картинке тоже.> Но не к разным формам в рамках одного полена, расположенным симметрично относительно центра.Забей на симметрию.
>>76794
> Каким образом?
Меняя размеры.
> На картинке разве не видно?
Все волокна идут вдоль досок, вне зависимости от того, где они расположены. На картинке тоже.
> Но не к разным формам в рамках одного полена, расположенным симметрично относительно центра.
Забей на симметрию.
>>76796> Меняя размерыНе понял в каком месте алгоритма надо менять тип доски?> Все волокна идут вдоль досокВ продольной или поперечной плоскости относительно плоскости доски.> Забей на симметриюТогда вместо досок половина пиломатериала будут дровами.
>>76796
> Меняя размеры
Не понял в каком месте алгоритма надо менять тип доски?
> Все волокна идут вдоль досок
В продольной или поперечной плоскости относительно плоскости доски.
> Забей на симметрию
Тогда вместо досок половина пиломатериала будут дровами.
>>76798> Не понял в каком месте алгоритма надо менять тип доски?Просто сделай все проходы для всех возможных комбинаций типов досок.> Тогда вместо досок половина пиломатериала будут дровами.Если для тебя это настолько критично, начинай отсчет от середины в обе стороны, добавив на нулевом шаге вариант "полдоски". Получится что-то вроде того, что на твоей картинке.
>>76798
> Не понял в каком месте алгоритма надо менять тип доски?
Просто сделай все проходы для всех возможных комбинаций типов досок.
> Тогда вместо досок половина пиломатериала будут дровами.
Если для тебя это настолько критично, начинай отсчет от середины в обе стороны, добавив на нулевом шаге вариант "полдоски". Получится что-то вроде того, что на твоей картинке.
>>76799> Просто сделай все проходы для всех возможных комбинаций типов досок.А как составлять комбинации?> Если для тебя это настолько критичноНу это вообще как бы критично при лесопилении. Не я это придумал.> начинай отсчет от середины в обе стороны, добавив на нулевом шаге вариант "полдоски"Пиши формальнее пожалуйста, я не понимаю как это должно быть реализовано в алгоритме.Картинка кстати не моя. Это с сайта каких-то пропиетарщиков для примера, чтобы не копипастить всякие tldr сюда.
>>76799
> Просто сделай все проходы для всех возможных комбинаций типов досок.
А как составлять комбинации?
> Если для тебя это настолько критично
Ну это вообще как бы критично при лесопилении. Не я это придумал.
> начинай отсчет от середины в обе стороны, добавив на нулевом шаге вариант "полдоски"
Пиши формальнее пожалуйста, я не понимаю как это должно быть реализовано в алгоритме.
Картинка кстати не моя. Это с сайта каких-то пропиетарщиков для примера, чтобы не копипастить всякие tldr сюда.
>>76800> А как составлять комбинации?Допустим у тебя есть два типа досок A и B, пытаешься заполнить ими бревно в таком порядке:AAAAAAABAABAAABB...BBBB> Пиши формальнее пожалуйста, я не понимаю как это должно быть реализовано в алгоритме.За точку отсчета в описаном выше алгоритме можно принять не левый край бревна а его середину, потом отразить результат по осям и посчитать количество полных досок. Чтобы был возможен вариант расположения доски прямо на оси, это нужно обсчиать отдельно, добавив вариант половины доски, лежащей на оси.
>>76800
> А как составлять комбинации?
Допустим у тебя есть два типа досок A и B, пытаешься заполнить ими бревно в таком порядке:AAAAAAABAABAAABB...BBBB
> Пиши формальнее пожалуйста, я не понимаю как это должно быть реализовано в алгоритме.
За точку отсчета в описаном выше алгоритме можно принять не левый край бревна а его середину, потом отразить результат по осям и посчитать количество полных досок. Чтобы был возможен вариант расположения доски прямо на оси, это нужно обсчиать отдельно, добавив вариант половины доски, лежащей на оси.
- wakaba 3.0.7 + futaba + futallaby -