Kiểm tra quan hệ Đường thẳng Mặt phẳng

Một phần của tài liệu Thiết kế hệ thống kiểm tra các quan hệ hình học trong không gian 2D và 3D (Trang 51 - 54)

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

7Kiểm tra quan hệ Đường thẳng 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))

Thiết kế hệ thống kiểm tra các quan hệ hình học trang 51

a2 -a1 0 a3 0 -a1 b2 -b1 0 -d1 -a1 0 -d2 0 -a1 -d3 -b1 0 a2 -d1 0 a3 -d2 -a1 b2 -d3 0 Dt = Dt = Dt = Dt = a a2 -a1 -d1 3 0 -d2 b2 -b1 -d3 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 =

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

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: xb - xa yb - ya zb - za xc - xa yc - ya zc - za xf - xe yf - ye zf - ze Dt =

+ 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 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.

Một phần của tài liệu Thiết kế hệ thống kiểm tra các quan hệ hình học trong không gian 2D và 3D (Trang 51 - 54)