Skkn chuyên đề môn tin học hìnhhọc phẳng trong tin học

19 4 0
Skkn chuyên đề môn tin học hìnhhọc phẳng trong tin học

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

CHUYÊN ĐỀ DUYÊN HẢI HÌNH HỌC PHẲNG TRONG TIN HỌC GV: Nguyễn Như Thắng – THPT Chuyên tỉnh Lào Cai Mở đầu Có nhiều tốn hình học phẳng, quan sát mắt thường lời giải hiển nhiên, nhiên muốn lập trình máy tính để giải lại khó khăn, lại vấn đề hồn tồn khác Nhưng có kiến thức tốn hình học phẳng tốt, học sinh hồn tồn làm chủ tốn hình học phẳng lời giải nhiều lại điều đơn giản Trong Chuyên đề này, muốn chia sẻ số kiến thức tốn hình học phẳng, số vấn đề thường quan tâm hình học phẳng Có số vấn đề trình bày có nhiều thuật tốn, song tơi trình bày thuật tốn cho tối ưu Toàn code chuyên đề được thể ngôn ngữ C++ Một số đối tượng hình học phẳng 2.1 Hệ trục tọa độ Đề Các Oxy: Xem SGK Hình học 10, tiết 2.2 Điểm hệ trục tọa độ Oxy: Cho điểm M(x,y) hình vẽ, x gọi hoành độ, y gọi tung độ điểm M hệ trục tọa độ Đề Các Oxy, đó: - Giả sử x,y số ngun, biểu diễn điểm M máy tính dùng hai cách sau: typedef pair Point; - Khoảng cách điểm struct Point { int x; int y; }; , độ dài vecctor tính bằng: double dist(Point A,Point B) { return sqrt((B.x-A.x)*(B.x-A.x)+(B.y-A.y)*(B.y-A.y)); } 2.3 Đường thẳng Đường thẳng mặt phẳng xác định biết điểm A, B phân biệt nằm đường thẳng Khi đường thẳng xác định tập hợp điểm M(x,y) cho: Trang skkn Nếu tb Diện tích tam giác tính thơng qua tích có hướng vector sau: double sTriangle(Point A, Point B, Point C){ double s=(B.x-A.x)*(C.y-A.y)-(B.y-A.y)*(C.x-A.x); return abs(s/2); } Dựa vào diện tích tam giác, ta tính khoảng cách từ điểm C đến đường thẳng d qua điểm A, B sau: C A B H double dist2(Point A, Point B, Point C){ return 2*sTriangle(A,B,C)/dist(A,B); } 2.7 Đa giác: Đa giác đường gấp khúc khép kín Trong lập trình, đa giác lưu dãy đỉnh liên tiếp A 1, A2, … , AN Khi diện tích đại số đa giác không tự cắt định công thức sau: Nếu S>0 ta liệt kê đỉnh theo chiều ngược chiều kim đồng hồ Nếu S v) { int start = 0; int maxY = INT_MIN; for(int i = 0; i < v.size(); i++) { if(maxY < v[i].y) { maxY = v[i].y; start = i; } } for(int i = 0; i < v.size(); i++) { int in = start - i; if(in < 0) in += v.size(); cout ::iterator a = tmp.begin(); a != tmp.end(); a++) { bool flag = false; for(vector< Point >::iterator it = result.begin(); it != result.end(); it++) { if(a->x == it->x && a->y == it->y) { Skkn.chuyen.de.mon.tin.hoc.hinhhoc.phang.trong.tin.hocSkkn.chuyen.de.mon.tin.hoc.hinhhoc.phang.trong.tin.hocSkkn.chuyen.de.mon.tin.hoc.hinhhoc.phang.trong.tin.hocSkkn.chuyen.de.mon.tin.hoc.hinhhoc.phang.trong.tin.hocSkkn.chuyen.de.mon.tin.hoc.hinhhoc.phang.trong.tin.hocSkkn.chuyen.de.mon.tin.hoc.hinhhoc.phang.trong.tin.hocSkkn.chuyen.de.mon.tin.hoc.hinhhoc.phang.trong.tin.hocSkkn.chuyen.de.mon.tin.hoc.hinhhoc.phang.trong.tin.hoc skkn Trang 12 Skkn.chuyen.de.mon.tin.hoc.hinhhoc.phang.trong.tin.hocSkkn.chuyen.de.mon.tin.hoc.hinhhoc.phang.trong.tin.hocSkkn.chuyen.de.mon.tin.hoc.hinhhoc.phang.trong.tin.hocSkkn.chuyen.de.mon.tin.hoc.hinhhoc.phang.trong.tin.hocSkkn.chuyen.de.mon.tin.hoc.hinhhoc.phang.trong.tin.hocSkkn.chuyen.de.mon.tin.hoc.hinhhoc.phang.trong.tin.hocSkkn.chuyen.de.mon.tin.hoc.hinhhoc.phang.trong.tin.hocSkkn.chuyen.de.mon.tin.hoc.hinhhoc.phang.trong.tin.hoc flag = true; } } if( ! flag ) { pts.push_back( * a ); } } } int main() { int t; cin >> t; while(t ) { int n; cin >> n; vector< Point > pts(n); for (int i = 0; i < n; i++) cin >> pts[i].x >> pts[i].y; while (n) { vector< Point > result = convexHull(pts, n); display(result); setDifference(pts, result); n = pts.size(); } cout a.x>>a.y>>r>>n; dem=0; for (int i=1; i>b.x>>b.y; if (distSq(a,b)>r*r) dem++; } cout>a[i].y; cnt=0; for (int i=1; icnt) _max=a[i]+a[j]-O; } } cout

Ngày đăng: 29/12/2023, 03:36

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan