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

5 1K 4
Đề thi đồ họa máy tính doc

Đang tải... (xem toàn văn)

Thông tin tài liệu

Đề 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 x i y i 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! 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); 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); 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 p i <0 then y i+1 =y i , p i+1 =p i +2dy; if p i <0 then y i+1 =y i +1, p i+1 =p i +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 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 . Đề 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. 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 độ,

Ngày đăng: 04/07/2014, 14:20

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan