Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 13 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
13
Dung lượng
210,5 KB
Nội dung
HÌNH HỌC TÍNH TỐN Tính chất đoạn thẳng ª Định nghóa – Một tổ hợp lồi hai điểm khác p1 = (x1,y1) p2 = (x2 ,y2) điểm p3 = (x3 ,y3) cho x3 = α x1 + (1 − α) x2 y3 = α y1 + (1 − α) y2 ≤ α ≤ – Đoạn thẳng p1p2 tập tổ hợp lồi p1 p2 , ký hiệu đt p1p2 – Các điểm đầu mút đoạn thẳng p1p2 p1 p2 – Đoạn thẳng có hướng p1p2 đoạn thẳng p1p2 định hướng từ p1 đến p2 , ký hiệu p1→p2 Tích chéo ª Định nghóa Tích chéo hai vectors p1 = (x1,y1) vaø p2 = (x2 ,y2) laø x x p1 × p2 = det y1 y2 = x1 y2 − x2 y1 ª Nhận xét p2 p1 nằm theo chiều kim – Nếu p1 × p2 > vectơ (0,0) đồng hồ từ vectơ p2 (0, 0) p1 – Nếu p1 × p2 < vectơ p1 nằm ngược chiều p1 kim đồng hồ từ vectơ p2 (0, 0) (0,0) p – Nếu p1 × p2 = O, p1 p2 thẳng hàng Tích chéo (tiếp) y y vectơ nằm ngược chiều p kim đồng hồ từ p (0,0) p2 p1 (0,0) x x vectơ nằm theo chiều kim đồng hồ từ p p1 × p2 diện tích hình bình hành Tích chéo (tiếp) ª Nhận xét Cho hai đoạn thẳng có hướng p0→p1 p0→p2 Dùng phép tịnh tiến mà vectơ tịnh tiến − p0 , ta thấy – Nếu (p1 − p0) × (p2 − p0) > p0→p1 nằm theo chiều kim đồng hồ từ p0→p2 – Nếu (p1 − p0) × (p2 − p0) < p0→p1 nằm ngược chiều kim đồng hồ từ p0→p2 p2 ngược chiều kim đồng hồ p0 p2 p1 p1 theo chiều kim đồng hồ p0 Xác định hai đoạn thẳng có cắt không Bài toán Cho hai đoạn thẳng p1p2 p3p4 Hỏi: Hai đoạn thẳng có cắt không? Hai cách giải ª Cách giải 1: giải hệ thống phương trình bậc để tìm tọa độ điểm cắt (nếu có) Cách giải cần dùng phép chia nên không xác tử số gần ª Cách giải 2: không cần dùng phép chia (xem slide tới) ª Xác định hai đoạn thẳng có cắt không (tiếp) – Định nghóa: Một đoạn thẳng p1p2 nằm hai bên (“straddle”) đường thẳng p1 p2 nằm hai bên khác đường thẳng (Trường hợp biên: p1 hay p2 L nằm đường L p2 thẳng.) p1 p1 p2 đt p1p2 nằm hai bên đường thẳng L L p1 đt p1p2 không nằm hai bên đường thẳng L p2 Xác định hai đoạn thẳng có cắt không (tiếp) – Định lý: Hai đoạn thẳng cắt điều kiện sau (hoặc hai) ª Mỗi đoạn thẳng nằm hai bên đường thẳng chứa đoạn thẳng ª Một điểm đầu mút (điểm cuối) đoạn thẳng nằm đoạn thẳng b a Đoạn thẳng a nằm hai bên đường thẳng chứa b, đoạn thẳng b nằm hai bên đường thẳng chứa a Xác định hai đoạn thẳng có cắt không (tiếp) Dùng tích chéo để xác định đoạn thẳng có nằm hai be thẳng hay không p2 Các tích chéo (p3 − p1) × p3 (p2 − p1) (p4 − p1) × (p2 − p4 p1) có dấu khác nhau, đt p3 p4 nằm hai (p3 − p1) × (p2 − p1) < bên đường thẳng chứa p1 (p4 − p1) × (p2 − p1) > đt p1 p2 (và ngược lại) p4 p3 p1 p2 (p3 − p1) × (p2 − p1) < (p4 − p1) × (p2 − p1) < Các tích chéo (p3 − p1) × (p2 − p1) (p4 − p1) × (p2 − p1) có dấu, đt p3 p4 không nằm hai bên đường thẳng chứa đt p1 p2 (và ngược lại) Xác định hai đoạn thẳng có cắt không (tiếp) p3 p2 (p3 − p1) × (p2 − p1) < (p4 − p1) × (p2 − p1) = p4 p1 p4 p4 p2 p1 p3 (p4 − p1) × (p2 − p1) = p3 (p3 − p1) × (p2 − p1) = p2 p1 10 Xác định hai đoạn thẳng có cắt không (tiếp) – Thủ tục để kiểm tra hai đoạn thẳng p1p2 p3p4 có cắt không (mã giả) Thủ tục trả TRUE hai đoạn thẳng cắt trả FALSE chúng không caét SEGMENTS-INTERSECT(p1, p2, p3, p4) d1 ← DIRECTION(p3, p4, p1) d2 ← DIRECTION(p3, p4, p2) d3 ← DIRECTION(p1, p2, p3) d4 ← DIRECTION(p1, p2, p4) if ((d1 > and d2 < 0) or (d1 < and d2 > 0)) and ((d3 > and d4 < 0) or (d3 < and d4 > 0)) then return TRUE (xem tieáp slide tới) 11 Xác định hai đoạn thẳng có cắt không (tiếp) (tiếp) 10 11 12 13 14 15 elseif d1 = and ON-SEGMENT(p3, then return TRUE elseif d2 = and ON-SEGMENT(p3, then return TRUE elseif d3 = and ON-SEGMENT(p1, then return TRUE elseif d4 = and ON-SEGMENT(p1, then return TRUE else return FALSE p4, p1) p4, p2) p2, p3) p2, p4) 12 Xác định hai đoạn thẳng có cắt không (tiếp) Thủ tục ON-SEGMENT Input: pi , pj , pk , mà pk thẳng hàng với đoạn pi pj Output: TRUE FALSE pk nằm đoạn pi pj pk nằm đoạn pi pj DIRECTION(pi , pj , pk ) return (pk − pi ) × (pj − pi ) ON-SEGMENT(pi , pj , pk ) if min(xi , xj ) ≤ xk ≤ max(xi , xj ) and min(yi , yj ) ≤ yk ≤ max(yi , yj ) then return TRUE else return FALSE 13 ... vectơ nằm theo chiều kim đồng hồ từ p p1 × p2 diện tích hình bình hành Tích chéo (tiếp) ª Nhận xét Cho hai đoạn thẳng có hướng p0→p1 p0→p2 Dùng phép tịnh tiến mà vectơ tịnh tiến − p0 , ta thấy... (nếu có) Cách giải cần dùng phép chia nên không xác tử số gần ª Cách giải 2: không cần dùng phép chia (xem slide tới) ª Xác định hai đoạn thẳng có cắt không (tiếp) – Định nghóa: Một đoạn thẳng... không Bài toán Cho hai đoạn thẳng p1p2 p3p4 Hỏi: Hai đoạn thẳng có cắt không? Hai cách giải ª Cách giải 1: giải hệ thống phương trình bậc để tìm tọa độ điểm cắt (nếu có) Cách giải cần dùng phép