GV : V TT THNG NHểM 25
Trờngđạihọcđiệnlựchànội
Báo cáo kỹ thuật đồ họa máy tính
Trình bày thuật toán vẽ Ellipse midpoint,
ứng dụng xây dựng và cài đặt
ch ơng trình vẽ ellipse
- 2012-
Giáo viên h ớng dẫn: Vũ Tất Thắng
Nhóm thực hiện : Nhóm 25
Lớp : D6LT CNTT
GV : VŨ TẤT THẮNG NHÓM 25
Mục lục
Mục lục 2
A. LỜI MỞ ĐẦU 3
B. PHẦN NỘI DUNG 4
1. Giải thuật Midpoint vẽ elip 4
2. Lưu đồ 6
3. Ứng dụng thuật giải midpoint vào xây dựng chương trình vẽ ellipse 7
4. Kết quả chạy chương trình 10
GV : VŨ TẤT THẮNG NHÓM 25
A. LỜI MỞ ĐẦU
!"# $ %& ' ()
* +, " -. */0.12
-2!'00-!31456%&-
2. !' 7 & 8) 8) *
A >
0]*1
5 !"9
J) %^ A
G"
$ S /
, "D =
A M
: , ! J
&C J
&PJ%"C
%,5)_
`a/)bH c;J>A
dbH ceJ
f
H
f
g
f
-
f
h
f
J
f
ea/)bH c;>A
ia/)bH c;J>A
*Ý tưởng của giải thuật:
AG,!jD!%:/)-/CA
J;klb\D%AJ;lcS,O$HJ/>D
f
b-
huc
f
h
f
J
f
bJ/Gc
g/)%
va)!t;!"9Q⇒!!"#L
x
T
S
O
y
x
i
x
i+1
y
i -1
y
i
U
V
Q
x
gl
glc
f
g
f
b-
gl
huc
f
h
f
J
f
wG>J/GJ"C_
%
gl
h%
eJ
f
xbH
gl
glc
f
hbH
glc
f
huc
f
hb-
huc
f
y
g/)!!"#Sb%
`ac=-
gl
e-
⇒%
gl
e%
gfJ
f
H
gl
gJ
f
b= d
i
+ fx + b
2
c
g/)!!"#Lb%
g
f
bJhuc
f
h
f
J
f
eJ
f
z
f
Jg
f
n{
•SGf_S2"D"Gloq1561H
!Y,!bH
|gl
|gl
cJ"C|glr6>}U<q~
)!}<~! ~;-;A5T8)-/!Y
!<-!}s/G!"#2J;Y
dbH c,!~"5)_
A
|
edbH
|
gu.-
|
hlceJ
f
bH
|gl
guc
f
g
f
b-
|gl
hlc
f
h
f
J
f
YJ/GJ"C>/_b0Z
-
|gl
e-
hlc
A
|gl
hA
|
eJ
f
xbH
-
|gl
g
f
g/)!!"#}$A
|
va=H
|gl
eH
|
⇒A
|gl
eA
|
hf
f
-
|gl
g
f
b= e
j
– fy + a
2
c
g/)!!"#<$A
|
`a=H
|gl
2
x+12B
2
;
(A
2
+B
2
)x
2
≤ A
4
p = 4B
2
– 4A
2
B + A
2
x = 0; y = B;
Put4pixel(x,y,color);
p < 0
p=p+8B
2
x – 8A
2
y+8A
2
+12B
2
;
N
o
N
o
LƯU ĐỒ ELLIP
GV : VŨ TẤT THẮNG NHÓM 25
A
l
edbH
*
gu.-
*
hlceJ
f
bH
*
gucg
f
b-
*
hlc
f
h
f
J
f
Chú ý: J/**/0Gl)-8)Gf0
A%•!%:/)-/CAA!,>GdH.d-"
!' "!'=)_
#dene 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 Mid_ellipse(int xc, int yc, int a, int b, int color){
long x, y, fx, fy, a2, b2, p;
x = 0;
y = b;
a2 = a * a; //a2
b2 = b * b; // b2
fx = 0;
fy = 2 * a2 * y; // 2a2y
plot(xc, yc, x,y, color);
p = ROUND(b2-(a2*b)+(0.25*a)); // p=b2 - a2b + a2/4
GV : VŨ TẤT THẮNG NHÓM 25
while (fx < fy){
x++;
fx += 2*b2; //2b2
delay(50);
if (p<0)
p += b2*(2*x +3); // p=p + b2 (2x +3)
else{
y ;
p+= b2*(2*x +3) + a2*(-2*y +2); // p = p + b2(2x +3) + a2 (-2y
+2)
fy -= 2*a2; // 2a2
}
Hình ảnh 2:
GV : VŨ TẤT THẮNG NHÓM 25
Hình ảnh 3: