Графическими примитивами называют точки, отрезки прямых, прямоугольники, окружности и ряд других. Перечень некоторых примитивов библиотеки DFLIB приведен в таблице. При работе с графикой вводится понятие текущей позиции (точки, пикселя). После перехода в графический режим текущая позиция задается в центре активного окна. Изменение текущей позиции выполняется подпрограммами
CALL MOVETO(X,Y,COORD)
или
CALL MOVETO_W(WX,WY,W_COORD)
Параметры процедур:
X,Y – типа INTEGER(2) – видовые (экранные) координаты пикселя, в который перемещается текущая позиция,
WX, WY – типа REAL(8) – оконные (математические) координаты точки, которая становится текущей n.
Параметры COORD и W_COORD являются переменными производного типа, определяемого в библиотеке DFLIB. Значения этих параметров задают видовые и оконные координаты предшествующей позиции.
![]() |
Переменная COORD имеет тип xycoord: TYPE xycoord INTEGER(2) xcoord INTEFER(2) ycoord END TYPE xycoord
Переменная W_COORD имеет тип wxycoord: TYPE wxycoord REAL(8) wx REAL(8) wy END TYPE wxycoord Для описания переменных этого типа в программе используются операторы TYPE(xycoord)COORD и TYPE(wxycoord) COORD_W.
|
Обращение к процедурам CALL MOVETO и CALL MOVETO_W, т.е. изменение текущей позиции, не приводит к изменению изображения.
Цвет пикселя на экране можно изменить, обратившись к функциям
SL2=SETPIXEL(X,Y) ,
SL2=SETPIXEL_W(WX,WY)
Функции возвращают значение типа INTEGER(2), равное номеру цвета, которым был закрашен пиксель до обращения к функциям, или –1, если задаваемые при обращении координаты выводят за область текущего окна. Номер цвета, в который окрашивается пиксель, задается функцией SETCOLOR.
ПРИМЕР: Построить графики двух функций
,
,
,
и
,
.
РЕШЕНИЕ. Будем изображать два графика в окне голубого цвета, расположенном в левом верхнем углу экрана, зеленым и желтым цветом. Оси координат для этого окна нарисуем белым цветом; начало координат в точке (a, b). Третий график изобразим черным пером отдельно в окне желтого цвета, расположенном правее первого окна. Изучите текст программы, реализующей данный пример, и выполните следующее задание.
ЗАДАНИЕ:
1) Пронаблюдайте работу
программы(1_GR_MIN).
2) Модифицируйте программу, так
чтобы получившаяся программа во втором окне рисовала оси координат синим цветом
и, дополнительно, еще один график функции - красным цветом. .
Для более подробного ознакомления с выводом данных в графическом формате мы рекомендуем книгу [Бартеньев О. В. Visual Fortran: Новые возможности].
![]() |
PROGRAM GRAPH USE DFLIB REAL(8), PARAMETER :: A=-3.0D0, B=3.0D0, & C=-8.0D0, D=8.0D0, & A1=-5D0,B1=5D0,C1=-8D0,D1=8D0 INTEGER(2) SL2 INTEGER(4) SL4 REAL(8) X, Y, H, H1, Y1 INTEGER(2),PARAMETER :: DXL=30,DYL=20, ML=3, M=400 LOGICAL(2) :: FINF=.TRUE._2 TYPE(WXYCOORD)WXY TYPE (WINDOWCONFIG)WC SL4=GETWINDOWCONFIG(WC) LX=WC.NUMXPIXELS LY=WC.NUMYPIXELS CALL SETVIEWPORT(DXL,DYL,DXL+LX/ML,DYL+LY/ML) SL2=SETWINDOW(FINF,A-0.2*(B-A),D,B,C-0.2*(D-C)) SL4=SETBKCOLORRGB(#D01F01) CALL CLEARSCREEN($GVIEWPORT) CALL MOVETO_W(A-0.2*(B-A),C,WXY) SL2=SETCOLOR(15_2) SL2=LINETO_W(B,C) CALL MOVETO_W(A,C-0.2*(D-C),WXY) SL2=LINETO_W(A,D) DO X=A+1,B-1,1 CALL MOVETO_W(X,C,WXY) SL2=LINETO_W(X,C+0.05*(D-C)) END DO H=(B-A)/M X=A Y=DSIN(4*X)+X*LOG(X*X+1) Y1=0.2*X**4
CALL MOVETO_W(X,Y,WXY) DO WHILE(X<=B) SL2=SETCOLOR(14_2) SL2=SETPIXEL_W(X,Y1) CALL MOVETO_W(X,Y,WXY) X=X+H Y=DSIN(4*X)+X*LOG(X*X+1) SL2=SETCOLOR(10_2) SL2= LINETO_W(X,Y) Y1=0.5*X**2 CALL SLEEPQQ(10) END DO CALL SETVIEWPORT(2*DXL+LX/ML,DYL,2*DXL+2*LX/ML,DYL+LY/ML)
SL2=SETWINDOW(FINF,A1,D1,B1,C1) SL4=SETBKCOLORRGB(#00FFFF) CALL CLEARSCREEN($GVIEWPORT) SL2=SETCOLOR(0_2) H1=(B1-A1)/M X=A1 Y=DSIN(4*X)*DCOS(7*X*X) CALL MOVETO_W(X,Y,WXY) DO WHILE(X<=B1-H1)
SL2=LINETO_W(X,Y) Y=DSIN(X)*DCOS(2*X*X)*X+0.5*X X=X+H1 CALL SLEEPQQ(10) END DO STOP END |