Tải bản đầy đủ (.doc) (3 trang)

Tài liệu Thuật toán vẽ Hyperbol ppt

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (81.71 KB, 3 trang )

y’
+∞
Ax
+∞
M
P S
x
i
x
i
+1
y
i
+1
y
i
Q
|
Thuật toán vẽ Hyperbol – = 1 (A < B)
B1: Thu hẹp vùng vẽ
Vẽ cung ở góc phần tư thứ I rồi lấy đối xứng qua trục tung, trục hoành,
gốc toạ độ được các phần còn lại
B2: Phân vùng vẽ.
Xét cung ở góc phần tư thứ I có phương trình
y =
A ≤ x
y’ = → y’ > 1
Suy ra có 1 vùng vẽ:
Vùng vẽ 1: A ≤ x; ứng với y’>1
B 3.1 Vẽ vùng 1
Đặt F(x,y) = B


2
x
2
– A
2
y
2
– A
2
B
2

Biết M
i
(x
i
,y
i
)
Xác định M
i+1
(x
i+1
,y
i+1
)
x
i+1
Є { x
i

, x
i
+ 1}
y
i+1
= y
i
+ 1
Nhật xét : x tăng chậm
y tăng đều
Gọi M là trung điểm của SP
M
i
(x
i
+ 1/2 , y
i
+ 1)
Đặt P
i
= 4 F(x,y)
P
i
= 4 [B
2
(x
i
+ 1/2)
2
– A

2
(y
i
+ 1)
2
– A
2
B
2
] (1)
P
i+1
= 4 [B
2
(x
i+1
+ 1/2)
2
– A
2
(y
i+1
+ 1)
2
– A
2
B
2
]
Xét hiệu

P
i+1
– P
i
= 4 [B
2
(x
i+1
+ 1/2)
2
– A
2
(y
i+1
+ 1)
2
– A
2
B
2
]
– 4 [B
2
(x
i
+ 1/2)
2
– A
2
(y

i
+ 1)
2
– A
2
B
2
]
= 4 [B
2
(x
i+1
+ 1/2)
2
– A
2
(y
i
+ 2)
2
– A
2
B
2
]
– 4 [B
2
(x
i
+ 1/2)

2
– A
2
(y
i
+ 1)
2
– A
2
B
2
]
= 4 [B
2
((x
i+1
)
2
+ x
i+1
– (x
i
)
2
– x
i
) – A
2
(2y
i

+ 3)] (2)
Biện luận theo dấu của P
i
*Nếu P
i
< 0 → F(x,y) < 0 → M nằm ngoài (H) → điểm Q gần điểm S
Chọn điểm S để vẽ: Khi đó x
i +1
= x
i
+ 1
Thay vào (2) ta được
P
i+1
– P
i
= 4 [B
2
((x
i
+1)
2
+ (x
i
+1)

– (x
i
)
2

– x
i
) – A
2
(2y
i
+ 3)]
= 4 [B
2
(2x
i
+ 2) – A
2
(2y
i
+ 3)]
P
i+1
= P
i
+ 8 B
2
x
i
+ 8 B
2
– 8A
2
y
i

– 12A
2
(3)
*Nếu P
i
≥ 0 → F(x,y) ≥ 0 → M nằm trong (H) → điểm Q gần điểm P
Chọn điểm P để vẽ: Khi đó x
i +1
= x
i
Thay vào (2) ta được
P
i+1
- P
i
= 4[B
2
((x
i
)
2
+ x
i
– (x
i
)
2
– x
i
) – A

2
(2y
i
+ 3)]
= 4[– A
2
(2y
i
+ 3)]
P
i+1
= P
i
– 8A
2
y
i
– 8A
2
(4)
Tính P
0
ứng với điểm ban đầu M
0
(A,0)
P
0
= 4 [B
2
(A + 1/2)

2
– A
2
(0 + 1)
2
– A
2
B
2
]
= 4AB
2
– 4A + B
2

BEGIN
p=p+8B
2
x – 8A
2
y+8B
2
– 12A
2
;
x=x+1;
(A
2
-B
2

) x
2
< A
4
p = 4A
2
B - 4 A + B
2
x = A; y = 0;
Put4pixel(x,y,color);
p < 0
p=p - 8A
2
y - 12A
2
;
y = y + 1;
Put4pixel(x,y,color);
No
No
END
Yes
Yes
LƯU ĐỒ HYPERBOL
2
Thuật toán vẽ Hyperbol
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

#include <dos.h>
#include <math.h>
void InitGraph()
{
int gdriver = DETECT, gmode, errorcode;
initgraph(&gdriver, &gmode, "");
errorcode = graphresult();
if (errorcode != grOk)
{
printf("Graphics error : %s\n", grapherrormsg(errorcode));
getch();
exit(1);
}
}
void put4pixel(int x, int y)
{
int a,b;
a = getmaxx()/2;
b = getmaxy()/2;
putpixel(x + a, y + b, 12);
putpixel(-x + a, y + b, 5);
putpixel(x + a, -y + b, 4);
putpixel(-x + a, -y + b,11);
delay(20);
}
void Hyperbol()
{
float a=70, b=60,p;
float x,y;
x=a;y=0;

put4pixel(x,y);
p=4*a*b*b+b*b-a*a;
while((a*a-b*b)*x*x<a*a*a*a & y<200)
{
if(p<0)
{
p+=8*b*b*x-8*a*a*y+8*b*b-12*a*a;
x++;
}
else
p=p-8*a*a*y-12*a*a;
y++;
put4pixel((int)x,(int)y);
}
void main()
{
InitGraph();
Hyperbol();
getch() ;
closegraph();
}
3

×