Слайд 2
Справка по фортрану
Переменные, имена которых начинаются с букв
I,J,K,L,N,M, – имеют тип INTEGER*4; все остальные – тип
REAL*4.
Строковая константа занимает в памяти ровно столько байт, сколько символов указано в ее определении.
Элементы двумерного массива располагаются в линейной памяти компьютера по столбцам.
Передача аргументов: в подпрограмму передается адрес фактического параметра. Формальный и соответствующий ему фактический параметры должны быть одного типа.
Передача фактических параметров производится через стек, начиная с последнего. Стек от параметров освобождает вызываемая программа. Параметр – строка текста – передается в виде структуры: первое поле – адрес строки, второе поле – ее длина.
Слайд 3
Основные понятия
Графическая система это совокупность алгоритмов обеспечивающих для
заданного описания объекта получение его образа на видовой поверхности.
Математические
координаты – координаты, используемые для описания модели объекта (метры, паскали, секунды и т.п.).
Физические координаты – координаты используемые устройством отображения образа объекта (пиксели, миллиметры и т.д.).
Слайд 4
SETBGR(N) и SETPEN(N)
Установка цвета фона и цвета пера.
Цвет фона должен устанавливается до открытия страницы.
N -
номер цвета:
0 – черный 8 – серый
1 – синий 9 - ярко синий
2 – зеленый 10 - ярко зеленый
3 – голубой 11 - ярко голубой
4 – красный 12 - ярко красный
5 – фиолетовый 13 - ярко фиолетовый
6 – коричневый 14 – желтый
7 – белый 15 - ярко белый
Слайд 5
Страница
прямоугольное поле на бумаге или экране дисплея, в
пределах которого должны размещаться графические объекты. Создание страницы –
это выбор её размеров, связанной с ней системы координат и единицы измерения (CMS, MMS, INCHES).
Создается подпрограммой
PAGE(XL,YL,Name,N,J)
XL,YL – размеры страницы в выбранных единицах измерения
Name – название страницы
N – количество символов в названии
J = 1 – очерчивать = 0 – не очерчивать границу
Закрывается программой ENDPG(0)
Слайд 6
REGION(X,Y,XL,YL,NAME,N,J)
позволяет определить на заданной странице прямоугольную область для
построения образа объекта.
X,Y координаты левого нижнего угла области
относительно левого нижнего угла страницы);
XL,YL размеры области вдоль осей X и Y;
NAME название области;
N количество литер в названии;
J = 0 - границы не очерчиваются, J = 1 - границы очерчиваются.
Слайд 7
LIMITS(XMIN,XMAX,YMIN,YMAX)
предназначена для задания пределов изменения функции и ее
аргумента.
XMIN математическое значение координаты X, соответствующее левой границе области;
XMAX
математическое значение координаты X, соответствующее правой границе области;
YMIN математическое значение координаты Y, соответствующее нижней границе области;
YMAX математическое значение координаты Y, соответствующее верхней границе области.
Слайд 8
MINMAX(A,N,AMN,AMX)
позволяет определить минимальное и максимальное значения в массиве
чисел.
A массив чисел длины N,
AMN минимальное значение,
AMX максимальное значение.
Слайд 9
LINEO(X,Y,N)
позволяет начертить в заданной области ломаную, связывающую N
точек.
B массивах X и Y передаются соответственно значения
абсцисс и ординат точек, определяющих функцию
N указывает количество элементов в этих массивах
Слайд 10
LINEMO(X,Y,N,NM,JS)
позволяет начертить в заданной области линию, связывающую N
точек и пометить заданные точки маркерами или пометить заданные
точки маркерами, не вычерчивая кривой.
X,Y массивы абсцисс и ординат точек;
N количество точек;
0 ≤ NM ≤ 16 номер маркера (если NM < 0 - изображается маркер уменьшенных размеров);
JS шаг маркировки: JS < 0 - линия не проводится, JS = 0 или JS = 1 - маркируются все точки.
Слайд 11
BRОKEN(A1,A2,A3,A4)
задает режим проведения прерывистой линии и её характер.
Все значения задаются в выбранных единицах измерения. Конфигурация, заданная
двумя штрихами и двумя просветами, повторяет-ся необходимое число раз.
A1 длина первого штриха;
A2 длина просвета после первого штриха;
A3 длина второго штриха;
A4 длина второго просвета.
Слайд 12
BRLINE(X,Y,N)
позволяет начертить непрерывную, штриховую или штрихпунктирную линию по
заданной последовательности точек. Вид линии зависит от установленного режима.
X
и Y - значения абсцисс и ординат точек, определяющих функцию,
N - количество элементов в этих массивах. Задавая параметр N отрицательным, можно начертить "негативную" линию, когда штрихи заменяются просветами, а просветы штрихами.
Слайд 13
POLREG(X,Y,RIN,RFN,THО,THF,NAME,N,H,J)
определить на заданной странице полярную область для построения
графиков.
X,Y координаты центра области в выбранных единицах измерения;
RIN,RFN внутренний
и внешний радиусы в выбранных единицах измерения, (RFN-RIN) ≥ 0.5 см;
THО,THF минимальный и максимальный углы, определяющие радиальные граничные значения области (углы задаются в градусах), 360° ≥ (THF-THО) ≥ 5°;
NAME название области;
|N| количество литер в названии (если N > 0, название области выписывается вдоль оси Y, если N < 0 - вдоль оси X);
H высота литеры (если H=0., высота принимается равной 0.5 см);
J признак очерчивания границ области.
Слайд 14
LIMITS(RIN,RFN,THО,THF)
позволяет зафиксировать пределы изменения функции в области рисования.
RIN математическое значение радиуса, соответствую-щее внутренней круговой границе области;
RFN
математическое значение радиуса, соответствующее внешней круговой границе области;
THО математическое значение угла, соответствующее начальному радиальному граничному значению области;
THF математическое значение угла, соответствующее конечному радиальному граничному значению области.
Слайд 15
POLINE(R,TH,N,KS,NM,JS,L)
позволяет в заданной полярной области начертить кривую.
R –
массив радиусов;
TH – массив углов (в градусах или радианах
- зависит от KS);
N – количество точек (при N < 0 кривая может выходить за пределы области);
|KS| – шаг по массиву данных (если KS > 0, углы задаются в радианах, если KS < 0 - в градусах);
|NM| – номер маркера (если NM < 0, изображается маркер уменьшенных размеров);
|JS| – шаг маркировки (если JS > 0, проводится линия с маркерами, если JS = 0 - без маркеров, если JS < 0, то изображаются только маркеры);
L = 0 – незамкнутая кривая, 1 – замкнутая кривая.
Слайд 16
RAXES(NAME,N,H,UR,KR,MR,T)
провести и разметить радиальную ось.
NAME – название оси;
|N|
– количество литер: N > 0 - название оси пишется справа
от области вдоль оси Y, N < 0 - внизу;
|H| – высота литер (если H = 0, высота полагается равной 0.4 см, если H < 0, ось не проводится);
UR – размер основного деления на радиальной оси (если UR = 0., то производится автоматический выбор шага);
|KR| – количество вспомогательных делений внутри основного (если KR < 0, математические значения не подписываются);
MR = 0 – координатные линии не проводятся, 1 – координатные линии проводятся через основные деления, 2 – и через вспомога-тельные деления (через вспомогательные - штриховой линией);
T – математическое значение угла (в градусах), под которым проводится ось.
Слайд 17
THAXES(NAME,N,H,UT,KT,MT,R)
позволяет провести и разметить угловую ось.
NAME – название
оси;
|N| – количество литер (если N > 0, название оси пишется
справа от области вдоль оси Y, если N < 0, название оси пишется внизу);
|H| – высота литер(если H = 0, высота полагается равной 0.4 см, если H < 0, ось не проводится);
UT – размер основного деления по угловой оси (в градусах) (если UT = 0, производится автоматический выбор шага);
|KT| – количество вспомогательных делений внутри основного (если KT < 0, математические значения не подписываются);
MT = 0 координатные линии не проводятся, = 1 координатные линии проводятся через основные деления, > 1 внутри основного деления проводится (MT-1) вспомогательных угловых координатных линий;
R – математическое значение радиуса, с которым проводится ось.
Слайд 18
Синус и косинус в декартовых координатах и кардиоида
– в полярных
global _MAIN__
%include "macro.inc"
section .text
%assign N 100
%assign M 180
_MAIN__:
enter 0,0
Слайд 19
Табулирование y=sin x и z=1.5*cos x
finit
fld dword [h]
fld dword [a]
DO N,esi,4
fld st0
fst dword
[x+esi]
fsincos
fmul dword [re15]
fstp dword [z+esi]
fstp dword [y+esi]
fadd st0,st1
ENDDO
finit
Слайд 20
Табулирование r=1+sinϕ
fldpi
fidiv word [k]
mov word [k],0
DO M,esi,4
fild word [k]
fst dword [t+esi]
fmul st0,st1
fsin
fld1
fadd
fstp dword [r+esi]
add word [k],2
ENDDO
finit
Слайд 21
Рисование декартовой области
CALL _PAGE@24,20.,15.,"Sin(x) & 1.5*Cos(x)",19,0
CALL _SETPEN@4,1
CALL _REGION@32,2.5,2.5,15.,10.," ",1,0
CALL _LIMITS@16,xmin,xmax,ymin,ymax
CALL _AXES@44," X ",3,1.,5,"
Y ",3,0.3,4,0
CALL _SETPEN@4,2
CALL _LINEMO@20,x,y,100,-2,10
CALL _SETPEN@4,3
CALL _BROKEN@16,0.5,0.2,0.3,0.2
CALL _BRLINE@12,x,z,100
CALL _ENDPG@4,0
Слайд 22
Рисование полярной области
CALL _PAGE@24,15.,15.,"Кардиоида",9,0
CALL _POLREG@44,7.5,7.5,0.,6.,0.,360.," ",1,0.,0
CALL _LIMITS@16,0.,2.6,0.,360.
CALL _SETPEN@4,4
CALL _POLINE@28,r,t,M,-1,1,0,1
CALL _LIMITS@16,0.,2.6,360.,0.
CALL _SETPEN@4,5
CALL _POLINE@28,r,t,M,-1,1,0,1
CALL _SETPEN@4,6
CALL _THAXES@32," ",1,0.35,30.,1,3,2.
CALL _SETPEN@4,1
CALL _RAXES@32," ",1,0.,1.,-2,2,0.
CALL _ENDPG@4,0
Слайд 23
Эпилог и сегмент начальных данных
CALL _for_pause," "
leave
ret
section .data
a dd -1.9
h dd 0.1
re15 dd 1.5
xmin dd -2.
xmax dd 8.2
ymin dd -1.5
ymax dd 1.5
k dw M
Слайд 24
Неинициализированные данные (описание массивов)
section .bss
x resd N
y resd N
z resd N
r resd M
t resd M
Слайд 26
Сравнение макросов
Си
%macro CALL 1-*.nolist
extern _%1
%ifnempty %2
%push call
%assign %$i 0
%rep %0 - 1
%rotate -1
put %1
%endrep
call _%{-1:-1}
add esp,4*(%0
- 1) + %$i
%pop
%else
call _%1
%endif
%endmacro
Фортран
%macro CALL 1-*.nolist
extern %1
%ifnempty %2
%rep %0 - 1
%rotate -1
put %1
%endrep
call
%{-1:-1}
%else
call %1
%endif
%endmacro