NGÂN HÀNG ĐỀ THI
Môn: KỸ THUẬT ĐỒ HỌA
Dùng cho hệ ĐHTX, ngành CÔNG NGHỆ THÔNG TIN
Số tín chỉ: 3
CHƯƠNG 1: TỔNG QUAN VỀ KỸ THUẬT ĐỒ HOẠ
Loại 1:
1/ Phát biểu rằng: Trong màn hình màu, số phần tử trong bảng LUT (LookUp Table) chính là
số màu có thể được hiển thị cùng một lúc trên màn hình, là đúng hay sai?
a
Đúng
b
Sai
2/ Giả sử màn hình của bạn đang sử dụng có độ phân giải (Resolution) là 640x480 thì lệnh
sau (viết bằng ngôn ngữ C++ )
printf(“\n Tọa độ ngang là: %d”, getmaxx()/2);
Sẽ cho kết quả khi chạy chương trình như sau: Toạ độ ngang là: 320. Theo bạn kết quả đó
đúng hay sai?
a
Đúng
b
Sai
3/ Giả sử màn hình của bạn đang sử dụng có độ phân giải (Resolution) là 640x480 thì lệnh
sau (viết bằng ngôn ngữ C++ )
printf(“\n Tọa độ đứng là: %d”, getmaxy()/2);
Sẽ cho kết quả khi chạy chương trình như sau: Toạ độ đứng là: 239. Theo bạn kết quả đó
đúng hay sai?
a
Sai
b
Đúng
4/ Phát biểu: kỹ thuật đồ hoạ vector = mô hình hình học + tô trát, là đúng hay sai?
a
Sai
b
Đúng
5/ Nói rằng : kỹ thuật đồ hoạ điểm giúp cho chúng ta quan sát hình ảnh ở nhiều góc độ khác
nhau bằng cách thay đổi góc nhìn là đúng hay sai?
a
Sai
b
Đúng
1
6/ Để tạo ra các điểm ảnh (pixel) thì các phương pháp nào không đúng:
a
Tô trát (rendering)
b
Rời rác hoá (số hoá) hình ảnh thực của đối tượng
c
Dựa vào các lý thuyết mô phỏng (Fractal…)
d
Dùng phần mềm vẽ trực tiếp từng điểm ảnh một
7/ Chọn phương án sai cho kỹ thuật đồ hoạ điểm:
a
Dễ dàng thay đổi thuộc tính của đối tượng (màu sắc, độ sáng)
b
Quan sát đối tượng ở nhiều góc nhìn khác nhau bằng cách thay đổi góc nhìn
c
Xoá đi dễ dàng từng pixel của đối tượng
d
Đối tượng được hiển thị thông qua từng mẫu rời rạc
8/ Chọn phương án không phải là ứng dụng của kỹ thuật đồ hoạ:
a
Tính khối lượng vật liệu (sắt, thép…) cho một toà nhà
b
Điều khiển các quá trình sản xuất
c
Tính thể tích hoặc diện tích các hình trong thiết kế công trình xây dựng
d
Giải trí nghệ thuật và mô phỏng
9/ Các chuẩn sau thì chuẩn nào không thuộc chuẩn giao diện của hệ đồ hoạ:
a
GKS
b
OPENGL
c
IEEE802.11
d
CGI
10/ Tỷ số phương (aspect ratio) của màn hình là 1,4 vậy một hình tròn khi hiển thị trên màn
hình đó sẽ cho:
a
Hình ellipse nằm ngang (bán kính theo trục x dài hơn bán kính theo trục y)
b
Hình tròn
c
Hình thoi
d
Hình ellipse đứng (bán kính theo trục x ngắn hơn bán kính theo trục y)
Loại 2:
11/ Giả sử màn hình của bạn đang sử dụng có độ phân giải (Resolution) là 1024x768 thì số
điểm ảnh của màn hình là:
a
784641
b
785408
c
786431
d
786432
2
12/ Giả sử màn hình của bạn đang sử dụng có độ phân giải (Resolution) là 640x480 thì số
điểm ảnh của màn hình là:
a
306081
b
307200
c
306082
d
307199
13/ Nếu thông tin mỗi 1 pixel trên màn hình ta dùng 8-bit. Thì bảng LUT (LookUp Table) có
số màu là:
a
256 màu
b
8 màu
c
1024 màu
d
32 màu
14/ Nếu thông tin mỗi 1 pixel trên màn hình ta dùng 10-bit. Thì bảng LUT (LookUp Table) có
số màu là:
a
1024 màu
b
32 màu
c
256 màu
d
10 màu
15/ Giả sử màn hình của bạn đang sử dụng có độ phân giải (Resolution) là 640x480 thì lệnh
sau (viết bằng ngôn ngữ C++ )
printf(“\n Tọa độ : %d”, getmaxx()-10);
Sẽ cho kết quả khi chạy chương trình:
a
Toạ độ : 631
b
Toạ độ : 629
c
Toạ độ : 630
d
Toạ độ : 640
16/ Giả sử màn hình của bạn đang sử dụng có độ phân giải (Resolution) là 640x480 thì lệnh
sau (viết bằng ngôn ngữ C++ )
printf(“\n Tọa độ : %d”, getmaxy()-20);
Sẽ cho kết quả khi chạy chương trình:
a
Toạ độ : 460
b
Toạ độ : 461
c
Toạ độ : 459
d
Toạ độ : 480
3
Loại 4:
17/ Cho màn có độ phân giải 1024x1024 và mỗi pixel được mô tả 24bít vậy video RAM của
màn hình là:
a
3 MB
b
24 MB
c
8 MB
d
1048576 bít
18/ Nếu thông tin mỗi 1 pixel trên màn hình ta dùng 16-bit. Thì bảng LUT (LookUp Table) có
số màu là:
a
16 màu
b
1024 màu
c
65536 màu
d
1016 màu
4
CHƯƠNG 2: CÁC GIẢI THUẬT SINH THỰC THỂ CƠ SỞ
Loại 1:
19/ Khi biểu diễn tường minh đoạn thẳng có dạng y=kx+m, trong đó k là hệ số góc của đoạn.
Phương trình không thể nhận giá trị k=∞.
a
Sai
b
Đúng
20/ Trong C/C++ thì hàm pixel(300,200,RED) vẽ một điểm tại toạ độ (299,199) với màu đỏ.
a
Đúng
b
Sai
21/ Trong C/C++ thì hàm getpixel(100,200) trả về màu hiện thời tại điểm có toạ độ (100,200).
a
Đúng
b
Sai
22/ Trong C/C++ thì hàm line(20,30,300,260,RED) vẽ một đoạn thẳng có hai điểm cuối ở toạ
độ (20,30) và (300,260) với nét vẽ màu đỏ.
a
Sai
b
Đúng
23/ Đoạn mã sau là thuộc giải thuật Bresenham vẽ đoạn thẳng:
dx=x2-x1;
dy=y2-y1;
for (x=x1;x<=x2;x++){
putpixel(x,y,c);
if(p<0)
p += 2*dy;
else{
p += 2*dy - 2*dx;
y++;
}
}
a
Đúng
b
Sai
24/ Đoạn mã sau là thuộc giải thuật Bresenham vẽ đoạn thẳng:
dx=x2-x1;
dy=y2-y1;
5
for (x=x1;x<=x2;x++){
putpixel(x,y,c);
if(d<0)
d += dy;
else{
d += dy - dx;
y++;
}
}
a
Đúng
b
Sai
25/ Xây dựng giải thuật tổng quát để vẽ đoạn thẳng ta có xét hệ số k (hệ số góc của đoạn
thẳng) có tất cả các trường hợp của k:
a
1
b
8
c
4
d
2
26/ Để biểu diễn đoạn thẳng thông qua phương trình tham số như sau:
a
f(x,y)=0 hay ax + by +c =0
b
x(v)=x 1 +v(x2 -x1 ) và y(v) = y 1 +v(y2 -y1) có v Є [0,1]
c
P(u) = P + u(P -P ) có u Є [0,1]
d
y=f(x) hay y=kx+b
1
2
1
27/ Trong giải thuật Bresenham (vẽ đoạn thẳng) dùng biểu diễn đoạn thẳng là:
a
Phương trình không tường minh
b
Phương trình tường minh
c
Phương trình các điểm gần với đoạn thẳng
d
Phương trình tham số
Loại 2:
28/ Trong giải thuật Midpoint (vẽ đoạn thẳng) dùng biểu diễn đoạn thẳng là:
a
Phương trình không tường minh
b
Phương trình tường minh
c
Phương trình điểm giữa
d
Phương trình tham số
29/ Giải thuật sau là giải thuật nào đã học?
6
void Function(int xt, int yt, int r, int c){
int x, y, d;
x = 0;
y = r;
d = 3 - 2 * r;
while (x <= y){
putpixel(xt + x, yt + y, c);
putpixel(xt - x, yt + y, c);
putpixel(xt + x, yt - y, c);
putpixel(xt - x, yt - y, c);
putpixel(xt + y, yt + x, c);
putpixel(xt - y, yt + x, c);
putpixel(xt + y, yt - x, c);
putpixel(xt - y, yt - x, c);
if (d < 0)
d += 4 * x + 6;
else{
d += 4 * (x-y) + 10;
y--;
}
x++;
}}
a
Giải thuật Bresenham xây dựng đường tròn b
Giải thuật Midpoint xây dựng đường tròn
c
Giải thuật Bresenham xây dựng đường ellipse d
Giải thuật Midpiont xây dựng đường ellipse
30/ Giải thuật sau là giải thuật nào đã học?
void Function(int xt, int yt, int r, int c){
int x, y, d;
x = 0;
y = r;
d = 1 - r;
while (x <= y){
putpixel(xt + x, yt + y, c);
putpixel(xt - x, yt + y, c);
putpixel(xt + x, yt - y, c);
putpixel(xt - x, yt - y, c);
putpixel(xt + y, yt + x, c);
putpixel(xt - y, yt + x, c);
7
putpixel(xt + y, yt - x, c);
putpixel(xt - y, yt - x, c);
if (d < 0)
d += 2 * x + 3;
else{
d += 2* (x-y) + 5;
y--;
}
x++;
}}
a
Giải thuật Midpoint xây dựng đường tròn
b
Giải thuật Bresenham xây dựng đường tròn
c
Giải thuật Midpiont xây dựng đường ellipse
d
Giải thuật Bresenham xây dựng đường ellipse
31/ Giải thuật sau là giải thuật:
.#define ROUND(a) ((long)(a+0.5))
void plot(int xc, int yc, int x, int y, int color){
putpixel(xc+x, yc+y, color);
putpixel(xc-x, yc+y, color);
putpixel(xc+x, yc-y, color);
putpixel(xc-x, yc-y, color);
}
void Function(int xc, int yc, int xRadius, int yRadius, int color){
long x, y, px, py, rx2, ry2, p;
x = 0;
y = yRadius;
rx2 = xRadius * xRadius;
ry2 = yRadius * yRadius;
px = 0;
py = 2 * rx2 * y;
plot(xc, yc, x,y, color);
p = ROUND(ry2-(rx2*yRadius)+(0.25*rx2));
while (px < py){
x++;
px += 2*ry2;
if (p<0)
p += ry2 + px;
else{
y--;
8
py -= 2*rx2;
p+= ry2 + px - py;
}
plot(xc, yc, x, y, color);
}
p = ROUND(ry2*(x+0.5)*(x+0.5) + rx2*(y-1)*(y-1) - rx2*ry2);
while (y>0){
y--;
py -= rx2*2;
if (p>0)
p+=rx2-py;
else{
x++;
px += ry2*2;
p += rx2 - py + px;
}
plot(xc, yc, x, y, color);
}
}
a
Giải thuật Bresenham xây dựng đường tròn
b
Giải thuật Bresenham xây dựng đường ellipse c
Giải thuật Midpoint xây dựng đường tròn
d
Giải thuật Midpiont xây dựng đường ellipse
32/ Điểm đầu nút của đoạn thẳng (-2,6) và (6,18), tính giá trị của k a
k= 3
b
k= -6
c
k= 1.5 d
k= -3
33/ Điểm đầu nút của đoạn thẳng (-2,-6) và (3,-2), tính giá trị của k a
k= -0.8
b
k= 3
c
k= 0.8 d
k= 1.5
34/ Giải thuật sau là giải thuật nào?
Funtion(int X[], int Y[]) {
for(int i=0;i<=6;i++)
9
line(X[i],Y[i],X[i+1],Y[i+1]);
line(X[i+1],Y[i+1],X[0],Y[0]);
}
a
Giải thuật vẽ đường bao đa giác với số đỉnh là 8
b
Giải thuật tô đa giác với số đỉnh là 7
c
Giải thuật vẽ đường bao đa giác với số đỉnh là 7
d
Giải thuật vẽ đường bao đa giác với số đỉnh là 6
35/
Giải thuật sau là giải thuật nào?
Funtion(int X[], int Y[]) {
for(int i=0;i<6;i++)
line(X[i],Y[i],X[i+1],Y[i+1]);
line(X[i+1],Y[i+1],X[0],Y[0]);
}
a
Giải thuật vẽ đường bao đa giác với số đỉnh là 7
b
Giải thuật vẽ đường bao đa giác với số đỉnh là 5
c
Giải thuật tô đa giác với số đỉnh là 6
d
Giải thuật vẽ đường bao đa giác với số đỉnh là 6
36/ Chọn phương án đúng nhất, trong đó (xc,yc) là toạ độ tâm của đường tròn và r là bán
kính của đường tròn.
.#include <stdio.h>
.#include <conio.h>
.#include <graphics.h>
void main(){
int gr_drive = DETECT, gr_mode;
int xc=getmaxx()/2, yc=80, r=50 ;
initgraph(&gr_drive, &gr_mode, "");
circle( int xc, int yc, int r);
closegraph();
}
a
Đường tròn ở giữa, phía phải màn hình
b
Đường tròn ở giữa, phía trái màn hình
c
Đường tròn ở giữa, phía trên màn hình
d
Đường tròn ở giữa, phía dưới màn hình
37/ Chọn phương án đúng nhất, trong đó (xc,yc) là toạ độ tâm của đường tròn và r là bán
kính của đường tròn.
.#include <stdio.h>
.#include <conio.h>
.#include <graphics.h>
10
void main(){
int gr_drive = DETECT, gr_mode;
int xc=getmaxx()-100, yc=getmaxy()/2, r=50 ;
initgraph(&gr_drive, &gr_mode, "");
circle( int xc, int yc, int r);
closegraph();
}
a
Đường tròn ở giữa, phía trên màn hình
b
Đường tròn ở giữa, phía bên trái màn hình
c
Đường tròn ở giữa, phía bên phải màn hình
d
Đường tròn ở giữa, phía dưới màn hình
38/ Khi xây dựng giải thuật vẽ đường tròn đầy đủ ta chỉ cần viết phương trình cho 1/8
đường tròn, rồi gọi đối xứng 8 cách. Khi đó xảy ra hiện tượng overstrike. Vậy điểm xảy ra hiện
tượng đó là: (r là bán kính của đường tròn)
a
b
(0,r) hoặc (0,-r) hoặc (r,0) hoặc (-r,0)
c
(r,0) hoặc (0,r)
d
39/ Ta có hàm sau: line(getmaxx(),0,0,getmaxy()); là vẽ một đoạn thẳng có 2 điểm cuối là:
(viết bằng C++)
a
Góc trái trên và góc phải dưới của màn hình
b
ở giữa bên dưới và góc trái trên của màn hình
c
ở giữa bên trên và góc phải dưới màn hình
d
Góc trái dưới và góc phải trên của màn hình
40/
Ta có hai hàm sau (viết bằng C++):
moveto(getmaxx()/2,0);
lineto(0, getmaxy());
Là vẽ một đoạn thẳng có hai điểm cuối là:
a
ở giữa bên phải và góc trái trên màn hình
b
ở giữa bên dưới và góc phải trên màn hình
c
ở giữa bên trái và góc phải dưới màn hình
d
ở giữa bên trên và góc trái dưới màn hình
11
41/
Giải thuật sau là giải thuật gì?
void Function (int x, int y, int c1, int c2){
if (getpixel(x, y) == c1){
putpixel(x, y, c2); Function
(x-1, y, c1, c2); Function
(x+1, y, c1, c2); Function
(x+1, y+1, c1, c2); Function
(x-1, y-1, c1, c2); Function
(x, y-1, c1, c2);
Function (x, y+1, c1, c2);
}
}
a
Giải thuật tô màu dòng quét dùng 6 điểm lân cận
b
Giải thuật tô màu dùng đệ qui để tô vùng kín dùng mẫu tô
c
Giải thuật tô màu loang dùng 6 điểm lân cận
d
Giải thuật tô màu loang dùng 4 điểm lân cận
42/
Giải thuật sau là giải thuật gì?
void Function (int x, int y, int c1, int c2){
if (getpixel(x, y) == c1){
putpixel(x, y, c2);
Function (x-1, y, c1, c2);
Function (x+1, y, c1, c2);
Function (x, y+1, c1, c2);
Function (x, y-1, c1, c2);
}
}
a
Giải thuật tô màu dùng đệ qui để tô vùng kín dùng mẫu tô
b
Giải thuật tô màu dòng quét dùng 4 điểm lân cận
c
Giải thuật tô màu loang dùng 4 điểm lân cận
d
Giải thuật tô màu loang dùng 6 điểm lân cận
43/ 1. Chọn phương án đúng nhất, trong đó (xc,yc) là toạ độ tâm của đường tròn và r là bán
kính của đường tròn.
.#include <stdio.h>
.#include <conio.h>
.#include <graphics.h>
void main(){
int gr_drive = DETECT, gr_mode;
int xc=100, yc=80, r=50 ;
initgraph(&gr_drive, &gr_mode, "");
12
circle( int xc, int yc, int r);
closegraph();
}
a
Đường tròn ở góc phải, phía dưới màn hình
b
Đường tròn ở góc trái, phía dưới màn hình
c
Đường tròn ở góc trái, phía trên màn hình
d
Đường tròn ở góc phải, phía trên màn hình
44/
Phương trình không tường minh cho đường tròn là: (r là bán kính của đường tròn)
a
f(x,y)=x2 +y2 -r2 =0
b
f(x,y)=b2x2 + a2y2 - a2b2 =0
c
(x-1)2 + (y-1)2 = (r-1)2
d
f(x +1,y -1/2)=0
i
i
45/ Phương trình không tường minh cho đường ellipse là : (ra là bán kính theo trục ox, rb là
bán kính theo trục oy và (xc,yc) là toạ độ tâm):
a
f(x,y) = rb2(xc+x)2 + ra2(yc+y)2 - ra2rb2 = 0
b
f(x,y)=(xc+x)2/ra2 + (yc+y)2/rb2 - ra2rb2 =0
c
f(x i +1,y i-1/2) = 0
d
ra2(xc+x)2 + rb2(yc+y)2 - ra2rb2=0
46/ Theo giải thuật Midpoint vẽ đoạn thẳng thì d = f(x +1,y +1/2) - trung điểm, với giá trị nào
i
i
i
của di để trung điểm nằm dưới đoạn thẳng:
a
d i=0
b
d <0
c
d= d
d
d >0
i
i
i+1
i
Loại 3:
47/
Theo giải thuật Midpoint vẽ đường cong (tròn, ellipse…) thì d = f(x +1, y -1/2)-trung
i
i
i
điểm, với giá trị nào của d để trung điểm nằm ngoài đường cong:
i
a
d =d
b
d =0
c
d i>0
d
d i<0
i
i+1
i
13
48/
Giải thuật vẽ đoạn thẳng sau vẽ cho trường hợp k là:
void Midline(int x1,int y1,int x2,int y2,int c){
int x=x1,y=y1,dx=x2-x1,dy=y2-y1,p=2*dx-dy;
while(y
if(p<=0){
p=p+2*dx;
}
else{
p=p+2*dx-2*dy;
x++;
}
y++;
}}
a
k>1
b
0<= k<=1 c
k<=-1
d
49/
-1
Giải thuật vẽ đoạn thẳng sau vẽ cho trường hợp k là:
void Midline(int x1,int y1,int x2,int y2,int c){
int x=x1,y=y1,dx=x2-x1,dy=y2-y1,p=-2*dy+dx;
while(x
if(p<=0){
p=p+2*dx-2*dy;
y++;
}
else
p=p-2*dy;
x++;
}}
a
0<= k<=1 b
k>1
c
d
50/
-1
k<=-1
Giải thuật vẽ đoạn thẳng sau vẽ cho trường hợp k là:
void Midline(int x1,int y1,int x2,int y2,int c){
int x=x1,y=y1,dx=x2-x1,dy=y2-y1,p=2*dy+dx;
14
while(x
putpixel(x,y,c);
if(p<=0){
p=p+2*dy+2*dx;
y--;
}
else{
p=p+2*dy;
}
x++;
}}
a
-1
b
k<-1
c
0<=k<=1
d
k>1
51/
Giải thuật vẽ đoạn thẳng sau vẽ cho trường hợp k là:
void Midline(int x1,int y1,int x2,int y2,int c) {
int x=x1,y=y1,dx=x2-x1,dy=y2-y1,p=-2*dx-dy;
while(y>y2) {
putpixel(x,y,c);
if(p<=0) {
p=p-2*dx-2*dy;
x++;
}
else {
p=p-2*dx;
}
y--;
}
}
a
k>1
b
k<-1
c
-1
d
0<=k<=1
52/
Giải thuật sau là giải thuật gì?
void Function (int x, int y, int c1, int c2){
if (getpixel(x, y) == c1){
putpixel(x, y, c2);
15
Function (x-1, y, c1, c2);
Function (x+1, y, c1, c2);
Function (x, y+1, c1, c2);
Function (x, y-1, c1, c2);
Function (x-1, y-1, c1, c2);
Function (x+1, y-1, c1, c2);
Function (x-1, y+1, c1, c2);
Function (x+1, y+1, c1, c2);
}
}
a
Giải thuật tô màu mẫu tô dùng 8 điểm lân cận
b
Giải thuật tô màu đường biên dùng 8 điểm lân cận
c
Giải thuật tô màu gọi đệ qui
d
Giải thuật tô màu dòng quét dùng 8 điểm lân cận
53/ 1. Chọn phương án đúng nhất, có (x1,y1) là toạ độ của góc trái trên của hình chữ nhật và
(width,height) là kích thước cạnh dài và cạnh ngắn của hình chữ nhật.
.#include <stdio.h>
.#include <conio.h>
.#include <graphics.h>
void Function(int x1, int y1, int width, int height){
line(x1,y1,x1+width,y1);
line(x1+width,y1,x1+width,y1+height);
line(x1+width,y1+height,x1,y1+height);
line(x1,y1+height,x1,y1);
}
void main(){
int gr_drive = DETECT, gr_mode;
int x1=10, y1=10, width=100, height=50;
initgraph(&gr_drive, &gr_mode, "");
Function(x1,y1,width,height);
closegraph();
}
a
Hình chữ nhật ở góc phải, phía dưới màn hình
b
Hình chữ nhật ở góc trái, phía trên màn hình
c
Hình chữ nhật ở góc phải, phía trên màn hình
d
Hình chữ nhật ở góc trái, phía dưới màn hình
54/ Chọn phương án đúng nhất, có (x1,y1) là toạ độ của góc trái trên của hình chữ nhật và
(width,height) là kích thước cạnh dài và cạnh ngắn của hình chữ nhật.
.#include <stdio.h>
16
.#include <conio.h>
.#include <graphics.h>
void Function(int x1, int y1, int width, int height){
line(x1,y1,x1-width,y1);
line(x1-width,y1,x1-width,y1+height);
line(x1-width,y1+height,x1,y1+height);
line(x1,y1+height,x1,y1);
}
void main(){
int gr_drive = DETECT, gr_mode;
int x1=getmaxx()-20, y1=10, width=100, height=50;
initgraph(&gr_drive, &gr_mode, "");
Function(x1,y1,width,height);
closegraph();
}
a
Hình chữ nhật ở góc phải, phía trên màn hình
b
Hình chữ nhật ở góc trái, phía trên màn hình
c
Hình chữ nhật ở góc trái, phía dưới màn hình
d
Hình chữ nhật ở góc phải, phía dưới màn hình
55/ Chọn phương án đúng nhất, có (xc,yc) là toạ độ tâm của hình chữ nhật và (width,
height) là kích thước cạnh dài và cạnh ngắn của hình chữ nhật.
.#include <stdio.h>
.#include <conio.h>
.#include <graphics.h>
void Function(int xc, int yc, int width, int height){
line(xc-width/2,yc-height/2,xc+width/2,yc-height/2);
line(xc+width/2,yc-height/2,xc+width/2,yc+height/2);
line(xc+width/2,yc+height/2,xc-width/2,yc+height/2);
line(xc-width/2,yc+height/2,xc-width/2,yc-height/2);
}
void main(){
int gr_drive = DETECT, gr_mode;
int xc=getmaxx()-20, yc=getmaxy()-10, width=100, height=50;
initgraph(&gr_drive, &gr_mode, "");
Function(xc,yc,width,height);
closegraph();
}
a
Hình chữ nhật ở góc trái, phía dưới màn hình
b
Hình chữ nhật ở góc phải, phía trên màn hình
c
Hình chữ nhật ở góc trái, phía trên màn hình
17
d
Hình chữ nhật ở góc phải, phía dưới màn hình
56/ Chọn phương án đúng nhất, có (xc,yc) là toạ độ tâm của hình chữ nhật và (width,
height) là kích thước cạnh dài và cạnh ngắn của hình chữ nhật.
.#include <stdio.h>
.#include <conio.h>
.#include <graphics.h>
void Function(int xc, int yc, int width, int height){
line(xc-width/2,yc-height/2,xc+width/2,yc-height/2);
line(xc+width/2,yc-height/2,xc+width/2,yc+height/2);
line(xc+width/2,yc+height/2,xc-width/2,yc+height/2);
line(xc-width/2,yc+height/2,xc-width/2,yc-height/2);
}
void main(){
int gr_drive = DETECT, gr_mode;
int xc=20, yc=getmaxy()-10, width=100, height=50;
initgraph(&gr_drive, &gr_mode, "");
Function(xc,yc,width,height);
closegraph();
}
a
Hình chữ nhật ở góc trái, phía dưới màn hình
b
Hình chữ nhật ở góc trái, phía trên màn hình
c
Hình chữ nhật ở góc phải, phía trên màn hình
d
Hình chữ nhật ở góc phải, phía dưới màn hình
57/ Để vẽ đường ellipse ta chỉ cần xây dựng giải thuật vẽ ¼ đường ellpise sau đó lấy đối
xứng. Hàm sau là hàm lấy đối xứng 4 điểm (vẽ 4 điểm 1 lúc). Rất tiếc là trong hàm bị thiếu 1
lệnh nên hình ellipse khi hiển thị trên màn hình sẽ thiếu ¼ hình ở:
void plot(int xc, int yc, int x, int y, int color) { // xc, yc là toạ độ tâm của ellipse
putpixel(xc+x, yc+y, color);
putpixel(xc-x, yc+y, color);
putpixel(xc+x, yc-y, color);
}
a
Trái dưới
b
Trái trên
c
Phải trên
d
Phải dưới
58/ Để vẽ đường ellipse ta chỉ cần xây dựng giải thuật vẽ ¼ đường ellpise sau đó lấy đối
xứng. Hàm sau là hàm lấy đối xứng 4 điểm (vẽ 4 điểm 1 lúc). Rất tiếc là trong hàm bị thiếu 1
lệnh nên hình ellipse khi hiển thị trên màn hình sẽ thiếu ¼ hình ở:
18
void plot(int xc, int yc, int x, int y, int color) { // xc, yc là toạ độ tâm của ellipse
putpixel(xc+x, yc+y, color);
putpixel(xc-x, yc+y, color);
putpixel(xc-x, yc-y, color);
}
a
Trái
trên
b
Trái
dưới
c
Phải
dưới
d
Phải trên
59/
Theo lý thuyết đã được học thì phát biểu (kèm hình minh hoạ) nào là đúng nhất?
void Function (int x, int y, int c1, int c2){
if (getpixel(x, y) == c1){
putpixel(x, y, c2);
Function (x-1, y, c1, c2); Function
(x+1, y, c1, c2); Function (x+1, y+1,
c1, c2); Function (x-1, y-1, c1, c2);
Function (x, y-1, c1, c2); Function
(x, y+1, c1, c2);
}
}
a
b
c
d
60/ Chương trình sau đưa ra chữ:
.#include <stdio.h>
.#include <conio.h>
.#include <graphics.h>
19
void main(){
int gr_drive = DETECT, gr_mode;
int x=getmaxx()/3, y=getmaxy()/2;
initgraph(&gr_drive, &gr_mode, "");
moveto(x,y);
lineto(x,80);
lineto(x+50,y); lineto(x+50,80);
getch(); closegraph();
}
a
N
b
T
c
H
d
A
61/ Chương trình sau đưa ra chữ:
.#include <stdio.h>
.#include <conio.h>
.#include <graphics.h>
void main(){
int gr_drive = DETECT, gr_mode; int
x=getmaxx()/3, y=getmaxy()/2;
initgraph(&gr_drive, &gr_mode, "");
moveto(x,y); lineto(x,40); lineto(x,40);
moveto(x,y); lineto(x+50,y);
lineto(x+50,y-80);
getch(); closegraph();
}
a
V
b
K
c
M
d
U
Loại 4:
62/ Đoạn thẳng có 2 điểm cuối là (1,1) và (8,5). Dùng thuật toán Bresenham vẽ đoạn
thẳng tính các giá trị tại x=3.
a
p=5 và y=3
b
p=2 và y=4
c
p=-3 và y= 2
d
p=-3 và y= 3
63/ Đoạn thẳng có 2 điểm cuối là (1,1) và (8,5). Dùng thuật toán Midpoint vẽ đoạn thẳng
tính các giá trị tại x=3.
20
a
d=4 và y=3 b
d=-
3 va y=3 c d=-2 và y=2
d
64/
d=2 và y=2
Chương trình sau đưa gì ra hình nào:
.#include <graphics.h>
.#include <conio.h>
void Function(int xc, int yc, int r, int c){
int x, y, d;
x = 0;
y = r;
d = 3 - 2 * r;
while (x <= y){
putpixel(xc + x, yc + y, c);
putpixel(xc - x, yc + y, c);
putpixel(xc - x, yc - y, c);
putpixel(xc + y, yc - x, c);
putpixel(xc - y, yc - x, c);
if (d < 0)
d += 4 * x + 6;
else{
d += 4 * (x-y) + 10;
y--;
}
x++;
}
}
void main(){
int gr_drive = DETECT, gr_mode; initgraph(&gr_drive,
&gr_mode, ""); Function(getmaxx() / 2, getmaxy() / 2,
150, 4); getch();
closegraph();
}
a
b
c
d
21
65/
Chương trình sau đưa gì ra hình nào:
.#include <graphics.h>
.#include <conio.h>
.#define ROUND(a) ((long)(a+0.5))
void plot(int xc, int yc, int x, int y, int color){
putpixel(xc+x, yc+y, color);
putpixel(xc-x, yc+y, color);
putpixel(xc-x, yc-y, color);
}
void Bresenham_Ellipse(int xc, int yc, int xRadius, int yRadius, int color){
long x, y, px, py, rx2, ry2, p;
x = 0;
y = yRadius;
rx2 = xRadius * xRadius;
ry2 = yRadius * yRadius;
px = 0;
py = 2 * rx2 * y;
plot(xc, yc, x,y, color);
p = ROUND(ry2-(rx2*yRadius)+(0.25*rx2));
while (px < py){
x++;
px += 2*ry2;
if (p<0)
p += ry2 + px;
else{
y--;
py -= 2*rx2;
p+= ry2 + px - py;
}
plot(xc, yc, x, y, color);
}
p = ROUND(ry2*(x+0.5)*(x+0.5) + rx2*(y-1)*(y-1) - rx2*ry2);
while (y>0) {
y--;
py -= rx2*2;
if (p>0)
p+=rx2-py;
else{
x++;
px += ry2*2;
22
p += rx2 - py + px;
}
plot(xc, yc, x, y, color);
}
}
void main(){
int gr_drive = DETECT, gr_mode; initgraph(&gr_drive,
&gr_mode, ""); Bresenham_Ellipse(getmaxx() / 2, getmaxy() /
2, 150, 80, 4); getch();
closegraph();
}
a
b
c
d
23
CHƯƠNG 3: CÁC PHÉP BIẾN ĐỔI ĐỒ HOẠ
Loại 1:
66/
a
Sai
b
Đúng
67/ Trong mặt phẳng, tìm phương án không đúng khi biểu diễn một điểm:
a
[1 6]
b
c
[x y h]
d
[4 -20 0]
68/ Trong mặt phẳng toạ độ vector của 1 điểm là [3 -1.5] khi điểm biểu diễn ở dạng toạ độ
đồng nhất có thể là [3 -1.5 2].
a
Đúng
b
Sai
69/ Trong mặt phẳng toạ độ vector của 1 điểm là [2 -0.5] khi điểm biểu diễn ở dạng toạ độ
đồng nhất có thể là
[4 -1 2] và [-10 2.5 -5 ].
a
Sai
b
Đúng
70/ Trong 3D toạ độ vector của điểm P(-1,3,6) vậy trong các toạ độ sau toạ độ nào không
phải là toạ độ đồng nhất của P:
a
(-a, 3a, 6a, a) trong đó a ≠ 0
b
(- 0.5, 1.5, 3, 0.5)
c
(-2, 6,12,2)
d
(-2, 6, 12)
71/ Trong mặt phẳng khi quay một đối tượng một góc a sau đó quay tiếp một góc b cũng
bằng với việc quay
đối tượng đó một góc b rồi quay tiếp một góc a.
a
Sai
24
b
Đúng
72/ Ta có Tv = [T-a,oy]x[Tb,ox] , trong đó [T-a,oy] và [Tb,ox] là quay đối tượng quanh oy một
góc -a sau đó quay đối tượng quanh trục ox một góc b. Ta sẽ có [Tv -1 ] = [T-b,ox]x[Ta,oy],
trong đó [T-b,ox] và [Ta,oy] là quay đối tượng quanh trục ox một góc -b sau đó quay quanh
trục oy một góc a.
a
Đúng
b
Sai
73/ Ta có 4 phép biến đổi lần lượt là T1, T2, T3, T4. Khi biến đổi đối tượng P lần lượt qua T1,
rồi tiếp tục T2, T3 và T4
cũng giống như biến đổi nó qua Tth. Trong đó Tth = T1x T3 x T2xT4.
a
Sai
b
Đúng
74/ Ta có 5 phép biến đổi lần lượt là T1, T2, T3, T4 và T5. Khi biến đổi đối tượng P lần lượt
qua T1, rồi tiếp tục T2, T3, T4 và T5 cũng giống như biến đổi nó qua Tth. Trong đó Tth = T1x
T2 x T3xT4xT5.
a
Đúng
b
Sai
75/ Trong mặt phẳng phép đối xứng qua trục oy là:
a
b=c=0, d=1 và a=-1
b
b=c=d=1 và a=-1
c
b=c=a=1 và d=-1
d
b=c=0, a=1 và d=-1
76/ Trong mặt phẳng phép đối xứng qua trục ox là:
a
b=c=0, a=1 và d=-1
b
b=c=d=1 và a=-1
c
b=c=0, d=1 và a=-1
d
b=c=a=1 và d=-1
77/ Trong mặt phẳng phép đối xứng qua tâm O là:
a
b=c=1 và a=d=0
b
b=c=0 và a=d=1
c
b=c=0 và a=d=-1
d
b=c=-1 và a=d=0
78/ Trong mặt phẳng làm béo một đối tượng gấp 2 lần ban đầu là:
a
b=c=0, a=2 và d=1
25