III. CÁC THUẬT TỐN KIỂM TRA SỰ TƯƠNG QUAN GIỮA CÁC ĐỐI TƯỢNG HÌNH HỌC
5 Kiểm tra quan hệ Điểm Mặt phẳng
Cơ sở tốn học và giải thuật:
Begin
- Nhập tọa độ 3 điểm A(xa , ya , za), B(xb , yb , zb ), C ( xc , yc , zc) xác định mặt phẳng mp(ABC) (3 điểm A, B, C khơng thẳng hàng).
- Nhập tọa độ điểm D(xd , yd , zd). - Tính các vector :
vector AB = ( xb - xa , yb - ya , zb - za ) vector AC = ( xc - xa , yc - ya , zc - za ) vector AD = ( xd - xa , yd - ya , zd - za )
- Xét điểm D(xd , yd, zd) cĩ thuộc mp(ABC) khơng?
. Tính tích hữu hướng của 2 vector AB, AC là n = AB x AC cĩ dạng định thức như sau:
Hoặc cĩ thể theo cách viết dưới đây:
AB x AC = ((yb - ya )*(zc - za) - (yc - ya)*(zb - za), (zb - za )*(xc - xa) - (zc - za)*(xb - xa), (xb - xa )*(yc - ya) - (xc - xa)*(yb - ya))
. Tính tích vơ hướng của 2 véc tơ n=(AB x AC) và vector AD là (ABxAC).AD bằng dùng định thức cấp 3 với ba véc tơ AB, AC, AD như sau:
Thiết kế hệ thống kiểm tra các quan hệ hình học trang 47
yb - ya zb-za zb -za xb - xa xb - xa yb - ya yc - ya zc-za , zc -za xc - xa , xc - xa yc - ya n = xb - xa yb - ya zb - za xc - xa yc - ya zc - za xd - xa yd - ya zd - za Dt =
Dt = (AB x AC).AD
= ( xd - xa )(( yb - ya )*( zc -za ) - (yc - ya )*( zb -za ) ) + (yd - ya )(( zb -za )* (xc - xa ) - ( zc -za ) *(xb - xa ) ) + (zd - za )((xb - xa )*( yc - ya ) - (xc - xa )*( yb - ya )) . Ta xét định thức cấp 3 này
.. Nếu Dt = 0 xuất “Điểm D thuộc mp(ABC)“ .. Nếu Dt <> 0 xuất “Điểm D khơng thuộc mp(ABC)” .. Nếu Dt <> 0 tìm khoảng cách từ điểm D đến mp(ABC) Viết phương trình tổng quát của mp(ABC), cĩ 2 vector
AB = (xb - xa ,yb - ya , zb -za ) AC = (zb - za ,yc - ya , zc - za ) N = (AB x AC) = (( yb - ya )*( zc - za ) - (yc - ya )*(zb - za ), ( zb - za )* (xc - xa ) - (zc - za )*(xb - xa ), ( xb - xa )*(yc - ya ) - (xc - xa )*(yb - ya )) Nếu chúng ta đặt: A = (yb - ya )*( zc -za ) - (yc - ya )*( zb -za ) B = ( zb -za )* (xc - xa ) - ( zc -za )*(xb - xa ) C = (xb - xa )*(ya - yb ) - (xc - xa )*( xb - xa) D = -xaA - yaB - zaC .
vector n cĩ thể viết lại n =(A, B, C ) là pháp vector của mp(ABC). Và phương trình tổng quát của mặt phẳng mp(ABC) la:ø
Ax + By + Cz + D = 0 . Khoảng cách từ D(xd , yd , zd) đến mp(ABC)
ddmp(ABC) = abs( Axd + Byd + Czd + D ) / sqrt (A2 + B2 + C2 ) . . Xuất ra “ ddmp(ABC) “
- Tìm giao điểm của đường thẳng d qua D(xd, yd, zd) và vuơng gĩc với mp(ABC), cĩ vector chỉ phương là pháp vector n = (A, B, C). Phương trình tham số của đường thẳng d:
X = At + xd Y = Bt + yd Z = Ct + zd
. Thay X , Y , Z vào phương trình mặt phẳng mp(ABC): A( At + xa) + B( Bt + ya) + C(Ct + za) + D = 0
t = -(Axd + Byd + Czd + D ) / ( A2 + B2 + C2 )
. Thay t vào phương trình tham số của đường thẳng d. Ta cĩ tọa độ điểm cắt H(Xh , Yh ,Zh)
Xh = A(-(Axd + Byd + Czd + D ) / ( A2 + B2 + C2 ))+ xd
Yh = B(-(Axd + Byd + Czd + D ) / ( A2 + B2 + C2
)) + yd Zh = C(-(Axd + Byd + Czd + D ) / ( A2 + B2 + C2
)) + za . Xuất tọa độ điểm H(Xh , Yh ,Zh)
End.
6 - Kiểm tra quan hệ Đường thẳng - Đường thẳng
Cơ sở tốn học và thuật giải:
Begin
- Nhập tọa độ 2 điểm A(xa , ya , za) và B(xb , yb , zb) mà đường thẳng d đi qua.
- Nhập tọa độ 2 điểm C(xc , yc , zc) và D(xd , yd , zd) mà đường thẳng d’ đi qua.
- Tính véc tơ chỉ phương AB của đường thẳng d: AB =( xb - xa , yb - ya , zb - za )
( hay cĩ thể viết gọn hơn AB = ( a1 , a2 , a3 ) ) - Tính véc tơ chỉ phương CD của đường thẳng d’ CD = ( xd - xc , yd - yc , zd - zc )
(hay cĩ thể viết gọn hơn CD = ( b1 , b2 , b3 ) ) - Viết phương trình của đường thẳng d:
• Phương trình chính tắc:
( x - xa )/ a1 = ( y - ya )/ a2 = ( z - za )/ a3
• Hệ phương trình tổng quát của đường thẳng d : a2x - a1y + 0 + a1ya - a2xa = 0
a3x + 0 - a1z + a1za - a3xa = 0 - Viết phương trình của đường thẳng d’:
• Phương trình chính tắc:
( x - xc )/ b1 = ( y - yc )/ b2 = ( z - zc )/ b3
• Hệ phương trình tổng quát của đường thẳng d’: b2x - b1y + 0 + b1yc - b2xc = 0
b3x + 0 - b1z + b1zc - b3xc = 0
- Xét sự tương quan của đường thẳng d qua A, B và d’qua C, D: • Ta cĩ 3 vector AB, CD, AC:
Vector AB = ( xb - xa , yb - ya , zb - za ) Vector CD = ( xd - xc , yd - yc , zd - zc ) Vector AC = ( xc - xa , yc - ya , zc - za )
• Lập định thức cấp 3 của 3 vector AB, CD, AC
Thiết kế hệ thống kiểm tra các quan hệ hình học trang 49
xb - xa yb - ya zb - za xd - xc yd - yc zd - zc xc - xa yc - ya zc - za Dt =
Dt = (Ab x CD).AC
= ( xc - xa )(( yb - ya )*( zd - zc ) - ( yd - yc )*( zb -za )) + ( yc - ya )(( zd - zc )*( xc - xa ) - ( zc - za )*( xb - xa )) + ( zc - za )(( xb - xa )*( yd - yc ) - ( xd - xc )*( yb - ya ))
- Nếu (Dt<>0), xuất ra kết quả “Hai đường thẳng d và d’ chéo nhau“.
- Nếu ((Dt = 0) AND (a1 / b1 = a2 / b2 = a3 / b3)), xuất ra kết quả “ Hai đường thẳng d và d’ song song“.
- Nếu ((Dt = 0) AND (a1 / b1 = a2 / b2 = a3 / b3)AND (d, d’cĩ 2 điểm chung)), xuất ra kết quả “ Hai đường thẳng d và d’ trùng nhau“.
- Nếu ((Dt = 0) AND (a1 / b1 <> a2 / b2 <> a3 / b3)), xuất ra kết quả “Hai đừơng thẳng d và d’cắt nhau“.
- Tìm tọa độ của điểm cắt nhau giữa hai đường thẳng d và d’: • Hệ phương trình tổng quát của đường thẳng d:
a2x - a1y + 0 + a1ya - a2xa = 0 a3x + 0 - a1z + a1za - a3xa = 0 • Hệ phương trình tổng quát của đường thẳng d’:
b2x - b1y + 0 + b1yc - b2xc = 0 b3x + 0 - b1z + b1zc - b3xc = 0
• Giải các hệ phương trình tổng quát của đường thẳng d, d’: a2x - a1y + 0 + a1ya - a2xa = 0 a3x + 0 - a1z + a1za - a3xa = 0 (*) b2x - b1y + 0 + b1yc - b2xc = 0 Đặt: d1 = a1ya - a2xa d2 = a1za - a3xa d3 = b1yc - b2xc
• Hệ phương trình (*) viết lại như sau: a2x - a1y + 0 + d1 = 0 a3x + 0 - a1z + d2 = 0 b2x - b1y + 0 + d3 = 0
• Lập định thức cấp 3 cho hệ ba phương trình trên để tìm tọa độ giao điểm của đường thẳng d và d’:
• Tọa độ giao điểm của đường thẳng d, d’ là E(xgd , ygd , zgd): xgd = Dtxgd / Dtgd
ygd = Dtygd / Dtgd zgd = Dtzgd / Dtgd
- Xuất ra kết quả tọa độ giao điểm E(xgd, ygd , zgd). - Nếu (Dt <> 0) thì hai đường thẳng d và d’ chéo nhau
• Tính khoảng cách giữa đường thẳng d và d’(đoạn vuơng gĩc chung).
End.