Хаус алгоритъм в програмата idol. Практическа работа "Изпълнител чертожник. Помощни алгоритми". Помощни алгоритми с аргументи

Практическа работа„Изпълнител чертожник. Използване на помощни алгоритми с аргументи"

Задача А. Помощният алгоритъм, от който се нуждаем (който чертае квадрат с определена дължина), може да бъде записан по следния начин:

алгквадрат( arg нещоно)
рано
. спуснете писалката
. изместване по вектор(0,а)
. изместване по вектор(a,0)
. изместване по вектор(0,-a)
. изместване по вектор(-a,0)
. вдигнете писалката
кон

Упражнение 1: Създайте крива от тези точки

Това ще направи нашия алгоритъм по-гъвкав и елегантен.

Щракнете с десния бутон върху него, изберете? След като имате няколко точки в списъка, проверете втората в списъка и редактирайте нейните координати. Правим същото и с други моменти. Така създадохме параметрични точки. Пускаме го върху платното и го свързваме с точки.

Редът, в който сте ги въвели по-рано, се отразява на реда, в който са прикачени. На моето изображение можете да видите, че кривата е затворена крива, така че какво е щракване с десния бутон върху параметъра? Сега можете да експериментирате с опциите от основния функционален панел, например да изберете точка? и щракнете върху „Деактивиране на визуализацията“.

Запис " алгквадрат( arg нещо a)" означава, че алгоритъмът "квадрат" има един аргумент (arg) "a", който може да бъде произволно реално (реално) число. За да извикате този алгоритъм, трябва да напишете, например, "квадрат (2)" - получаваме квадрат със страна 2 или "квадрат (3)" - получаваме квадрат със страна 3 и т.н. Някаква конкретна стойност "a" ще получи само докато програмата работи по време на съответния допълнителен алгоритъм. И навсякъде вместо "а" това число ще бъде заменено от компютъра.

Упражнение 2: Въведение в списъците с данни

При сложни обекти, 90% от времето, необходимо за сортиране? Нека изброим данните, така че крайният резултат да е това, което очаквахме, като оптимизираме алгоритъма, така че да консумира възможно най-малко мощност на процесора. Със стотици и дори хиляди обекти на място, ние трябва да контролираме това, което Grasspopper вижда.

Същото правим и с втория компонент, като обозначаваме пет точки на втория ред. Поставяме ли компонента Canvas на Grasshopper?; тогава свързваме входа? с първото издание? и вход? с втория изход? Така получихме пет реда, но две от тези линии са свързани в последната точка на първия ред.

  • Поставяме два компонента върху платното.
  • Да не играя?
В допълнение към? Препратка? Има и други опции.

Програмата за рисуване на тази картина може да бъде така:

използвайте чекмедже
алгквадратчета
рано
. преминете към точка(1,1)
. квадрат (2)
. преминете към точка(4,1)
. квадрат (3)
. преминете към точка(8,1)
. квадрат (4)
. преминете към точка(13,1)
. квадрат (5)
. преминете към точка(0,0)
кон
алгквадрат( arg нещоно)
рано
. спуснете писалката
. изместване по вектор(0,а)
. изместване по вектор(a,0)
. изместване по вектор(0,-a)
. изместване по вектор(-a,0)
. вдигнете писалката
кон

Задача Б. Нека научим чертожника на нови команди. Нека една от командите се нарича " ред(arg th x1,y1,x2,y2)» – за начертаване на линия от точка (x1,y1) до точка (x2,y2).

алглиния ( arg нещо x1, y1, x2, y2)
рано
. преминете към точка(x1,y1)
. спуснете писалката
. преминете към точка(x2,y2)
. вдигнете писалката
кон

Задача Б. Нека втората команда се нарича " правоъгълник (arg th x1,y1,x2,y2)', за да нарисувате правоъгълник. Точката (x1,y1) е една точка от AC диагонала на правоъгълника, точката (x2,y2) е противоположната. Преди да напишете алгоритъма, трябва да разберете какви са координатите на другите две точки.

Помощният алгоритъм може да изглежда така:

алгправоъгълник( arg нещо x1, y1, x2, y2)
рано
. преминете към точка(x1,y1)
. спуснете писалката
. преминете към точка(x2,y1)
. преминете към точка(x2,y2)
. преминете към точка(x1,y2)
. преминете към точка(x1,y1)
. вдигнете писалката
кон

Задача G. Сега с помощта на тези команди ще нарисуваме къща:


използвайте чекмедже
алгкъща
рано
. правоъгълник (2,1,8,5)
. правоъгълник (3,2,5,4)
. правоъгълник (6,1,7,4)
. ред (1,4,5,8)
. ред (5,8,9,4)
кон
алглиния ( arg нещо x1, y1, x2, y2)
рано
. преминете към точка(x1,y1)
. спуснете писалката
. преминете към точка(x2,y2)
. вдигнете писалката
кон
алгправоъгълник( arg нещо x1, y1, x2, y2)
рано
. преминете към точка(x1,y1)
. спуснете писалката
. преминете към точка(x2,y1)
. преминете към точка(x2,y2)
. преминете към точка(x1,y2)
. преминете към точка(x1,y1)
. вдигнете писалката
кон

Забележка: разбира се, заедно с тези команди, можем да използваме стандартните команди на чертожника (преместване в точка, преместване на вектор ...).

Задача D. Начертайте сами какво ще нарисува чекмеджето, като изпълните алгоритъма:

използвайте чекмедже
алгспирала
рано
. преминете към точка(3,3)
. спуснете писалката
. намотка(1); намотка(3); намотка(5); намотка(7); намотка (9)
. вдигнете писалката
кон
алгнамотка( arg нещоно)
рано
. изместване по вектор(а, 0)
. изместване по вектор(0, -a)
. изместване по вектор(-a-1.0)
. изместване по вектор(0, а+1)
кон.