Bài giảng cơ sở lập trình nâng cao - Chương 9
Số trang: 39
Loại file: pptx
Dung lượng: 481.16 KB
Lượt xem: 10
Lượt tải: 0
Xem trước 4 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Bài toán 1 [Điểm có thuộc đường thẳng]: Tìm vị trí tương đối giữa điểm P(x0, y0) và đường thẳng đi qua 2 điểm A(x1, y1) và B(x2, y2). Bài toán 2 [Điểm có thuộc đoạn thẳng] : Kiểm tra điểm P(x0, y0) có thuộc đoạn thẳng nối 2 điểm A(x1, y1) và B(x2, y2)
Nội dung trích xuất từ tài liệu:
Bài giảng cơ sở lập trình nâng cao - Chương 9Chương 9 PHƯƠNG PHÁP THIẾT KẾ THUẬT TOÁN − HÌNH HỌC − 1Nội dung§ Cấu trúc dữ liệu cơ bản§ Điểm và đoạn thẳng, đường thẳng và tia§ Giao điểm 2 đoạn thẳng, đường thẳng§ Đa giác • Điểm và đa giác • Đa giác lồi • Bao lồi 2Hình ảnh 3Cấu trúc dữ liệu cơ bản§ Một số cấu trúc dữ liệu hình học cơ bản • Điểm: P(xp, yp) • Đoạn thẳng: XY • Đường thẳng: Qua 2 điểm P1, P2 • Tia: Tia AB y P y2 2 P B Y y1 1 yp P A X 0 xp x1 x x 2 4Cấu trúc dữ liệu cơ bản§ Phương trình của đường thẳng • Đường thẳng được xác định bởi 2 điểm P1(x1, y1), P2(x2, y2). x − x1 y − y1 = x2 − x1 y2 − y1 � (y 2 − y1 )( x − x1 ) − ( x2 − x1 )( y − y1 ) = 0 � (y 2 − y1 ) x + ( x1 − x2 ) y + x2 y1 − x1 y2 = 0 � (y1 − y 2 ) x + ( x2 − x1 ) y + x1y 2 − x2 y1 = 0 5Cấu trúc dữ liệu cơ bản§ Phương trình của đường thẳng • Dạng tổng quát F ( x, y ) = Ax + By + C = 0 A = (y1 − y 2 ) A = (y 2 − y1 ) B = (x 2 − x1 ) hay B = (x1 − x2 ) C = ( x1 y2 − x2 y1 ) C = ( x2 y1 − x1 y2 ) 6Cấu trúc dữ liệu cơ bản§ Đường thẳng chia mặt phẳng làm 3 phần • Phần 1: Gồm các điểm trên đường thẳng F(x,y)=0 • Phần 2: Gồm các điểm làm cho F(x,y)>0 • Phần 3: Gồm các điểm làm cho F(x,y)Cấu trúc dữ liệu cơ bản§ Khoảng cách từ điểm P(x0, y0) đến đường thẳng (d) có phương trình F(x,y)=Ax+By+C=0 Ax0 + By0 + C F ( x0 , y0 ) h= = A2 + B2 A2 + B 2 P(x0, y0) h (d) 8Cấu trúc dữ liệu cơ bản§ Đa giác: được xác định bởi tập đỉnh được liệt kê thứ tự theo chiều kim đồng (hay ngược chiều kim đồng hồ) • Đa giác lồi • Đa giác lõm 1 3 1 2 2 0 0 Lồi Lõm 4 3 5 9 Cấu trúc dữ liệu cơ bảnCTDL typedef struct PointTag { double x, y; } Point; typedef struct LineTag { double A, B, C; } Line; #define MAXPOINT 100 typedef struct PolygonTag { Point aPoints[MAXPOINT]; int n; } Polygon; 10 Cấu trúc dữ liệu cơ bảncài đặt void TaoDuongThang(Point p1, Point p2, Line &line) { line.A = line.B = line.C = } double F(Point p, Line line) { } 11 Cấu trúc dữ liệu cơ bảncài đặt double KhoangCachDiemVaDuongThang(Point p, Line line) { } 12 Cấu trúc dữ liệu cơ bảncài đặt bool CungPhia(Point A, Point B, Line line) { } 13Điểm và đoạn thẳng, đường thẳng và tia§ Bài toán 1 [Điểm có thuộc đường thẳng]: Tìm vị trí tương đối giữa điểm P(x0, y0) và đường thẳng đi qua 2 điểm A(x1, y1) và B(x2, y2)§ Thuật toán • Bước 1: Viết phương trình dưới dạng tổng quát – F(x, y) = Ax+By+C=0 • Bước 2: P thuộc đường thẳng AB nếu – F(x0, y0) = 0 14 Điểm và đoạn thẳng, đường thẳng và tiacài đặt bool DiemThuocDuongThang(Point p, Point A, Point B) { } 15Điểm và đoạn thẳng, đường thẳng và tia§ Bài toán 2 [Điểm có thuộc đoạn thẳng] : Kiểm tra điểm P(x0, y0) có thuộc đoạn thẳng nối 2 điểm A(x1, y1) và B(x2, y2)§ Thuật toán • Bước 1: Viết phương trình dưới dạng tổng quát – F(x, y) = Ax+By+C=0 • Bước 2: P thuộc đoạn AB nếu thỏa mãn các điều kiện – F(x0, y0) = 0 – Min(x1, x2)≤x0≤Max(x1, x2) – Min(y1, y2)≤y0≤Max(y1, y2) 16 Điểm và đoạn thẳng, đường thẳng và tiacài đặt bool DiemThuocDoanThang(Point p, Point A, Point B) { } 17Điểm và đoạn thẳng, đường thẳng và tia§ Bài toán 3 [Điểm có thuộc tia] : Kiểm tra điểm P(x0, y0) có thuộc tia AB không (trong đó A(x1, y1), B(x2, y2))§ P thuộc tia AB nếu uuu r uuu r AP = k AB Với k≥0 P B P A 18Điểm và đoạn thẳng, đường thẳng và tia§ Thuật toán • Bước 1: Viết phương trình dưới dạng tổng quát – F(x, y) = Ax+By+C=0 • Bước 2: P thuộc tia AB nếu thỏa mãn các điều kiện – F(x0, y0) = 0 – (x0-x1)(x2-x1)≥0 – (y0-y1)(y2-y1)≥0 ...
Nội dung trích xuất từ tài liệu:
Bài giảng cơ sở lập trình nâng cao - Chương 9Chương 9 PHƯƠNG PHÁP THIẾT KẾ THUẬT TOÁN − HÌNH HỌC − 1Nội dung§ Cấu trúc dữ liệu cơ bản§ Điểm và đoạn thẳng, đường thẳng và tia§ Giao điểm 2 đoạn thẳng, đường thẳng§ Đa giác • Điểm và đa giác • Đa giác lồi • Bao lồi 2Hình ảnh 3Cấu trúc dữ liệu cơ bản§ Một số cấu trúc dữ liệu hình học cơ bản • Điểm: P(xp, yp) • Đoạn thẳng: XY • Đường thẳng: Qua 2 điểm P1, P2 • Tia: Tia AB y P y2 2 P B Y y1 1 yp P A X 0 xp x1 x x 2 4Cấu trúc dữ liệu cơ bản§ Phương trình của đường thẳng • Đường thẳng được xác định bởi 2 điểm P1(x1, y1), P2(x2, y2). x − x1 y − y1 = x2 − x1 y2 − y1 � (y 2 − y1 )( x − x1 ) − ( x2 − x1 )( y − y1 ) = 0 � (y 2 − y1 ) x + ( x1 − x2 ) y + x2 y1 − x1 y2 = 0 � (y1 − y 2 ) x + ( x2 − x1 ) y + x1y 2 − x2 y1 = 0 5Cấu trúc dữ liệu cơ bản§ Phương trình của đường thẳng • Dạng tổng quát F ( x, y ) = Ax + By + C = 0 A = (y1 − y 2 ) A = (y 2 − y1 ) B = (x 2 − x1 ) hay B = (x1 − x2 ) C = ( x1 y2 − x2 y1 ) C = ( x2 y1 − x1 y2 ) 6Cấu trúc dữ liệu cơ bản§ Đường thẳng chia mặt phẳng làm 3 phần • Phần 1: Gồm các điểm trên đường thẳng F(x,y)=0 • Phần 2: Gồm các điểm làm cho F(x,y)>0 • Phần 3: Gồm các điểm làm cho F(x,y)Cấu trúc dữ liệu cơ bản§ Khoảng cách từ điểm P(x0, y0) đến đường thẳng (d) có phương trình F(x,y)=Ax+By+C=0 Ax0 + By0 + C F ( x0 , y0 ) h= = A2 + B2 A2 + B 2 P(x0, y0) h (d) 8Cấu trúc dữ liệu cơ bản§ Đa giác: được xác định bởi tập đỉnh được liệt kê thứ tự theo chiều kim đồng (hay ngược chiều kim đồng hồ) • Đa giác lồi • Đa giác lõm 1 3 1 2 2 0 0 Lồi Lõm 4 3 5 9 Cấu trúc dữ liệu cơ bảnCTDL typedef struct PointTag { double x, y; } Point; typedef struct LineTag { double A, B, C; } Line; #define MAXPOINT 100 typedef struct PolygonTag { Point aPoints[MAXPOINT]; int n; } Polygon; 10 Cấu trúc dữ liệu cơ bảncài đặt void TaoDuongThang(Point p1, Point p2, Line &line) { line.A = line.B = line.C = } double F(Point p, Line line) { } 11 Cấu trúc dữ liệu cơ bảncài đặt double KhoangCachDiemVaDuongThang(Point p, Line line) { } 12 Cấu trúc dữ liệu cơ bảncài đặt bool CungPhia(Point A, Point B, Line line) { } 13Điểm và đoạn thẳng, đường thẳng và tia§ Bài toán 1 [Điểm có thuộc đường thẳng]: Tìm vị trí tương đối giữa điểm P(x0, y0) và đường thẳng đi qua 2 điểm A(x1, y1) và B(x2, y2)§ Thuật toán • Bước 1: Viết phương trình dưới dạng tổng quát – F(x, y) = Ax+By+C=0 • Bước 2: P thuộc đường thẳng AB nếu – F(x0, y0) = 0 14 Điểm và đoạn thẳng, đường thẳng và tiacài đặt bool DiemThuocDuongThang(Point p, Point A, Point B) { } 15Điểm và đoạn thẳng, đường thẳng và tia§ Bài toán 2 [Điểm có thuộc đoạn thẳng] : Kiểm tra điểm P(x0, y0) có thuộc đoạn thẳng nối 2 điểm A(x1, y1) và B(x2, y2)§ Thuật toán • Bước 1: Viết phương trình dưới dạng tổng quát – F(x, y) = Ax+By+C=0 • Bước 2: P thuộc đoạn AB nếu thỏa mãn các điều kiện – F(x0, y0) = 0 – Min(x1, x2)≤x0≤Max(x1, x2) – Min(y1, y2)≤y0≤Max(y1, y2) 16 Điểm và đoạn thẳng, đường thẳng và tiacài đặt bool DiemThuocDoanThang(Point p, Point A, Point B) { } 17Điểm và đoạn thẳng, đường thẳng và tia§ Bài toán 3 [Điểm có thuộc tia] : Kiểm tra điểm P(x0, y0) có thuộc tia AB không (trong đó A(x1, y1), B(x2, y2))§ P thuộc tia AB nếu uuu r uuu r AP = k AB Với k≥0 P B P A 18Điểm và đoạn thẳng, đường thẳng và tia§ Thuật toán • Bước 1: Viết phương trình dưới dạng tổng quát – F(x, y) = Ax+By+C=0 • Bước 2: P thuộc tia AB nếu thỏa mãn các điều kiện – F(x0, y0) = 0 – (x0-x1)(x2-x1)≥0 – (y0-y1)(y2-y1)≥0 ...
Tìm kiếm theo từ khóa liên quan:
Cơ sở lập trình Giáo trình cơ sở lập trình Tài liệu cơ sở lập trình Kỹ thuật lập trình Cấu trúc dữ liệu Thuật toán ViterbiGợi ý tài liệu liên quan:
-
Đề cương chi tiết học phần Cấu trúc dữ liệu và giải thuật (Data structures and algorithms)
10 trang 317 0 0 -
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 265 0 0 -
NGÂN HÀNG CÂU HỎI TRẮC NGHIỆM THIẾT KẾ WEB
8 trang 207 0 0 -
Giới thiệu môn học Ngôn ngữ lập trình C++
5 trang 194 0 0 -
Bài giảng Nhập môn về lập trình - Chương 1: Giới thiệu về máy tính và lập trình
30 trang 166 0 0 -
Giải thuật và cấu trúc dữ liệu
305 trang 161 0 0 -
Luận văn: Nghiên cứu kỹ thuật giấu tin trong ảnh Gif
33 trang 153 0 0 -
Bài giảng Phân tích thiết kế phần mềm: Chương 1 - Trường ĐH Ngoại ngữ - Tin học TP.HCM
64 trang 150 0 0 -
Tập bài giảng Thực hành kỹ thuật lập trình
303 trang 143 0 0 -
Giáo trình Cấu trúc dữ liệu và thuật toán (Tái bản): Phần 1
152 trang 139 0 0