Урок 2. Алгорритмизация.

Алгоритмизация - это поиск правил, по которым можно:
1) вычислять точки на линии или поверхности,
2) двигаться по кривой или поверхности с заданной скоростью,
3) вычислять минимальное или максимальное значение,
4) выбирать случайное число из заданного диапазона и т. д.

Алгоритм может быть задан: уравнением, условиями на мах/min, генератором случайных чисел, программой, макрокомандой.

Базовые макрокоманды
Язык системы Вектор (краткая подсказка)
Использование клавиатуры при работе в “Вектор”
Использование клавиатуры при редактировании текста в DOS

Упражнения

 n/n   Название упражнений и обращение к тексту МК   Рисунок 
1 Расчет и изображение точек на прямой  
1.1. В МК date.mac задать  точки р51 и р52 
1.2. ur2z1.mac Найти середину отрезка р51-р51, а затем  по формуле p=(1.-s)*p51+s*p52 (при 0. < s< 1. ) найти десять точек р1-р10 с шагом 0.1. В найденных точках построить окружности радиусом 3.0 
Рис.1
2 Расчет и изображение точек на прямой в цикле 
2.1. ur2z2d.mac МК задания данных для вычисления точек на прямой 
2.2. ur2z2i.mac исполнительная МК вычисления точек на прямой в цикле
Рис.2
3 Точки на прямой в зависимости от расстояния от начала 
3.1. ur2z3d.mac данные к расчету точек по формуле: p=p1+s*p99 
3.2. ur2z3i.mac расчет точек на прямой в зависимости от расстояния от начала
Рис.3
4 Создать МК  изображения кривых 
4.1. ur2z4d.mac данные  
4.2. ur2z4.mac  МК расчета точек окружности, кардиоиды и т.д. и их графики 
Самостоятельно: при изображении кривых вставьте расчет их длины (делается просто - считаем длины отрезков и их суммируем). 
Рис.4
5 Задать косую плоскость в виде сетки прямых и точек 
5.1. ur2z5d.mac  задание исходных данных 
5.2. ur2z5i.mac МК первого цикла изменения параметра s1 
5.3. ur2z5i2.mac МК внутреннего цикла расчета точек на косой плоскости 
Рис.5
6 Задание сферы в виде параллелей и точек на ней 
6.1. ur2z6d.mac  МК данных для построения сферы 
6.2  ur2z6i.mac МК внешнего цикла (как бы перебор параллелей) сферы 
6.3. ur2z6i2.mac  вторая рекурсия расчета точек на параллелях сферы 
Рис.6
7 Задание окружностей в прямоугольнике по методу случайных чисел предварительно сформировав МК tnn.mac. 
 Задание testnn.mac окружностей (центров) по методу случайных чисел
Рис.7
Упражнение 1. Расчет и изображение точек на прямой
date.mac
: p51=10.,5.,20. p52=80.,70.,60. $ заданы две точки в регистрах p51 и p52
otr: p101=p51 p102=p52  $ соединяем две точки через МК otr

ur2z1.mac  МК расчета точек на прямой по формуле: p=(1.-s)*p1+s*p2
date   $ данные в соответствующей МК
p25=p51+(p52-p51)/2.   $ расчет середины отрезка
okr: p100=p25 s100=10.  $ в середине отрезка построить окружность
s=0.1   $ переменный параметр s
p1=(1.-s)*p51 + s*p52 $ более универсальная формула расчета точек
s=0.2
p2=(1.-s)*p51+s*p52 $ вычисление второй точки при s=0.1 и т.д.
okr:p100=p1 s100=3.0    $ построение окружностей в каждой точке
okr: p100=p2 $ радиус второй раз можно не задавать (значение 3.0 уже там).


Упражнение 2. Расчет и изображение точек на прямой в цикле

ur2z2d.mac МК задания данных для вычисления точек на прямой
:p1=20.,15. p2=120.,130. $ сами точки
otr: p101=p1 p102=p2   $ строим отрезок
ur2z2i: s=0.           $ обращения к МК построения точек на прямой

ur2z2i.mac исполнительная МК вычисления точек на прямой в цикле
s > 1.0 ? exit      $ условие выхода из МК
p=(1.-s)*p1+s*p2 $ вычисение точек
okr: p100=p s100=3.0 $ в точке строим окружность
ur2z2i: s=s+0.05 $ рекурсия и увеличение s  на шаг 0.05


Упражнение 3. Точки на прямой в зависимости от расстояния от начала

ur2z3d.mac данные к расчету точек по формуле: p=p1+s*p99
:p1=20.,15. p2=220.,130.
otr: p101=p1 p102=p2
s1=$sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)) $ расчет длины отрезка
p99=(p2-p1)/s1 $ единичный вектор
ur2z3i: s=0. $    обращения к циклу расчетов

