Найти в Дзене

Домики и елочки в Кумире

Сначала, при виде такого изображения может стать страшно. Особенно, если в школе учили только векторами баловаться или того хуже только в точки смещаться. Но на самом деле все значительно проще. Смотрим внимательно, что нужно для сотворения этого шедевра? Фактически только угол и квадрат. Прекрасно. Значит нам нужно написать функции для отрисовки квадрата и угла. Слово "функция" только звучит страшно. На самом деле очень удобная конструкция. Один раз написал и потом вызывай сколько хочешь раз. Давайте подробно разберемся с квадратом. алг квадрат(цел х,у,а) - тут алг это просто синтаксис языка, я так подозреваю сокращение от слова "алгоритм", квадрат - это наше название функции, назвать можно как угодно, главное чтоб понятно было что тут делается. Далее в скобках идут аргументы. Для чего они? А чтоб функция была более гибкой. Вот конкретно тут мы используем х и у - это для того, чтоб мы могли поместить дом в любые координаты, которые сами зададим. Так же используем а в качестве длины ст

Сначала, при виде такого изображения может стать страшно. Особенно, если в школе учили только векторами баловаться или того хуже только в точки смещаться.

Но на самом деле все значительно проще.

Смотрим внимательно, что нужно для сотворения этого шедевра? Фактически только угол и квадрат.

Прекрасно. Значит нам нужно написать функции для отрисовки квадрата и угла.

Слово "функция" только звучит страшно. На самом деле очень удобная конструкция. Один раз написал и потом вызывай сколько хочешь раз.

Давайте подробно разберемся с квадратом.

-2

алг квадрат(цел х,у,а) - тут алг это просто синтаксис языка, я так подозреваю сокращение от слова "алгоритм", квадрат - это наше название функции, назвать можно как угодно, главное чтоб понятно было что тут делается. Далее в скобках идут аргументы. Для чего они? А чтоб функция была более гибкой. Вот конкретно тут мы используем х и у - это для того, чтоб мы могли поместить дом в любые координаты, которые сами зададим. Так же используем а в качестве длины стороны квадрата. Для чего? А вот даже на этом рисунке у нас есть квадрат со стороной 4, а есть со стороной 2 и чтоб не писать для каждого отдельную функцию, просто запасаемся аргументами. цел - опять стандартное слово, означающее, что использовать будем целые числа.

нач - начало

сместиться в точку(х,у) - переходим в начальную точку с которой начнем рисовать

опустить перо - тут все понятно должно быть

сместиться на вектор(0,а) - в векторе мы не соединяем 2 точки с разными координатами, а указываем как нам сместиться относительно той точки в которой уже находимся. Т.е. вот тут мы решили нарисовать линию вверх, поэтому по х мы не смещаемся никак, а по у становимся больше на сторону квадрата.

сместиться на вектор(а,0)

сместиться на вектор(0,-а)

сместиться на вектор(-а,0)

поднять перо

кон

Все, считайте стены и окно готовы. Осталась только крыша.

-3

Тут все еще проще - 3 точки и 2 линии. Для начала нам нужно будет установить перо в первую точку. Потом вектором сместиться по х на 2, а по у на 1. Из второй точки мы опять по х смещаемся на 2, а по у на -1, потому что скат теперь идет вниз.

Но только для универсальности мы будем использовать не 2 и 1, а дх и ду.

алг угол(цел х,у,дх,ду)

нач

сместиться в точку(х,у)

опустить перо

сместиться на вектор(дх,ду)

сместиться на вектор(дх,-ду)

поднять перо

кон

Можно собирать дом :)

Для дома нам нужна начальная точка для возведения коробки здания. Теперь точку крепления крыши мы можем вычислить, по х она точно такая же, а по у на а (размер квадрата) больше, чем у квадрата.

А окно впихнем как есть. Оно по размеру 2, а х и у у него на 1 больше, чем у коробки.

алг дом(цел х,у,а,дх,ду)

нач

квадрат(х,у,а) - стены (коробка)

угол(х,у+а,дх,ду) - крыша

квадрат(х+1,у+1,2) - окно

кон

Осталась елка.

Сейчас вы поймете прекрасную вещ. Крыша дома вполне сгодится для веток елки. Это тоже угол, при том что дх и ду мы устанавливаем сами, поэтому вполне можем управлять размерами данной конфигурации.

алг ёлка(цел х,у)

нач

цел у1 - позже будет понятно зачем эта переменная

сместиться в точку(х,у) - отсюда будет расти елка

опустить перо

сместиться на вектор(0,5) - это ствол длинной в 5 делений

поднять перо

у1:=у+2

нц 3 раз - это конструкция называется цикл, выполнять его будем 3 раза, потому что веток 3

угол(х-1,у1,1,1) - до боли знакомый угол

у1:=у1+1 - настал момент пояснить за у1. дело в том, что первая ветка на 2 деления выше корня дерева, а последующие ветки на 1 выше предыдущей. Поэтому чтоб контролировать эту координату, нам необходимо ввести у1

кц

поднять перо

кон

Итог этого всего

-4