Đề thi đồ họa máy tính

Chia sẻ: Hosi Thai | Ngày: | Loại File: DOC | Số trang:5

0
137
lượt xem
45
download

Đề thi đồ họa máy tính

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Câu 1: Viết chương trình vẽ hình vuông ở tâm màn hình từ từ nở to ra đến khi chạm cạnh màn high rồi lại từ từ co

Chủ đề:
Lưu

Nội dung Text: Đề thi đồ họa máy tính

  1. Đề thi đồ họa máy tính, K56 (Khóa 2006-2010) Ngày thi 22/12/2008 Thời gian: 90 phút Câu 1: Viết chương trình vẽ hình vuông ở tâm màn hình từ từ nở to ra đến khi chạm cạnh màn high rồi lại từ từ co về kích thước ban đầu như hình vẽ bên: Câu 2: Viết chương trình vẽ đồ thị hàm y=sin(2x) trong khoảng (-2π, 2π) kèm theo 2 đường thẳng tượng trưng cho 2 trục tọa độ, gốc tọa độ đặt ở tâm màn hình. Vẽ một high vuông nhỏ màu đỏ trượt theo đường sin đó sao cho thời gian mà nó đi từ điểm đầu tới điểm cuối là 10 giây. Câu 3: Cho A(5, 12), B(25, 24). Lập bảng các bước tiến hành thuật toán DDA để vẽ đoạn thẳng AB. i xi yi y … … … … Câu 4: Lập trình vẽ một bánh xe lăn bên trong một hình tròn Chúc mạnh giỏi!
  2. Bài làm: Câu 1: Uses crt, graph; Var gd, gm: integer; cx, cy, dem: integer; Procedure hinhVuongNghieng(i: integer); Begin line(getMaxX div 2, (getMaxY div 2)-i, (getMaxX div 2)+i, getMaxY div 2); moveTo((getMaxX div 2)+i, getMaxY div 2); lineTo(getMaxX div 2, (getMaxY div 2)+i ); lineTo((getMaxX div 2)-i, getMaxY div 2); lineTo(getMaxX div 2, (getMaxY div 2)-i); End; BEGIN gd:=0; initGraph(gd, gm, ''); dem:=0; repeat setColor(15); if dem=getMaxY div 2 then dem:=0 else inc(dem); {setWriteMode(1);} hinhVuongNghieng(dem); delay(10); setColor(0); hinhVuongNghieng(dem); until keyPressed; readln; END. Câu 2: Uses crt, graph; Var gd, gm, tx, ty: integer; d, x: real; Procedure hinhVuong(i, j: integer); Begin rectangle(i-10, j-10, i+10, j+10); End; BEGIN gd:=0; initGraph(gd, gm, ''); setColor(14); setViewPort(getMaxX div 2, getMaxY div 2, getMaxX, getMaxY, clipOff);
  3. d:=0.01; tx:=40; ty:=60; x:=-2*pi; while x<2*pi do Begin line(round(x*tx), -round(sin(2*x)*ty), round((d+x)*tx), -round(sin(2*(x+d))*ty)); x:=x+d; End; setColor(15); line(-400, 0, 400, 0); line(0, 200, 0, -200); x:=-2*pi; setFillStyle(0,4); while x<2*pi do Begin setWriteMode(xorPut); hinhVuong(round(x*tx), -round(sin(2*x)*ty)); delay(2); hinhVuong(round(x*tx), -round(sin(2*x)*ty)); x:=x+d; End; readln; closeGraph; END. Câu 4: Uses crt, graph; Var gd, gm, x, y, dx, da, r, rl, rn, a, g: integer; Procedure banhXe(x, y, r, c, n, a: integer); Var dx, dy, goc, i: integer; Begin setColor(c); goc:=a; circle(x, y, r); for i:=1 to n do Begin dx:=round(r*cos(goc*pi/180)); dy:=-round(r*sin(goc*pi/180)); line(x, y, x+dx, y+dy); goc:=goc+360 div n; End; End; BEGIN gd:=0; initGraph(gd, gm, ''); setViewPort(getMaxX div 2, getMaxY div 2, getMaxX, getMaxY, clipOff);
  4. r:=30; rl:=200; g:=180; rn:=rl-r-2; x:=-rl+3; y:=0; dx:=3; a:=30; da:=round(dx/r*180/pi); circle(0, 0, rl); repeat banhXe(x, y, r, 14, 12, a); delay(40); banhXe(x, y, r, 0, 12, a); x:=round(rn*cos(g*pi/180)); y:=-round(rn*sin(g*pi/180)); if g>360 then g:=0 else inc(g); if a<0 then a:=a+360; a:=a-da; until keyPressed; END. Câu 3: A(5, 12); B(25, 24) Theo thuật toán Bresenham: Chú ý: if pi<0 then yi+1=yi, pi+1=pi+2dy; if pi<0 then yi+1=yi+1, pi+1=pi+2dy-2dx; Dx=25-5=20; Dy=24-12=12; P0=2Dy-Dx=4; i xi yi pi c1 c2 0 5 12 4 24 ­16 1 6 13 ­12     2 7 13 12     3 8 14 ­4     4 9 14 20     5 10 15 4     6 11 16 ­12     7 12 16 12     8 13 17 ­4     9 14 17 20     10 15 18 4     11 16 19 ­12     12 17 19 12     13 18 20 ­4     14 19 20 20     15 20 21 4     16 21 22 ­12     17 22 22 12     18 23 23 ­4    
  5. 19 24 23 20     20 25 24 4     Theo DDA, ví dụ: A(12, 20),  B(22, 27) dx=10 dy=7 c1=14 c2=­6 p0=4 m=dy/dx=0.7 i xi yi y 0 12 20 20 1 13 20 20.7 2 14 21 21.4 3 15 22 22.1 4 16 23 22.8 5 17 24 23.5 6 18 24 24.2 7 19 25 24.9 8 20 26 25.6 9 21 26 26.3 10 22 27 27
Đồng bộ tài khoản