O slideshow foi denunciado.
Seu SlideShare está sendo baixado. ×

2Bytesprog2 course_2014_c9_graph

Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Carregando em…3
×

Confira estes a seguir

1 de 25 Anúncio

Mais Conteúdo rRelacionado

Diapositivos para si (17)

Anúncio

Semelhante a 2Bytesprog2 course_2014_c9_graph (20)

Mais de kinan keshkeh (20)

Anúncio

Mais recentes (20)

2Bytesprog2 course_2014_c9_graph

  1. 1. Prog_2 course- 2014 2 bytes team Kinan keshkeh IT Engineering-Damascus University 3rd year
  2. 2. GRAPH
  3. 3. Introduction In all programs we were using TXTmode (all outputs were in Text). In PASCAL there is a Graph Unit, which allow us to change into Graphicmode and draw diagrams.
  4. 4. Change into Graph mode Uses Graph; procedure my_initgraph; var gd, gm, error,detect:integer; begin gd:=detect; initgraph(gd,gm,'c:evgrga.bgi'); error:=graphresult; if error<>grok then begin writeln('graphic error',GraphErrorMsg(error)); halt(1); end; end;
  5. 5. 1- Uses Graph : to include Graph library. 2- gd:=detect : detect ,to determine the kind of display card . 3- initgraph(gd,gm,'c:evgrga.bgi') that in (2) display system : ex: gm=VGAHI , so the screen will be 2640*480*16 (16 number of colors ). 4- error:=graphresult : to insure if initgraph success in changing to Graph mode, it return a value if success or error. 5-GraphErrorMsg(error) : display an error message , if an error happens when changing into graphic mode. 6-Halt: to exit the procedure.
  6. 6. Note: If we have this folder to save code file in it : C:MyFolderpro.pas Go to (Turbo Pascal) folder , open ‘BGI’ folder 1)Copy this file EGAVGA.BGI and paste it in ‘C:MyFolder’ 2)Copy this fileGRAPH.TPU’ unit from ‘Units’ folder (in Turbo Pascal folder).and paste it in the path ‘C:MyFolder’ too. 3)From pascal program , choose File -> Change dir -> C:MyFolder . * That to initialize Graph environment in pascal !
  7. 7. How to paint a Normal function: 1) The function : Y= f(x) ex: (y=2x) . 2) X domain: ex: x in [ x0=-100, xn=100] . 4) Painting step dx : dx=(xn-x0)/n . 3) N number of points. 5) The Algorithm : x1=x0; y1=F(x0); For(i:=1) to (N) do begin x2 = x0+i*dx; y2 = F(x2); line(x1,y1,x2,y2); x1:=x2; y1:=y2 end;
  8. 8. Example : paint ( Y=f(x) = x ) : 1- (f(x) = x ) 2- let x in [0,50] 3- n=100 4-dx=(50-0)/100 = 0.5 ; 5- Algorithm: x1=x0; y1=x0; For(i:=1) to (n) do begin x2 = x0+i*dx; y2 = x2; line(x1,y1,x2,y2); x1:=x2; y1:=y2 end; x1 y1 x2 y2 x2 y2
  9. 9. How to paint a Polar function: 1) The function :R= F(u) ex: (y=cos(x) ) . 2) U domain: ex: U in [ u0=-100, un=100] . 4) Painting step du : du=(Un-U0)/n . 3) N number of points. 5) The Algorithm : x1=F(u0)*cos(u0); y1=F(u0)*sin(u0); For(i:=1) to (N) do begin U= u0+ i*du; x2=F(u)*cos(u); y2=F(u)*sin(u); line(x1,y1,x2,y2); x1:=x2; y1:=y2 end; x y U
  10. 10. the Coordinates (wXb,wYb) paper bottom (wXt,wYt) top (vXb,vYb) screen bottom (vXt,vYt) top
  11. 11. Coordinates appropriate - If you have On paper x in [0..460] ..it would be On Screen x in [0..230] - So each two points on screen , one point on paper . (6,0) paper -> (3,0) screen - So the Ratio: Sx = | vXb – vXt | / | wXt – wXb | Sy = | vYb – vYt | / | wYt – wYb | 0 460 230 0 vXt vXb wXb wXt 3 6 1)Increasing and decreasing coordinates:
  12. 12. EX: If the paper Coordinates are 640*320 , and the screen Coordinates are 1280*640 . What are the coordinates on screen of the point (4,6) on paper ? answer : Sx=(1280-0) / (640-0) = 2 Sy=(640-0) / (320-0) = 2 the point on paper(4,6) -> (8,12) on screen
  13. 13. Xv= (x-wXb)*Sx + vXt 2)Displacement coordinates: 0 200 vXt vXb -50 50 wXb wXt Ex: the point (50,0) -> Xv=(50+50)*2 + 0 = 200 (x on screen). paper Screen
  14. 14. Yv= (y-wYb)*Sy + (GetMaxY – vYb) 0 0 paper wYb 100 100 vYt wYt vYb Screen GetMaxY = 100 Ex: the point (0,100) -> Yv=(100-0)*1 +(100-100) = 100 (x on screen).
  15. 15. Some important functions and procedures : Line(x1,y1,x2,y2) : draw a line between the two points. Circle(x,y,radius) : draw a circle . Rectangle(x1,y1,x2,y2): draw a rectangle between the two points . Setcolor(color): change the color where the color is a number from [0..15] and each number is a color. Setviewport(x1,y1,x2,y2,clipOn/clipOff): determine a specific display window clipOn: inside it we can see, clipOff: outside it we can see. TXTout(“Hello world”) or TXToutXY(50,20,“Hello world”) : print a text on screen with Graphicmode (at specific coordinate), whereas at TXTmode we use writeln,write .
  16. 16. Lets make it real :D !! What u do in Exams
  17. 17. Normal functions: F(x)=1+x2 س:ارسم الخط البياني للتابع: 2+x1 F(x)= حيث x ضمن المجال ]100,+100-[ 2000 N= Program draw; const n=2000; x0=-100; xm=100; dx=0.1 ; { (xm-x0)/n= [100-(-100)]/2000=0.1} uses graph; var x1,x2,y1,y2:real; nx1,nx2,ny1,ny2:real; maxx , maxy , i : integer; alpha , beta :real;
  18. 18. procedure my_initgraph; {initialize screen for drawing} var gd,gm,error,detect :integer; begin gd:=detect; initgraph(gd,gm,'c:evgrga.bgi'); error:=graphresult; if error<>grok then begin writeln('graphic error',GraphErrorMsg(error) ); halt(1); end; function f(x:real):real begin f:=x*x+1; end;
  19. 19. Begin my_initgraph; x1:=x0; y1:=f(x0); maxx:=getmaxx; maxy:=getmaxy; alpha:=maxx/(xm-x0); beta:=maxy/abs( f(xm) - f(x0) );; line(0,maxy div 2,maxx,maxy div 2); line(maxx div 2,0,maxx div 2,maxy); for i:=1 to n do begin x2:=x0+i*dx; y2:=f(x2); nx1:=round(x1*alpha)+maxx div 2; nx2:=round(x2*alpha)+maxx div 2; ny1:= -round(y1*beta)+maxy div 2; ny2:= -round(y2*beta)+maxy div 2; line(nx1,ny1,nx2,ny2); x1:=x2; y1:=y2; end; close graph; End; appropriate the coordinate Displacement Draw the axis
  20. 20. Polar functions: F(u)=1+sin(u) س:ارسم منحني التابع +sin(u)1 F(u)= 0.02du=, 0 =0 U Program draw; const n=2500; u0=0; du=0.02; uses graph; var x1,x2,y1,y2:real; nx1,nx2,ny1,ny2:real; maxx , maxy,i :integer; alpha ,beta :real;
  21. 21. procedure my_initgraph; {initialize screen for drawing} var gd,gm,error,detect :integer; begin gd:=detect; initgraph(gd,gm,'c:evgrga.bgi'); error:=graphresult; if error<>grok then begin writeln('graphic error',GraphErrorMsg(error) ); halt(1); end; function f(u:real):real begin f:=1+sin(u); end;
  22. 22. Begin my_initgraph; x1:=f(u0)*cos(u0); y1:=f(u0)*sin(u0); maxx:=getmaxx; maxy:=getmaxy; alpha:=maxx/ ( n*du) beta:= maxy/abs( f(u0+n*du) - f(u0) ); line(0,maxy div 2,maxx,maxy div 2); line(maxx div 2,0,maxx div 2,maxy); for i:=1 to n do begin u:=u0+i*du; x2:=f(u)*cos(u); y2:=f(u)*sin(u); nx1:=round(x1*alpha)+maxx div 2; nx2:=round(x2*alpha)+maxx div 2; ny1:= -round(y1*beta)+maxy div 2; ny2:= -round(y2*beta)+maxy div 2; line(nx1,ny1,nx2,ny2); x1:=x2; y1:=y2; end; close graph; End; Draw the axis
  23. 23. The End of the course !!
  24. 24. Group : group link Mobile phone- Kinan : 0994385748 Facebook account : kinan’s account 2 bytes team

×