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
8. Kiểm tra quan hệ Mặt phẳng Mặt phẳng
Cơ sở tốn học và thuật giải:
Begin
- Nhập tọa độ 3 điểm A(xa, ya, za), B(xb, yb, zb ), C(xc, yc, zc) để xác định tọa độ mp(ABC)
- Nhập tọa độ 3 điểm M(xm , ym , zm), P(xp , yp , zp ), Q( xq , yq , zq) để xác định tọa độ mặt phẳng mp(MPQ).
- Tính tọa độ các véc tơ của mp( ABC) vector AB = ( xb - xa , yb - ya , zb - za ) vector AC = ( xc - xa , yc - ya , zc - za )
(3 điểm A,B,C tạo thành mp(ABC) nên vector AB khơng cùng phương với vectơ AC)
-Tính tích hữu hướng của 2 vector AB, AC là n = (AB x AC),n chính là pháp vector của mp(ABC) cĩ tọa độ :
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 .
Phương trình tổng quát của mặt phẳng mp(ABC) cĩ dạng: Ax + By + Cz + D = 0 - Tính tọa độ các vector của mặt phẳng mp(MPQ) :
vector MP = ( xp - xm , yp - ym , zp - zm ) vector MQ = (xq - xm , yq - ym , zq - zm )
(3 điểm M, P, Q tạo thành mp(MPQ) nên vector MP khơng cùng phương với vector MQ)
- Tính tích hữu hướng của 2 vector MP, MQ là m = MP x MQ, m chính là pháp vector của mp(MPQ), cĩ tọa độ :
m = MP x MQ
yp -ym zp -zm zp -zm xp -xm xp - xm yp - ym yq -ym zq -zm , zq -zm xq -xm , xq - xm yq - ym m =
hay cĩ thể viết như sau: m = MP x MQ = (( yp - ym )*( zq -zm ) - (yq - ym )*( zp -zm ), ( zp -zm )* (xq - xm ) - ( zq -zm ) *(xp - xm ), (xp - xm )*( yq - ym ) - (xq - xm )*( yp - ym )) Nếu chúng ta đặt: A1 = (yp - ym )*( zq -zm ) - (yq - ym )*( zp -zm ) B1 = ( zp -zm )* (xq - xm ) - ( zq -zm ) *(xp - xm ) C1 = (xp - xm )*(yp - ym ) - (xq - xm )*( xp - xm) D1 = -xmA1 - ymB1 - zmC1 .
Phương trình tổng quát của mặt phẳng mp(MPQ): mp(MPQ) = A1x + B1y + C1z + D1 = 0 - Xét sự tương quan của 2 mặt phẳng trên:
• Nếu (A/A1 = B/B1 = C/C1) xuất ra kết quả “Hai mặt phẳng trùng nhau“. • Nếu (A/A1 = B/B1 = C/C1 <> D/D1) xuất ra kết quả “Hai mặt phẳng song song với nhau“.
• Nếu (A/A1 <> B/B1) hoặc (B/B1 <> C/C1) hoặc(A/A1 <> C/C1)xuất ra kết quả “Hai mặt phẳng cắt nhau“.
- Hai mặt phẳng mp(ABC) và mp(MPQ) cắt nhau theo một giao tuyến là đường thẳng cĩ phương trình là hệ phương trình của hai mặt phẳng mp(ABC) và mp(MPQ):
Ax + By + Cz + D = 0 A1x + B1y + C1z + D1 = 0 - Tính tọa độ giao điểm thuộc giao tuyến:
• Nếu (A/A1 <> B/B1) thì tọa độ z cĩ thể được chọn tuỳ ý cho đơn giản, dùng định thức cấp 2 tìm tọa độ giao tuyến :
Ax + By + Cz + D = 0 A1x + B1y + C1z + D1 = 0 Ta tính được: Dx1 = AB2 - A1B Dx1= B1(-D - Ck1 ) + B( D1 + C1k1 ) Dy1= A(-D1 – C1k1 ) + A1( D + C1k1 ) Suy ra: X1 = Dx1/ D Y1 = Dy1/ D Z1= k1 ⇒ Tọa độ I(X1 , Y1 , Z1) • Tìm tọa độ điểm thứ 2: Dx2 = AB2 - A1B Dx2= B1(-D - Ck2 ) + B( D1 + C1k2 )
Dy2 = A(-D1 - C1k2 ) + A1( D + C1k2 ) X2 = Dx2/ D
Y2 = Dy2/ D Z2 = k2
⇒ Tọa độ J(X2 , Y2 , Z2)
• Xuất tọa độ 2 điểm thuộc giao tuyến J(X2, Y2 , Z2 ) và I(X1, Y1, Z1) - Nếu hai mặt phẳng song song, tính khoảng cách của 2 mặt phẳng:
• Tìm giao điểm của đường thẳng d qua điểm M( xm, ym, zm) và vuơng gĩc với mp(ABC), cĩ vector chỉ phương là pháp vector của mp(ABC) là vector n=(A,B,C).
• Viết phương trình tham số của đường thẳng d: X = At + xm Y = Bt + ym Z = Ct + zm
• Thay X, Y, Z vào phương trình mặt phẳng mp(ABC): A( At + xm)+B( Bt + ym) + C(Ct + zm) + D = 0
t = -(Axm + Bym + Czm + D ) / ( A2 + B2 + C2 ) • Thay t vào phương trình tham số của đườngthẳ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 )) + zd
• Khoảng cách hai mp(ABC) và mp(MPQ) là đoạn MH:
dmh =|MH | = sqrt ( ( xh - xm)2 + ( yh - ym )2 + ( zh - zm )2 ) • Xuất khoảng cách dmh
End.
9-Kiểm tra tính đồng phẳng của đa giác
Cơ sở tốn học:
Đa giác gọi là phẳng nếu mọi đỉnh của nĩ nằm trong một mặt phẳng. Trong trường hợp này ba đỉnh bất kỳ (khơng thẳng hàng), cĩ thể dùng để xác định mặt phẳng chứa nĩ. Khi cĩ hơn ba đỉnh, cĩ thể các điểm khơng cùng nằm trên 1 mặt phẳng. Vì vậy các ứng dụng phải kiểm tra dữ liệu để bảo đảm tính đồng phẳng.
Chọn một trong m điểm, gọi là P1, làm điểm chốt (pivot) và hình thành (m-1) vector chốt Vi=Pi-P1, với i = 2,…, m. Các vector này nằm trong cùng 1 mặt phẳng nếu
và chỉ nếu các đỉnh Pi nằm trong cùng một mặt phẳng. Ta biết ba vector đồng phẳng nếu và chỉ nếu tích bộ ba vơ hướng của chúng triệt tiêu.Vì vậy, tạo (m-3) tích bộ ba vơ hướng Vi.(V3.V2) với i=4,…., m. Nếu một trong các tích này khác zero đa giác sẽ khơng đồng phẳng.
Giải thuật:
- Tạo danh sách (n-1) vector từ đa giác P cĩ n cạnh - Vịng lặp từ i =3 đến i =n-1
+Tính tích bộ ba vơ hướng S= Vi .(V1 x V2) + Nếu (S khác 0)
Return
Đa giác khơng đồng phẳng. - Return
Đa giác đồng phẳng
10 -Tính thể tích hình lăng trụ:
Giải thuật:
- Tính S là diện tích của đa giác đáy. - Nhập h, chiều cao của hình lăng trụ. - Tính thể tích đa giác V = S*h.
11- Tính thể tích hình chĩp:
Giải thuật:
- Tính S là diện tích của đa giác đáy. - Nhập h, chiều cao của hình chĩp. - Tính thể tích V= S*h /3. 12- Tính thể tích hình nĩn: Giải thuật: - Nhập R, bán kính đáy hình nĩn. - Nhập h, chiều cao hình nĩn. - Tính thể tích V = S*h / 3 = Pi*R2*h / 3.