|
|
Bu makalenin farkl� dillerde bulundu�u adresler: English Castellano Deutsch Francais Turkce |
taraf�ndan Baybora Baran ve Se�kin G�kaltun <baybora(at)be.itu.edu.tr, gokaltun(at)itu.edu.tr> Yazar hakk�nda: Bizler Istanbul Teknik Universitesi, Bilisim Enstit�s�`nde �alisan arastirma g�revlisi olarak �alisiyoruz ve m�hendislik uygulamalirnda Linux kullaniyoruz... Seckin'nin, sanal doku y�resi www.be.itu.edu.tr/~seckin T�rk�e'ye �eviri: Murat Pekta� <pektas(at)be.itu.edu.tr> �i�dem Y�ld�z <cigdemyildiz(at)be.itu.edu.tr> ��erik:
|
�zet:
Bu makalede; Fortran programlama dilinde etkilesimli
grafiklerle nasil program yazilacagini �greneceksiniz. PGPlot, Fortran kodumuzda yazmamiz gereken
bir altprogramciklar listesidir.PGPlot altprogramciklarinin kurulumunu ve bazi uygulamalarini
anlatacagiz ve PGPlot`la yapabileceginiz uygulamalarla ilgili bir fikir vermek i�in
Fortran kodlarinin da bulundugu iki �rnek verecegiz.
PGPLOT grafik k�t�phanesi Fortran ve C tarafindan �agirilabilen, basit bilimsel grafikler yapmak i�in kullanilan aygittan bagimsiz bir grafik paketidir. Minimum �aba harcayarak yayim kalitesinde grafikler hazirlamak i�in tasarlanmistir. Bir �ok uygulama i�in program aygita bagimli olabilir ve �ikti program kosarken aygita y�nlendirilmis olabilir.
PGPlot k�t�phanesi iki ana kisimdan olusur: aygittan bagimsiz ve �esitli g�r�nt� g�stericiler, nokta vuruslu yazicilar, lazer yazicilar ve kalemli yazicilardan �ikti alabilmek i�in aygita bagimli kisimdir. Postscrip ve GIF da dahil olmak �zere yaygin olan doysa bi�imlerini destekler. PGPlot un kedisi de �ogunlukla Fortran-77 de yazilmistir.
PGPLOT alt programciklari Fortran-77 veya Fortran-90 gibi programlardan direkt olarak �agirilabilir. C baglanti k�t�phanesi (cpgplot) ve baslik dosyasi (cpgplot), PGPLOT� un C veya C++ programlarindan �agrilabilmesini saglamaktadir; bu baglanti k�t�phanesi C ve Fortran arasinda irtibati saglar. PGPLOT Unix (�ogunlukla Linux, SunOS, Solaris, HPUX, AIX, ve Irix�leri i�eren �esitleri) ve OpenVMS isletim sistemleri ile test edilmistir.
PGPLOT kamuya a�ik olmayan bir yazilim olmakla birlikte ticari maksatla kullanilmaz. Kaynak kodu ve d�k�mantasyonu California Institute of Technology tarafindan �ok az standart disi ve sistem bagimli alt programciklar ile telif hakki alinmistir. Y�kleme dosyasini ve yol g�stermeleri edinmek i�in buraya tkla.
Asagida PGPlot in yapabileceklerine dair bazi PGPlot uygulamalari sunuyoruz.
/usr/local/src/pgplot
(kaynak dizin)
/usr/local/pgplot
(hedef dizin)
cd pub/pgplot
binary
hash
get pgplot5.2.tar.gz
tar
dosyasinin i�inde de bulunmaktadir.
ftp://ftp.astro.caltech.edu/pub/pgplot/pgplot5.2.tar.gz
.
gunzip
ve
tar
kullanin. Bu islemle ge�erli dizinde pgplot (ve alt dizinlerini) yaratmis olacak.
Ge�erli dizininizin "PGPlot kaynak" dizin agacini yaratmak istediginiz dizin oldugundan emin olun.
cd /usr/local/src
gunzip -c pgplot5.2.tar.gz | tar xvof
-
/usr/local/src/pgplot
yaratir.
mkdir /usr/local/pgplot
Kaynak dizin altinda PGPlot k�t�phanesi yaratmaya �alismayin.drivers.list
dosyasini
kaynak dizininden dosyasini hedef dizinine kopyalayin ve sonra aygit s�r�c�lerini
se�mek i�in bir metin edit�r� kullanin. Bu dosyada her satir uygun aygit s�r�c�s�n� i�erir.
S�r�c�y� kullanabilmek i�in basindaki (!) isaretini kaldirin veya aygit s�r�c�n� devre disi
birakmak i�in (!) isaretini tekrar yazin. Bir �ok s�r�c� sadece belli isletim sistemlerinde
kullanilabilir (drivers.list
deki notlara bakiniz.) su halde sadece kullanmayi
tasarladiginiz s�r�c�leri aktive edin. PGPlot daha sonra yeniden kuruluma bu
adimdan baslanarak tekrar d�zenlenebilir. �ogu kurulum sunlari i�ermelidir: ge�ersiz(null) aygit (/NULL),
Postscript yazicilari (/PS, /VPS, /CPS, ve /VCPS), Tektronix terminalleri (/TEK,/XTERM, ve diger olasi �esitler), ve
eger X Window sistemi hedefte varsa, X Window s�r�c�leri (/XWINDOW, /XSERVE). Ayrica GIF dosyalari i�in
veya diger bazi yazicilar i�in s�r�c�ler eklemek isteyebilirsiniz.
cd /usr/local/pgplot cp /usr/local/src/pgplot/drivers.list . vi drivers.list (veya tercih ettiginiz edit�r� kullanin.)
makemake
adi verilen bir alfabe
kullanir.Isletim sistemi ve derleyici bilgisi konfig�rasyon dosyasindan
saglanir.Eger sizin konfig�rasyonun bu listelenmislerden biri degilse, ya da
olusturulmus makefile' i kullanmada zorlaniyorsaniz, kendi konfig�rasyon
dosyanizi yaratma hakkindaki bilgi i�in asagidakine bakin.f77
bir GNU
g77 derleyici ister, o zaman bir SPARC f77 derleyici i�in dizayn edilmis bir
konfig�rasyon dosyasi kullanamazsiniz. �zel bir konfig�rasyon dosyasi yaratmak
zorunda kalirsiniz. Asagidaki tabloda, Arg#2 isletme sistemi i�in bir koddur, ve
Arg#3 Fortran ve C derleyicileri i�in bir koddur. Destekleyici sistemler hakkinda
daha fazla bilgi i�in, pgplot/sys_*/aaaread.me
dosyasina bakin.
------ ------ aix xlf_cc alliant fortran_cc bsd g77_gcc convex fc_cc cray cf77_cc epix2 f77_cc (Control Data EP/IX 2.x) freebsd f77_cc fujitsu uxpm_frt_cc fujitsu uxpv_frt_cc hp fort77_c89 hp fort77_gcc irix f77_cc linux absoft_gcc linux f77_gcc linux g77_elf linux g77_gcc next af77_cc next f2c_cc next g77_cc next gf77_cc osf1 f77_cc osf1 f77_cc_shared sol2 f77_cc (Solaris 2.x, SunOs 5.x) sol2 f77_gcc sol2 f90_cc sol2 g77_gcc sun4 f77_acc (SunOS 4.x) sun4 f77_cc sun4 f77_gcc ultrix f77_ccEger sistemin listelenmislerden biri ise asagidaki gibi ilerler: bir hedef dizin olusturun, �rnegin,
cd /usr/local/pgplotdagitim dizininden
makemake
alfabesini uygulayin.�rnegin;
/usr/local/src/pgplot/makemake /usr/local/src/pgplot linuxmakemake' e saglanan ilk arg�man dagitim dizininin ismidir. Farkedilmelidir ki,
makemake
'i �alistirdiginizda, sizin i�inde
bulundu�unuz �ntanimla dizininiz hedef dizininiz olmalidir ki derli k�t�phanenizi
koydugunuz yer olsun. drivers.list
dosyasini bulamayabilir.Bu durumda 4.adima d�n�n!.
�rnek
baybora@bilgi>../pgplot/makemake ../pgplot linux g77_gcc
For
additional information, read file ../pgplot/sys_linux/aaaread.me
Reading
configuration file: ../pgplot/sys_linux/g77_gcc.conf
Selecting uncommented
drivers from ./drivers.list
Found drivers NUDRIV PSDRIV XWDRIV
Creating
make file: makefile
Determining object file dependencies.
makemake
sonraki kullanim i�in bir makefile
dosyasi
olusturur, se�ilmis aygit s�r�c�s�n� �agiran bir Fortran dosyasi
grexec.f
ve PGSCRN ile kullanimi i�in renk tanimi i�eren bir text
dosyasi (eger rgb.txt
dosyaniz zaten var ise,bu sizin taniminiza
g�re degistirilir, makemake
degistirmez.).Ayrica derleme sirasinda
ihtiya� duyulacak dosyalari i�eren iki Fortran dosyasi kopya eder. Bu y�zden bu
asamada en azindan asagidaki dosyalara sahip olacaksiniz;
drivers.list
grexec.f
grpckg1.inc
makefile
pgplot.inc
rgb.txt
makemake
'in drivers.list
ten se�tigin s�r�c�lere
uygun buldugunu s�yledigi s�r�c�ler listesini kontrol etmelisiniz. Eger UNIX
sistemin yukarida listelenen destekleme sistemlerinden biri degilse, hedef
rehberde local.conf
ismi ile kendi konfig�rasyon dosyanizi
yaratin.En iyisi pgplot/sys_*/*.conf
dan saglanan konfig�rasyon
dosyalarindan birini kopya etmektir ve o zaman asagida dosyadaki yorumlarda onu
yayinlayin. Eger i�inde bulundugunuz dizinde varsa ve eger Arg#3 a�ik�a belirtilmemisse
makemake
prosed�r� local.conf
'u kullanacaktir.
Unutmayin ki, Arg#2 ( isletim sistemi) yi a�ik�a belirtmelisiniz.
make
komutunu
kullanin: makefile
:
make
�ntanimla,make
bir nesne-�l�� birimi
k�t�phanesini, libpgplot.a
; paylasilabilir bir k�t�phaneyi (eger
m�mk�nse se�ilmis olan isletim sisteminde), �ift PGPLOT dosyasi
grfont.dat
, kullanilisini g�sterme programlari
pgdemo*
, ve bir dok�mantasyon dosyasi olan pgplot.doc
'u
kullanacaktir. Ayrica eger /XWINDOW ve/veya
/XSERVE s�r�c�s� 4.adimda se�ildiyse pgxwin_server
adli programi yaratir,
ve eger /XDISP se�ildiyse pgdisp
programini yaratir. Eger bu adim
tatmin edici bir sekilde y�r�rse aradaki istenmeyen dosyalari kaldirmak i�in
make clean
yazabilirsiniz. Daha sonra i�inde bulundugunuz dizinde asagidaki dosyalari g�rebilirsiniz:drivers.list
grexec.f
grfont.dat (binary font
Eger XMDRIV ya da TKDRIV isterseniz, ayrica asagidaki dosyalarin bazilarina
sahip olacaksiniz:
file)*
libpgplot.a (PGPLOT library)*
libpgplot.so (shared library,
optional)*
makefile
pgdemo1 ... pgdemo16 (demonstration
programs)
pgdisp (required by /XDISP driver)*
pgplot.doc (ASCII
documentation file)
pgxwin_server (required by /XWINDOW driver)*
rgb.txt
(color name database)*
pgmdemo (executable demo program)
libXmPgplot.a (object library
required by PGPLOT/Motif applications)*
XmPgplot.h (header file required by
PGPLOT/Motif applications)*
libtkpgplot.a (object library required by
PGPLOT/Tk applications)*
pgtkdemo (executable demo program)
pgtkdemo.tcl
(script used by demo program)
tkpgplot.h (header file required by PGPLOT/Tk
applications)*
PGPLOT_DIR
'in dogru
tanimlandigindan emin olun. Bu, PGPLOT'un arayacagi grfont.dat
ve
rgb.txt
dosyalarinin i�inde bulundugu dizinin adidir,eger gerekirse
X-window sunucu programi; pgxwin_server
:
UNIX csh or tcsh: setenv PGPLOT_DIR /usr/local/pgplot/
UNIX sh
or bash: PGPLOT_DIR="/usr/local/pgplot/"; export PGPLOT_DIR
PGPLOT_DEV
�evre degiskeni ile birlikte varsayilan PGPLOT
aygitini tanimlamak i�in gerekli degildir.
UNIX csh or tcsh: setenv PGPLOT_DEV /xwindow
Bir UNIX paylasimli k�t�phanesi kullaniliyorsa (e.g., on Solaris 2.x),y�kleyici yolunuza PGPLOT dizini koymak durumunda olabilirsiniz, buLD_LIBRARY_PATH
�evresel
degiskeninde tanimlanmistir.BIr programi �alistirmak i�in,programin adini
(i�inde bulundugunuz dizinde degilse i�inde bulundugu dizinle birlikte),ve tipini
yaziniz../pgdemo1
Uygun aygit tiplerini g�rmek i�in soru isaretine (?
)
basin ve PGPLOT'un d�zg�n kuruldugunu g�sterin .
Kontrol edilecek noktalar: PGPLOT programi font dosyasini dogru olarak okur ve
�zel karakterleri (pgdemo2) bastirir; PGPLOT programi
renk veritabanini okur(pgdemo10); interaktif aygitlarda imle� dogru olarak �alisir
(pgdemo5, pgdemo6).
INTEGER PGOPEN, I REAL XS(9), YS(9), XR(101), YR(101) C Compute numbers to be plotted. DO 10 I=1,101 XR(I) = 0.1*(I-1) YR(I) = XR(I)**2*EXP(-XR(I)) 10 CONTINUE DO 20 I=1,9 XS(I) = I YS(I) = XS(I)**2*EXP(-XS(I)) 20 CONTINUE C Open graphics device. IF (PGOPEN('?') .LT. 1) STOP C Define coordinate range of graph (0 < x < 10, 0 < y < 0.65), C and draw axes. CALL PGENV(0., 10., 0., 0.65, 0, 0) C Label the axes (note use of \u and \d for raising exponent). CALL PGLAB('x', 'y', 'PGPLOT Graph: y = x\u2\dexp(-x)') C Plot the line graph. CALL PGLINE(101, XR, YR) C Plot symbols at selected points. CALL PGPT(9, XS, YS, 18) C Close the graphics device. CALL PGCLOS END
Bu, asagidaki grafigi �izmeyi saglamaktadir:
Yukardaki kodu basarili olarak ger�eklestirebilmek i�in PGPLOT ve X11 k�t�phanelerini kodunuzla birlikte kullanmaniz gerekmektedir. Asagidaki senaryonun g�sterdigi gibi;
g77 your_code_name.f -L/X11directory/ -lX11 -L/PGPLOTdirectory/ -lpgplot
Kodunuzu �alistirdiginiz dizinin i�inde asagidaki dosyalar bulunmalidir:
grfont.dat rgb.txt pgwin serverBu dosyalari pgplot dizininden kodunuzun bulundugu dizine kopyalayin.
Bu uygulamada amacimiz fare ile tiklayarak belirlenen �� nokta belirlemek ve Fortran kodu ile daireyi �izmektir. Bu problem Serdar �elebi tarafindan y�netilen Hesaplamali Geometri dersinde ��z�lm�st�r.
Asagidaki rutinler grafigin �izilecegi alanin arkaplanini ve nasil yerlestiril ecegini tanimlamaktadir. Alt fonksiyonlarin detayli kullanimi PGPLOT kilavuzundan bulunabilir.. ( PGPLOT linkini anasayfanin sonunda bulabilirsiniz.)
..
...
call PGSCR(0,1.0,1.0,1.0) !set color
representation
call PGENV(-50.0,50.0,-50.0,50.0,1,1) !set window and viewport
and draw labeled frame
call PGSCI(1) !set color index
call PGSFS(2) !set
fill-area style
...
..
Asagidaki PGPT1 rutinini fare ile belirlemek istedigimiz noktadaki g�stericiyi �izmek i�in kullanabiliriz.
.. ... WRITE (*,*) 'Cursor mode:', MODE GOTO 10 END IF CALL PGPT1(X, Y, 3) !draw one graph marker ic=ic+1 xp(i)=x yp(i)=y
Ekranda 3 farkli nokta belirlendikten sonra, Fortran kodu, merkezi hesaplayarak 3 noktadan ge�en �emberin �izer.
.. ... c-----find the radius---------------- r=(xcenter-xp(1))**2+(ycenter-yp(1))**2 r=r**0.5 c-----draw the circle------------------- call PGCIRC(xcenter,ycenter,r) !draws a circle goto 1 ... ..
�emberi yukarida bahsedilen "PGCIRC" rutini ile �izeriz. Siz bu �emberi silip ayni �izim alanina yeni noktalar belirleyerek baska bir �ember �izebilirsiniz. Kodun tamami referanslarda vardir.(bakiniz Ref. circle.f).
Bu uygulamada amacimiz fareyle isaretledigimiz farkli ayrik noktalardan ge�en
yaklasik egri bulmak ve bu egri �zerine oklukirpi �izgiler
�izmektir..
oklukirpileristenmeyen noktalarin belirlenmesinde,
egrilik i�inde s�rekli olmayan ve d�z olan kisimlarin belirlenmesinde
kullanilmktadir. Bu y�zden Hesaplamali Geometride �nemli bir konsepttir.
Kullanici tarafindan fare kullanarak rastgele olusturulan (1~4)sirasina g�re
noktalar k�mesi dogrultusunda bir egri �izmek i�in en k���k kareler y�ntemini
kullanan bir kod geli�tirdik.Bu kod, egri �zerinde oklukirpiler �izilmesi i�in
(sikliklari kullanici tarafindan ayarlanabilir.)egrinin egrilik derecesinin
g�stergesinin belirlenmesini saglar.
Yazdigimiz Fortran kodunun
detaylarini atlayarak grafiksel sonu�lari burda g�steriyoruz.(Kodu makalenin
sonunda bulabilirsiniz).
�nce fare yardimiyla ekrana farkli noktalar giriyoruz, ve Fortran kodu bu noktalarin koordinatlarini alir,bir diziye yerlestirir.Daha sonra kullanicinin istedigi derecede, bu noktalardan ge�en egriyi yaklasik olarak �izmemizi saglar.(1-4)
Sonra egri �zerine oklukirpi �izgileri �izildi.Oklukirpi �izgilerinin sayisi kullanici tarafindan se�ilebilir,ve hi�bir arkaplanda veya noktalarda degisiklik yapmadan, ayni egri �zerinde yeni oklukirpiler �izilebilir.
Oklukirpilerin sikliklari asagida g�r�ld�g� gibi arttirilabilir, hem de program ayni verilerle yeni egri �izebilir.
|
G�rsely�re sayfalar�n�n bak�m�, LinuxFocus Edit�rleri taraf�ndan yap�lmaktad�r
© Baybora Baran ve Se�kin G�kaltun, FDL LinuxFocus.org |
�eviri bilgisi:
|
2002-11-07, generated by lfparser version 2.31