- Nhận biết quay trái với quay phải: Cĩ những thuật giải ta phải duyệt một đa giác, lần lượt thăm mỗi đỉnh hay cạnh Ta xem như di chuyển theo một cạnh
7 -Kiểm tra quan hệ Đườngthẳn g 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 với nhau).
- Nhập tọa độ 2 điểm E(xe , ye , ze) và F(xf, yf , zf) mà đường thẳng d đi qua.
- Tính tọa độ các vector :
AB = ( xb - xa , yb - ya , zb - za ) AC = ( xc - xa , yc - ya , zc - za )
- Tính tích hữu hướng của 2 vector AB, AC cĩ dạng định thức cấp 2 như sau (n = AB x AC chính là pháp vector của mp(ABC))
Hoặc cĩ thể viết dưới dạng như sau:
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 vector chỉ phương EF của đường thẳng d đi qua hai điểm E và F: vector EF = ( xf - xe , yf - ye , zf - ze )
( cĩ thể viết gọn lại EF = ( a1 , a2 , a3 ) ) -Viết phương trình tham số của đường thẳng d:
X = a1t + xe
Y = a2t + ye
Thiết kế hệ thống kiểm tra các quan hệ hình học trang 59
yb -ya zb -za zb -za xb -xa xb -xa yb -ya yc -ya zc -za , zc -za xc -xa , xc -xa yc -ya Ab x AC =
Luận văn tốt nghiệp
Z = a3t + ze
- Xét sự tương quan giữa đường thẳng d qua 2 điểm E, F và mp(ABC) qua 3 điểm A, B, C :
• Tính tích vơ hướng của 2 vector (AB x AC) và vector EF bằng việc sử dụng định thức cấp 3 với ba vector AB, AC, EF như sau:
vector AB = ( xb - xa , yb - ya , zb - za ) vector AC = ( xc - xa , yc - ya , zc - za ) vector EF = ( xf - xe , yf - ye , zf - ze ) Định thức cấp 3: Dt = (AB x AC).EF = ( xf - xe )(( yb - ya)*( zc - za ) - ( yc - ya )*( zb - za )) + ( yf - ye )(( zb - za )*( xc - xa ) - ( zc -za )*( xb - xa )) + ( zf - ze )(( xb - xa )*( yc - ya ) - ( xc - xa)*( yb - ya )) • Xét định thức cấp 3 này:
+ Nếu Dt = 0, xuất ra kết quả “Đường thẳng d song song hoặc chứa trong mp(ABC)“
+ Nếu Dt<>0, xuất ra kết quả “Đường thẳng d cắt mp(ABC)“ - Nếu Dt<>0, tìm tọa độ giao điểm giữa đường thẳng d và mp(ABC):
+ Phương trình tổng quát của mặt phẳng mp(ABC) cĩ dạng: Ax + By + Cz + D = 0
+ Phương trình tham số cuả đường thẳng d: X = a1t + xe
Y = a2t + ye
Z = a3t + ze
+ Thay X, Y, Z vào phương trình mặt phẳng (ABC), ta được: A( a1t + xe) + B( a2t + ye) + C(a3t + ze) + D = 0
t = -(Axe + Bye + Cze + D ) / ( Aa1 + Ba2 + Ca3 )
+ Thay t vào phương trình tham số cuả đường thẳng d, ta cĩ tọa độ giao điểm của d và mp(ABC):
Xgd = a1(-(Axe + Bye + Cze + D ) / ( Aa1 + Ba2 + Ca3 ) ) + xe
Thiết kế hệ thống kiểm tra các quan hệ hình học trang 60
xb - xa yb - ya zb - za xc - xa yc - ya zc - za xf - xe yf - ye zf - ze Dt =
Luận văn tốt nghiệp
Ygd = a2(-(Axe + Bye + Cze + D ) / ( Aa1 + Ba2 + Ca3 ) ) + ye
Zgd = a3(-(Axe + Bye + Cze + D ) / ( Aa1 + Ba2 + Ca3 ) ) + ze
+ Xuất ra tọa độ giao điểm H(xgd , ygd , zgd).
- Tính gĩc giữa đường thẳng d qua E, F và mp(ABC) qua A, B, C
Cos(AB^n) = abs(Aa1 + Ba2 + Ca3 ) / sqrt(A2 + B2 + C2) * sqrt(a12 + a22 + a32) - Đường thẳng d song song với mp(ABC). Tính khoảng cách từ đường thẳng d đến mp(ABC):
+ Viết phương trình đường thẳng d’qua điểm E và vuơng gĩc với mặt phẳng (ABC) cĩ pháp vector n=(A , B, C )
X = At + xe
Y = Bt + ye
Z = Ct + ze
+ Thay X , Y , Z vào phương trình mặt phẳng (ABC), ta được: A( At + xe) + B( Bt + ye) + C(Ct + ze) + D = 0
t = -(Axe + Bye + Cze + D ) / ( A2 + B2 + C2 )
+ Thay t vào phương trình tham số của đường d’, ta cĩ tọa độ giao điểm giữa đường thẳng d’và mp(ABC):
Xh = A(-(Axe + Bye + Cze + D ) / ( A2 + B2 + C2)) + xe
Yh = B(-(Axe + Bye + Cze + D ) / ( A2 + B2 + C2 )) + ye
Zh = C(-(Axe + Bye + Cze + D ) / ( A2 + B2 + C2) ) + ze
+ Xuất ra tọa độ giao điểm H( xh , yh , zh ) .
+ Tính khoảng cách từ đường thẳng d đến mp(ABC), chính là đoạn AH: dah = sqrt ( ( xh - xa )2 + ( yh - ya )2 + ( zh - za )2 )
+ Xuất ra khoảng cách dah
End.
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)
Luận văn tốt nghiệp
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
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)
Thiết kế hệ thống kiểm tra các quan hệ hình học trang 62
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 =
Luận văn tốt nghiệp
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 )
Luận văn tốt nghiệp
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
Luận văn tốt nghiệp
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