ur2z3i.mac расчет точек на прямой в зависимости от расстояния от начала
s > s1 ? exit    $ условие выхода
p=p1+s*p99  $ расчет точек
okr: p100=p s100=3.0 $ точки изображаем окружностями
ur2z3i: s=s+15.0  $ рекурсия с шагом 15.0

Упражнение 4. Создать МК (задания исходных данных и цикла) изображения кри-вых (в частности, окружности), задаваемых явно в параметрическом виде в декарто-вых координат.
Схема решение:
1)  задать исходные данные: центр, радиус, другие параметры
2)  организовать цикл: условия выхода, рекурсивное обращение МК самой на себя, шаг.
3)  в цикле организовать расчет точек по той или иной формуле
4)  используя МК построения отрезка с условием перезадания конца в начало, для каж-дой кривой обеспечить график их построения.
5)  в последней строчке МК обеспечить рекурсивное обращение МК к самой себе с из-меняющимся углом s (s=s+шаг) в радианах от нуля до 6.28.

ur2z4d.mac  МК задания начальных точек построения графиков окружности, кардио-иды и т.д.
: p2=100.,100. p3=p2  p4=p2
ur2z4: s=0.    $  обращение к МК построения окружности, кардиоиды и т.д.

ur2z4.mac  МК расчета точек окружности, кардиоиды и т.д. и их графики
s > 2.*3.149 ? exit  $ условие выхода из МК
$ Задание окружности
x = 100.0 + 30.0*cos(s)  $ абсцисса точек на окружности
y = 100.0 + 30.0*$sin(s) $ ордината
otr: p101=p2 p102=p $ соединяем текущую точку с предыдущей
p2=p102   $ помещаем конец текущего отрезка в начало следующего
Кардиоида
x = 100.0 + 50.0* cos(s)*(1.+cos(s))
y = 100.0 + 50.0* $sin(s)*(1.+cos(s))
otr: p101=p3 p102=p
p3=p102
$ Эпициклоида вид кривой зависит от s1/s2.
$ Если s1/s2 = 1 - кардиоида и т.д. см. справочник Бронштейна м Семендяева
$ : s1=5.0 s2=5.0   - кардиоида
: s1=5.0 s2=15.0        $ число s1 в s2 дает число выступов
x=100.0 +(s1+s2)*cos(s)-s1*cos((s1+s2)*s/s1)
y=100.0+ (s1+s2)*$sin(s)-s1*$sin((s1+s2)*s/s1)
otr: p101=p4 p102=p
p4=p102
ur2z4: s=s+0.1
Самостоятельно: при изображении кривых вставьте расчет их длины (делается просто - считаем длины отрезков и их суммируем).

Упражнение 5. Задать косую плоскость в виде сетки прямых и точек

ur2z5d.mac  задание исходных данных
print$on  $ включить печать
: p1=30.,120.,50. p2=130., 110.,60.
: p3= 40.,10.,10.  p4=120.,20.,0.
ur2z5i: s1=0.  $ обращение к циклу

ur2z5i.mac МК первого цикла изменения параметра s1
s1 > 1.0 ? exit    $ условие выхода
p13 = (1.-s1)*p1+s1*p3 $ вычисление точек на левой стороне
p24 = (1.-s1)*p2+s1*p4 $  вычисление точек на правой стороне
otr: p101=p13 p102=p24 $ соединяем p13 с p24  отрезками прямых
ur2z5i2: s2=0. $ идем на цикл вычисления точек на каждой прямой
ur2z5i: s1=s1+0.1  $ рекурсия (вызов МК самой себя)

ur2z5i2.mac МК внутреннего цикла расчета точек на косой плоскости
s2 > 1.0001 ? exit   $ условие выхода
p=(1.-s2)*p13 + s2*p24 $ расчет точек на прямой у косой плоскости
okr: p100=p s100=3.0 $ каждую точку отображаем окружностью
ur2z5i2: s2=s2+0.1 $ рекурсивный вызов МК самой себя


Упражнение 6. Задание сферы в виде параллелей и точек на ней

ur2z6d.mac  МК данных для построения сферы
print$on $ включить печать
: p1=50.,40.,40. s11=30. $ центр и радиус сферы
ur2z6i: s1=0. s2=0. p3=p1 $ обращение к вычислению точек на сфере

ur2z6i.mac МК внешнего цикла (как бы перебор параллелей) сферы
s1 > 6.29 ? exit    $ условие выхода на 360 градусов
ur2z6i2: s2=0. p3=p1 $ к циклу расчета точек на параллелях
ur2z6i: s1=s1+0.5    $  рекурсия с шагом 0.5 радиан

