Hinh hoc tinh toan Hình Hoïc Tính Toaùn Tính chaát cuûa ñoaïn thaúng Ñònh nghóa Moät toå hôïp loài cuûa hai ñieåm khaùc nhau p1 = (x1,y1) vaø p2 = (x2 ,y2) laø moät ñieåm p3 = (x3 ,y3) sao cho x3 = a[.]
Hình Học Tính Toán 25.9.2004 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 p1p2 25.9.2004 Chương 11: Giao điểm hai đoạn thẳng Tích chéo ª Định nghóa Tích chéo hai vectors p1 (x1,y1) vaø p2 (x2 ,y2) laø x1 x2 p1 p2 det y1 y2 x1 y2 x2 y1 ª Nhận xét theo chiều kim đồng – Nếu p1 p2 vectơ p1pnằm (0,0) (0, 0) hồ từ vectơ p2 p1 – Nếu p1 p2 vectơ p1 nằm ngược chiều kim đồng p1 hồ từ vectơ p2 (0, 0) (0,0) p2 – Neáu p1 p2 = O, p1 p2 thẳng hàng 25.9.2004 Chương 11: Giao điểm hai đoạn thẳ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 vectơ nằm theo chiều kim đồng hồ từ p x p1 p2 diện tích hình bình hành 25.9.2004 Chương 11: Giao điểm hai đoạn thẳng Tích chéo (tiếp) ª Nhận xét Cho hai đoạn thẳng có hướng p0p1 p0p2 Dùng phép tịnh tiến mà vectơ tịnh tiến p0 , ta thấy – Nếu (p1 p0) (p2 p0) p0p1 nằm theo chiều kim đồng hồ từ p0p2 – Nếu (p1 p0) (p2 p0) p0p1 nằm ngược chiều kim đồng hồ từ p0p2 p2 ngược chiều kim đồng hồ p0 25.9.2004 p2 p1 p1 theo chiều kim đồng hồ p0 Chương 11: Giao điểm hai đoạn thẳng 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) ª 25.9.2004 Chương 11: Giao điểm hai đoạn thẳng 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 nằm đường L L p2 thẳng.) p1 p1 p2 đt p1p2 nằm hai bên đường thẳng L L p1 25.9.2004 p2 đt p1p2 không nằm hai bên đường thẳng L Chương 11: Giao điểm hai đoạn thẳng 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 25.9.2004 Đ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 Chương 11: Giao điểm hai đoạn thẳng Xác định hai đoạn thẳng có cắt không (tiếp) øng tích chéo để xác định đoạn thẳng có nằm hai bên đườ úng hay không p2 Các tích chéo (p3 p1) p3 (p2 p1) vaø (p4 p1) (p2 p4 p1) có dấu khác nhau, đt p3 p4 naèm hai (p3 p1) (p2 p1) bên đường thẳng chứa p1 (p4 p1) (p2 p1) đt p1 p2 (và ngược laïi) p3 p1 25.9.2004 p4 p2 (p3 p1) (p2 p1) (p4 p1) (p2 p1) Các tích chéo (p3 p1) (p2 p1) vaø (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) Chương 11: Giao điểm hai đoạn thẳng 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 p2 p3 p4 (p4 p1) (p2 p1) (p3 p1) (p2 p1) p1 25.9.2004 p3 p2 p1 Chương 11: Giao điểm hai đoạn thẳng 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 cắ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 tiếp slide tới) 25.9.2004 Chương 11: Giao điểm hai đoạn thẳng 11 Xác định hai đoạn thẳng có cắt không (tiếp) (tiếp) 10 11 12 13 14 15 25.9.2004 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) Chương 11: Giao điểm hai đoạn thẳng 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 25.9.2004 Chương 11: Giao điểm hai đoạn thẳng 13 ... p3 p2 (p3 p1) (p2 p1) (p4 p1) (p2 p1) p4 p1 p4 p2 p3 p4 (p4 p1) (p2 p1) (p3 p1) (p2 p1) p1 25.9.2004 p3 p2 p1 Chương 11 : Giao điểm hai đoạn thẳng 10 Xác định hai... vectors p1 (x1,y1) p2 (x2 ,y2) laø x1 x2 p1 p2 det y1 y2 x1 y2 x2 y1 ª Nhận xét theo chiều kim đồng – Nếu p1 p2 vectơ p1pnằm (0,0) (0, 0) hồ từ vectơ p2 p1 – Nếu p1 ... 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) p3 p1 25.9.2004 p4 p2 (p3 p1) (p2 p1)