1. Trang chủ
  2. » Công Nghệ Thông Tin

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

5 1K 4

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 5
Dung lượng 81 KB

Nội dung

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.. Lập bảng các bước tiến hành thuật toán DDA để vẽ đoạn thẳng AB.. Câ

Trang 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

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!

Trang 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); d:=0.01; tx:=40; ty:=60; x:=-2*pi;

Trang 3

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;

Trang 4

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;

Trang 5

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

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

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w