ur2z6i2.mac  вторая рекурсия расчета точек на параллелях сферы
s2 > 6.29 ? exit $  условие выхода
x=x1+s11*cos(s1)*$sin(s2) $ расчет абсциссы точек сферы
y=y1+s11*$sin(s1)*$sin(s2) $ ординаты
z=z1+s11*cos(s2) $ аппликаты
okr : p100=p s100=2.0 $  расчетные точки отображаем окружностями
otr: p101=p3 p102=p  $ соединяем текущую току с предыдущей - строим параллели
p3=p102   $ конец текущего отрезка помещаем в начало следующего
ur2z6i2: s2=s2+0.5 $ рекурсия с шагом 0.5 радиана


Упражнение 7. Задание окружностей в прямоугольнике по методу случайных чисел предварительно сформировав МК tnn.mac.

testnn.mac
n1 > 50 ? exit      $ условие выхода
tnn: n101=50  n102=150 $- выбор числа в диапазоне 50-150
x=n191 $ присваиваем число абсциссе центра окружности
tnn: n101=50 n102=150 $- выбор случайного числа в диапазоне 50-150
y=n191 $ присваиваем число ординате центра окружности
okr: р100=р  s100=5.0 $- построение окружности с центром в р100
testnn: n1=n1+1   $ - идем на рекурсивный цикл



tnn.mac МК вычисления случайного числа  (текст МК)
_Случайное_число_(в_n191)_от_ n101  n102

Обращение:
tnn: n101=<первое целое число>  n102 = <второе целое число>
Выходные данные:  в n191 - случайное число



 

Базовые МК

<ck.mac> МК визуализации осей на комплексном чертеже

_Система_коодинат_экрана
 _Начало_СК_:_x0=    40.0      0
 _НСК_на_проекции_YZ_=_(   145.0    95.0     0.0
 _ВИзуализация_Осей_СК__по_ст._проекциям_ 0
 _ВИзуализация_Осей_СК__по_ст._проекциям_ 2
 _ВИзуализация_Осей_СК__по_ст._проекциям_ 3
 _ВИзуализация_Осей_СК__по_ст._проекциям_ 5


<otr.mac>  базовая МК построения отрезка прямой

_Линии_общего_назначения
 _Отрезок_прямой____________________________
 _Начальная_точка___=_( x101    y101    z101
 _Кoнeчная_точка____=_( x102    y102    z102
 _Визуализация__по_стандартным_проекциям_ n

<okr.mac>  базовая МК построения окружности

_Линии_общего_назначения
 _Окружность
 _Цeнтр_=_( x100    y100    z100
 _Горизонт._п/ось__= s100
 _Вертик._П/ось____= s100
 _Визуализация_по_стандартным_проекциям_ n

Примечание. Зная номера строк (команд) меню системы можно МК формировать через номера их строк с заданием, если в команде этого требуется, соответст-вующих параметров. Например.

<otr.mac>  базовая МК построения отрезка прямой
1                                                (_Линии_общего_назначения)
1                                (_Отрезок_прямой____________________________)
  1   х101 y101 z101      (_Начальная_точка___=_( x101    y101    z101 )
 2   х102 y102 z102      (_Кoнeчная_точка____=_( x102    y102    z102 )
 _ 4 n                          ( Визуализация__по_стандартным_проекциям_ n

<okr.mac>  базовая МК построения окружности

1
 1
  1  x100 y100 z100
 2  s100
  4 n

<ck.mac> МК визуализации осей на комплексном чертеже

23
1  40.0      0
3 145.0    95.0     0.0
4  0
4  2
4  3
4  5


 

Язык системы "Вектор" /кратко/

Переменные хранятся в:
n-n199 - целые числа;
s-s199 - вещественные;
p(x,y,z) - p199 (х-x199, y- y199, z - z199) - типа “точка” (вектора).
Операции: + сложение; - вычитание; * умножение; / деление, = присвоение

Операторы:  ? - условный "если" /ставится после условия /; exit - выход.

Операции: <> - равенство;  > - больше; < - меньше; &  - и; ! - или; ^ - не.

Функции: sin - синус; cos - косинус; tan - тангенс, sqrt - кв. корень.

Директивы:  print$on/off - включить/выключить печать в mgd.log.

Вызов МК: имя МК: список присвоений. Если МК начинается с n, s, p, x, y, z, то при ее вызове перед именем МК ставится (без пробела) символ $.

Комментарии ставится после символа $ с пробелом.



 

Использование клавиатуры при работе в “Вектор”:

enter - ввод команд -строк,

alt+c - вызов командной строки,

alt+s - очистка экрана от рисунков,
alt+M - удаление/восстановление меню,

alt+j - включить/выключить джойстик,

Esc - выход из подсостояний и из системы (подтвердить “y”).


Использование клавиатуры при редактировании текста в DOS

enter - вставить строку (если курсор стоит вначале строки),

enter - переместить все, что за курсором, на новую строку,

Delete - операция, обратная предыдущей, если курсор в конце строки, Delete -  удаление  символа, стоящего после курсора,

Backspase -  удаление впередистоящего символа,

Ctrl+y  удаление непустой строки,

Delete - удаление пустой строки,