You are on page 1of 7

BÀI KIỂM TRA SỐ 1

Câu 1:
a) Trình bày các phép biến đổi hình học hai chiều. Xây dựng các phép biến
đổi đó.
b) Giải thích tại sao chỉ chọn cung 1/8 đường tròn để vẽ rồi lấy đối xứng mà
không mở rộng cho cung 1/16 hay 1/32.
c) Giải thích tại sao có thể thay công thức P 0=5/4-R bằng công thức P0=1-R khi
cài đặt trong thuật toán MidPoint vẽ đường tròn .
Bài làm:
a. Các phép biến đổi hình học hai chiều:
- Bản chất của phép biến đổi hình học là thay đổi các mô tả về tọa độ của
đổi tượng, từ đó làm đối tượng thay đổi về hướng, kích thước, hình dạng
- Có hai quan điểm về phép biến đổi: biến đổi đối tượng và biến đổi hệ tọa
độ
- Phép biến đổi hình học là các phép ánh xạ tọa độ điểm hay vecto thành
tọa độ điểm hay vecto khác
- Các phép biến đổi hình học cơ sở: phép biến đổi affine là phép biến đổi
với f(x,y) và g(x,y) là các hàm tuyến tính. Phép biến đổi này có dạng:
x' =ax+ cy +e
{ y ' =bx+ dy +f
,a,b,c,d,e,f ∈ R, ad-bc≠ 0
- Phép tịnh tiến:
+ Phép tịnh tiến dùng để dịch chuyển đối tượng từ vị trí này sang vị trí
khác
+ Nếu gọi trx và try lần lượt là độ dời theo trục hoành và trục tung thì tọa
độ của điểm mới Q(x’,y’) sau khi tịnh tiến điểm P(x,y) là:

(trx,try) được gọi là vector tịnh tiến hay vector độ dời


+ Biểu diễn ma trận:

Minh họa:
#include <iostream>
#include <graphics.h>
using namespace std;
int main()
{
initwindow(500,500);
line(50,100,100,50);
int tx,ty;
cout<<"Nhap vecto do doi: ";
cin>>tx>>ty;
line(50+tx,100+ty,100+tx,50+ty);
getch();
return 0;
}
Ta có đoạn thẳng ban đầu có tọa độ điểm đầu và điểm cuối là: (50,100),
(100,50)

Sau khi tịnh tiến với vecto độ dài là (tx,ty) ta có đoạn thẳng:
- Phép biến đổi tỷ lệ:
+ Phép biến đổi tỷ lệ làm thay đổi kích thước đối tượng. Để co hay dãn
tọa độ của một điểm P(x,y) theo trục hoành và trục tung lần lượt là sx và
sy, ta nhân sx và sy lần lượt cho các tọa độ của P
+ Khi các giá trị sx và sy nhỏ hơn 1, phép biến đổi sẽ thu nhỏ đối tượng,
nếu lớn hơn 1 sẽ phóng to đối tượng. Khi sx và sy bằng nhau, ta gọi đó là
phép đồng dạng.
+ Tâm tỉ lệ không bị thay đổi qua phép biến đổi tỉ lệ
+ Khi thu nhỏ đối tượng, đối tượng sẽ được dời về gần gốc tọa độ hơn,
ngược lại khi phóng to đối tượng thì đối tượng sẽ dời xa gốc tọa độ hơn
+ Biểu diễn ma trận:

Minh họa:
#include <iostream>
#include <graphics.h>
using namespace std;
int main()
{
float sx,sy;
cout<<"Nhap he so ty le: ";
cin>>sx>>sy;
initwindow(500,500);
line(50,100,100,50);
line(100,50,200,60);
line(200,60,50,100);
line(50*sx,100*sy,100*sx,50*sy);
line(100*sx,50*sy,200*sx,60*sy);
line(200*sx,60*sy,50*sx,100*sy);
getch();
return 0;
}
Với hệ số tỷ lệ là (3,4) ta được hình
- Phép quay:
+ Phép quay làm thay đổi hướng của đối tượng
+ Phép quay đòi hỏi phải có tâm quay, góc quay. Góc quay dương
thường ngược chiều kim đồng hồ. Ta có công thức biến đổi của phép
quay điểm P(x,y) quang gốc tọa độ 1 góc α

+ Ma trận biểu diễn


b. Giải thích tại sao chỉ chọn 1/8 cung tròn để vẽ rồi lấy đối xứng
Do đường tròn có tính đối xứng qua các cung 1/8, nghĩa là ứng với một điểm
có tọa độ (x,y) thuộc 1 cung bất kì, ta hoàn toàn có thể xác định 7 điểm còn
lại bằng cách lấy đối xứng qua các cung: (y,x) , (y,-x), (x,-y), (-x,-y), (-y,-x),
(-y,x), (-x,y). Từ tính chất đó nên chỉ cần vẽ 1/8 đường tròn là đủ, sau đó lấy
đối xứng sẽ được đường tròn hoàn chỉnh. Nếu chọn 1/16 hay 1/32 đường
tròn để vẽ thì sẽ khó lấy đối xứng và tất nhiên tốc độ thực hiện cũng sẽ lâu
hơn. Vì vậy chỉ cần 1/8 đường tròn là đủ
c. Giải thích tại sao có thể thay công thức P0=5/4-R bằng công thức P0=1-R
khi cài đặt trong thuật toán MidPoint vẽ đường tròn
Vì độ dài trong thuật toán này là một số nguyên dương, P0=5/4-R thì
5/4=1.25 không là một số nguyên dương nên ta làm tròn 5/4 thành 1. Vì vậy
công thức P0=5/4-R có thể thay bằng công thức P0=1-R
Câu 2:
a. Thứ tự duyệt các điểm: (2,2) -> (2,1) -> (2,0) ->(2,-1) -> (2,1) -> (1,0) ->
(3,0) -> (2,2) -> (1,1) -> (1,0) ->(1,2) ->(0,1) -> (0,0) ->(0,2) ->(-1,1) ->
(1,1) -> (2,1) -> (3,1) -> (3,0) -> (3,2) -> (2,1) -> (4,1) -> (4,0) -> (4,2) ->
(3,1) -> (5,1) -> (2,3) -> (2,2) -> (2,4) -> (2,3) -> (2,5) -> (1,4) -> (3,4) ->
(1,3) -> (1,2) -> (1,4) -> (0,3) -> (0.2) -> (0,4) -> (-1,3) -> (1,3) -> (2,3) ->
(3,3) -> (3,2) -> (3,4) -> (2,3) -> (4,3) -> (4,2) -> (4,4) -> (3,3) -> (5,3) ->
(1,2) -> (3,2)
b. Thứ tự tô của các điểm: (2,2) -> (2,1) -> (2,0) -> (1,1) -> (0,1) -> (3,1) ->
(4,1) -> (2,3) -> (2,4) -> (1,3) -> (0,3) -> (3,3) -> (4,3)

You might also like