Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача "машинные узоры"
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
arsen86
Интерессная задача о машинных узорах, нашел в книге, а с реализацией на Паскале возникли проблемы, если у кого-то есть интерес к этой задаче поделитесь своими соображениями.
Собственно условие:
"Создать систему, которая реализует разнообразные машинные узоры, которые используются в качестве заставок на базе элементов построенных таким образом:
1) опрос типа многоугольника у пользователя : треугольник, квадрат, ромб, пятиугольник и т.д.
2) опрос размера стороны: p
3) опрос коэфициента 0<A<1, с помощью которого стороны фигуры будут разделяться точкой: p*A
4) Вычислить точку каждой из сторон многоугольника и соединить полученные точки отрезками
5) Повторить рекурсивно п.4 столько раз, сколько разрешает экран."

Книга в которой я это "надыбал" Ю.В. Котов "Как рисует машина". Наука, 1988 г.

Как видно задача комплексная, буду рад увидеть любые предложения и подсказки по ее решению и реализации.
Заранее спасибо.
Altair
Цитата
3) опрос коэфициента 0<A<1, с помощью которого стороны фигуры будут разделяться точкой: p*A

неясно что имеется ввиду...

и еще... все фигуры, выведенные на экран одинаковы?
Должны ли они быть расположенны вплотную друг к другу?
Это те вопросы, на которые надо ответить перед началом процесса алгоритмизации...
volvo
arsen86

Если я правильно понял, то должно получиться что-то типа вот этого ?
Altair
Хм, кстати на рисунке volvo, наблюдается "обман зрения"...
если смотреть в центр, то кажется, что внешние квадрат имеет не паралельные грани относительно окна браузера...
smile.gif
arsen86
Относительно п.3
так он описан в задачи, я понимаю, что координаты точки определяются концом отрезка длинной p*A, который нужно откладывать от определенного начала стороны, начало наверное можно выбрать произвольно

Фигуры, как я понял, предлагаются на выбор, то есть одновременно на экране отображается только 1 фигура, с определенной длинной стороны, длинна, в свою очередь, должна задаватся отдельно для каждой фигуры.

volvo
ты правильно понял, во всяком случае я понял тоже самое :)
Digitalator
Я тоже все так понял smile.gif тока
Цитата
Повторить рекурсивно п.4 столько раз, сколько разрешает экран."

Т.е. надо много выводить фигурок одна в одной, пока не будет вырождение в точку, а такое обязательно когда-нибудь наступит, т.к. площадь каждой следующей фигуры меньше предыдущей.

Только надо писать без рекурсии (какая противная вещь) т.к. при A скажем 0.9999 будет глюк smile.gif, а так ничего сложного - координаты по нач. точек легко вычислются, при некотором знании тригонометрии. Далее можно легко находить координаты точек каждой следующей фигурки, для этого нам потребуется знание уравнения прямой... считать разности координат, пока они не станут меньше 0.5 (вырождение) тоже не составляет проблем.....

Может найдется герой, который напишет для этого всего програмку smile.gif

Программа написана и добавлена в FAQ: Занимательная графика
Digitalator
volvo - Вы ГЕРОЙ!

написать такую програмку, пусть несложную, но кода-то не десять строк smile.gif.. да еще и за просто так, да еще и незнакомоу челу - это Геройство smile.gif Мне его всегда нехватало - идею решения подсказать всегда могу, а вот писать полностью прогу... :no:
arsen86
Я мягко говоря в шоке !
Спасибо ОГРОМНОЕ.
Даже не ожидал на такое чудо, только спросил, а уже работающая программа, вот только одна проблемма - я с обьектами почти не работал.

to volvo
а как ты ее собираешся расширять ?

еще раз ОГРОМНОЕ СПАСИБО.
volvo
Цитата
а как ты ее собираешся расширять ?
:o

Можно попробовать одновременно работать с несколькими типами фигур, добавить интерфейс (кстати, граф. интерфейс я делал лет 5 назад, нужно его только добавить...), перейти в 3D наконец... rolleyes.gif Посмотрим.

Цитата
я с обьектами почти не работал


Когда-то же нужно начинать !!! ;)
Кстати, очень мощное средство.
arsen86
думаю, что в 3D немного потеряется наглядность и красота

а вот интерфейс не помешает, но это дело техники и вкуса

а за чем тогда обьекты ?
volvo
arsen86

Попробуй сделать это все без ООП... И я посмотрю, у кого получится проще и чья программа будет более расширяемой. ;)
suriv
Я думаю volvo надо повысить рейтинг за активную помощь!!! :yes:
arsen86
to volvo

я не спорю, что твоя программа будет более расширяемая, но эта программа, как бы это сказать.... "без будущего", наврядли кто-то будет ее расширять, дополнять, она -- просто интересна в своей наглядности и "бессмыслености" smile.gif
volvo
Это ты напрасно ... А для обучающих целей (например, для форума... да и братишка у меня программированием занитересовался... )?

Да и просто для того, чтобы создать законченный проект ...
suriv
мдаа <_<
arsen86
Ну что ж, сколько программистов, столько и программ.

Может быть ты и прав :yes:

В любом случае спасибо, ты мне очень помог :p4:
Altair
volvo действительно герой!
Цитата
Мне его всегда нехватало - идею решения подсказать всегда могу, а вот писать полностью прогу... 


точно! :D
suriv
Цитата
Мне его всегда нехватало - идею решения подсказать всегда могу, а вот писать полностью прогу...

Я думаю volvo надо повысить рейтинг за активную помощь!!! :yes:
уже повысил :yes:
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.