Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Обработка текстовой и графической информации

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
☆
Пример 10. Рисование графиков (фрагменты программы)
cСимвольныепеременныедлязаданияшрифтовтекста character(4)widfont character(2)nomfont character(1)widfont1(4) equivalence(widfont1(1),widfont) equivalence(widfont1(3),nomfont) character(21)tipfont write(nomfont,'(i2)')mefont cжирныесимволы-e, cнаклонныесимволы-i, cвысотасимвола-h. cwidfont1(1)='i' widfont1(1)='' widfont1(2)='h' if(metipfont.eq.0)tipfont='courier' if(metipfont.eq.1)tipfont="'t'TimesNewRoman'" if(metipfont.eq.2)tipfont='ArialBlack' cАналогичнымобразомможноназначитьдругиешрифты
111
cЦветаграфиков c0—черный ijzwY(1)=0 c1—темносиний ijzwY(2)=1 c9—яркосиний ijzwY(3)=9 c3—голубой ijzwY(4)=3 c2—зеленый ijzwY(5)=2 c10—яркозеленый ijzwY(6)=10 c14—желтый ijzwY(7)=14 c12—красный ijzwY(8)=12
112 Глава 2. Обработка графической информации
c4—темнокрасный ijzwY(9)=4 c0—черный ijzwY(10)=0
nazwanie=nazwanie0 metol=metol0 metolz=metolz0
cГрафикCpперевернут if(mez.eq.(-1))yyy=yymin if(mez.eq.(-1))yymin=-yymax if(mez.eq.(-1))yymax=-yyy
ddy=(yymax-yymin)/9.0d0 cУровнишкалыцветов(еслицветвыбираемпозначениюY) do146kkk=1,10 cЧерно-белыйрисунок if(mezw.eq.0)ijzwY(kkk)=0 146yzw(kkk)=ddy*(kkk-1)+yymin
cМеткатолщины«бублика» metolb=5 if(metolb.lt.metol)metolb=metol if(metolb.lt.metolz)metolb=metolz
34format(f8.2) cОкно xmin=xxmin xmax=xxmax ymin=yymin ymax=yymax zmin=zzmin zmax=zzmax xxx=xmax-xmin yyy=ymax-ymin
Пример 10. Рисование графиков (фрагменты программы)
zzz0=zmax-zmin if(zzz0.le.0.0d0)zzz0=1.0d0 razmer=dsqrt(xxx*xxx+yyy*yyy) cУвеличениеполейрисунка polelew=polelew0 polepraw=polepraw0 poleniz=poleniz0 polewerh=polewerh0 cmez=0график2D, cmez=1график3D, cmez=-1график3DсперевернутойосьюOY(рисуемCp).
if(mez.eq.0)goto219 zmin=0.0d0 zmax=zmin do19i=1,ngraf zi=z(i) if(zi.gt.zmax)zmax=zi if(zi.lt.zmin)zmin=zi 19continue zzz=zmax-zmin if(zzz.le.0.0d0)zzz=1.0d0 cУвеличилиполярисунка3D xzm=xzm0*xxx/zzz yzm=yzm0*yyy/zzz if(zmax.gt.0.0d0)polepraw=polepraw0+xzm*zmax/xxx if(zmin.lt.0.0d0)polelew=polelew0-xzm*zmin/xxx if(zmax.gt.0.0d0)polewerh=polewerh0+yzm*zmax/yyy if(zmin.lt.0.0d0)poleniz=poleniz0-yzm*zmin/yyy xzm=-xzm yzm=-yzm 219continue
113
cУвеличилиразмерырисунка(добавилиполя) x1=xmin-polelew*xxx
114 Глава 2. Обработка графической информации
x2=xmax+polepraw*xxx y1=ymin-poleniz*yyy y2=ymax+polewerh*yyy xx1=x1 xx2=x2 yy1=y1 yy2=y2 cЗадалиокнорисунка dummy=setwindow(true,x1,y2,x2,y1) c15—белыйцвет dummy=setcolor(15) cРисуембелыйпрямоугольник(очистилиэкран) dummy=rectangle_w($gllinterior,x1,y2,x2,y1)
cВыбралистильлиний callsetlinestyle(#ffff)
cВыбралишрифт if(initializefonts().lt.0)continue if(mefont.gt.48)mefont=48 if(mefont.lt.10)mefont=10 dummy=setfont(tipfont//widfont)
ddx=xxx*4.0d0/ix2 ddy=yyy*4.0d0/iy2 dddx=0.0002d0*(x2-x1)*metol dddy=0.0002d0*(y2-y1)*metol
nwr5=nwrem/5 nwr25=nwrem/25 nwremm1=nwrem-1
xmins=xmin xmaxs=xmax ymins=ymin
Пример 10. Рисование графиков (фрагменты программы)
ymaxs=ymax 3030format(i2)
cСдвигцифрсеткиcifrax,cifray cifrax=-xxx*(5+mefont)/ix2 if(xmin.gt.0.0d0)cifrax=cifrax+xmin cifray=0.1d0 cШагсетки x2=xxx/5.0d0 y2=yyy/5.0d0 33format(g7.1) 35format(g8.2) 335format(f8.2) cОкруглениешагасетки callschag8(x2) callschag8(y2) cЗаданныйшагсеткиdeltayпоосиy delta=deltay if(deltay.gt.0.0d0)y2=delta x3=x2 y3=y2
115
c7—белоголубойцвет dummy=setcolor(7) cсдвигцифрвниз wy1=ymin-ddy*5-zmin*yzm
cРисуемлиниисеткивправо if(xmax.lt.0.0d0)goto110 x1=xmin-zmin*xzm if(xmin.lt.0.0d0)x1=0.0d0-zmin*xzm xc=x1-x3 do10i=1,50 cЦифрыпоосиxвнизуграфика if(x1.gt.xmax)goto110
116 Глава 2. Обработка графической информации
wx1=x1-ddx*(mefont+2) callmoveto_w(wx1,wy1,s) xc=xc+x3 x4=xc+zmin*xzm cПоследнююцифрупоосиxнеставим if((x1+x2).gt.xmax)goto2500 ix4=x4 if(wx1.lt.(xmin-zmin*xzm))goto10 if(x2.ge.0.00001d0)write(nle,305)x4 if(x2.ge.0.0001d0)write(nle,304)x4 if(x2.ge.0.001d0)write(nle,303)x4 if(x2.ge.0.01d0)write(nle,302)x4 if(x2.ge.0.10d0)write(nle,301)x4 if(x2.ge.1.0d0)write(nle,'(i8)')ix4 cЧерныйцвет dummy=setcolor(0) calloutgtext(nle) 2500continue y4=ymin-zmin*yzm callmoveto_w(x1,y4,s) cВертикальныештриховыелинии if(meschtrih.eq.0)goto2661 c7—бело-голубойцвет dummy=setcolor(7) cТиплинии—короткиештрихи callsetlinestyle(Ltyp(3)) dummy=lineto_w(x1,(ymax-zmin*yzm)) cВернулисплошныелинии callsetlinestyle(Ltyp(1)) callmoveto_w(x1,y4,s) 2661continue
cСплошнаялинияосиoy if(x1.eq.0.0d0)dummy=lineto_w(x1,(ymax-zmin*yzm)) cВертикальныештрихи if(mez.ne.0)dummy=lineto_w(x1,wy1)
Пример 10. Рисование графиков (фрагменты программы)
10x1=x1+x2 110continue cКонецрисуемлиниисеткивправо
117
Замечание. Аналогичным образом рисуются другие линии сетки (вле-
во, вверх, вниз). Разделение сетки может иметь смысл вслучаях, если интересуют значения параметра лишь на части графика, имеются разли­чия шага в правой и левой частях сетки, выводятся на один рисунок исравниваются параметры различной размерности ит.п.
c0—Задаличерныйцвет dummy=setcolor(0)
cРисуемосьOX x1=0.0d0 cГрафик2D if(mez.eq.0)x1=xxmin if(xzm.eq.0.0d0.and.yzm.eq.0.0d0)x1=xxmin y1=0.0d0 callmoveto_w(x1,y1,s) x2=xxmax dummy=lineto_w(x2,y1)
cГрафик(3D) if(mez.eq.0)goto18 if(xzm.eq.0.0d0.and.yzm.eq.0.0d0)goto18
cРисуемлиниюOZ x1=0.0d0-zmin*xzm y1=0.0d0-zmin*yzm callmoveto_w(x1,y1,s) x2=-zmax*xzm y2=-zmax*yzm dummy=lineto_w(x2,y2)
118 Глава 2. Обработка графической информации
c7—бело-голубойцвет dummy=setcolor(7)
cЗамыкаемгоризонтальнуюплощадку x2=x2+xmax dummy=lineto_w(x2,y2) x2=x1+xmax dummy=lineto_w(x2,y1) dummy=lineto_w(x1,y1) cЛеваягоризонтальнаяплощадка x2=-zmax*xzm y2=-zmax*yzm callmoveto_w(x2,y2,s) x2=x2+xmin dummy=lineto_w(x2,y2) x2=xmin-zmin*xzm dummy=lineto_w(x2,y1) dummy=lineto_w(x1,y1)
cЛеваястенка x2=xmin-zmax*xzm y2=-zmax*yzm callmoveto_w(x2,y2,s) y2=y2+ymax dummy=lineto_w(x2,y2) x2=xmin-zmin*xzm y2=ymax-zmin*yzm dummy=lineto_w(x2,y2) y2=ymin-zmin*yzm dummy=lineto_w(x2,y2)
cПраваястенка x2=xmax-zmax*xzm y2=-zmax*yzm callmoveto_w(x2,y2,s)
Пример 10. Рисование графиков (фрагменты программы)
y2=y2+ymax dummy=lineto_w(x2,y2) x2=xmax-zmin*xzm y2=ymax-zmin*yzm dummy=lineto_w(x2,y2) y2=ymin-zmin*yzm dummy=lineto_w(x2,y2)
cЗадняястенка x2=xmax-zmin*xzm y2=ymax-zmin*yzm callmoveto_w(x2,y2,s) x2=xmin-zmin*xzm dummy=lineto_w(x2,y2)
cЗадняястенка(обратнаяосьOZ) x2=xmax-zmax*xzm y2=ymax-zmax*yzm callmoveto_w(x2,y2,s) x2=xmin-zmax*xzm dummy=lineto_w(x2,y2)
119
c0—задаличерныйцвет dummy=setcolor(0)
cГоризонтальныештрихипоосиZсправа do181jgra=ngraf1,ngraf2 zjgra=z(jgra) x1=xmax-zjgra*xzm y1=-zjgra*yzm cНачалолиниивточкеx1,y1 callmoveto_w(x1,y1,s) x2=x1+ddx*5 cРисуемпрямуюлиниюдоточкиx2,y1 dummy=lineto_w(x2,y1)
120 Глава 2. Обработка графической информации
yc=zjgra*zzz0 ay=dabs(yc) cЗаписываемзначениеycвсимвольнуюпеременнуюnle write(nle,35)yc if(ay.ge.0.00001d1)write(nle,305)yc if(ay.ge.0.0001d1)write(nle,304)yc if(ay.ge.0.001d1)write(nle,303)yc if(ay.ge.0.01d1)write(nle,302)yc if(ay.ge.0.1d2)write(nle,301)yc if(ay.ge.1.0d2)write(nle,300)yc cСтавимзначенияпоосиZ(выводимтекстnleнаэкранрядомс cосьюZ) calloutgtext(nle) 181continue 18continue cКонецрисованиясетки
c0—черныйцвет dummy=setcolor(0) nrisunkow=1 irisunka=1 kugr=0 cГрафик2D if(ngraf.eq.1)ngraf1=1 if(ngraf.eq.1)ngraf2=1
cРисуемграфики3D. cПереборграфиковвобратномпорядке(начинаемссамого cдальнего) do5000jgra=ngraf2,ngraf1,(-1)
cПерестановка(координатыxрисуемыхточекрасполагаютсяв cмассивеxgr) do55111i=1,nwrem ij=i+nwrem*(jgra-1)
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]