6.Kiểm tra quan hệ Đườngthẳn g- 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 3D (Trang 35 - 41)

PHẦN II: NỘI DUNG

6.Kiểm tra quan hệ Đườngthẳn g- Mặt phẳng

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 ))

KĨ THUẬT ĐỒ HỌA Trang 35

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 =

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:

+ 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)“

KĨ THUẬT ĐỒ HỌA Trang 36

xb - xa yb - ya zb - za xc - xa yc - ya zc - za xf - xe yf - ye zf - ze Dt =

+ 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) (adsbygoogle = window.adsbygoogle || []).push({});

- Đườ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.

7. Kiểm tra quan hệ Đường

thẳng - Đường thẳng

Cơ sở toá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: (adsbygoogle = window.adsbygoogle || []).push({});

• 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

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:

KĨ THUẬT ĐỒ HỌA Trang 39

xb - xa yb - ya zb - za xd - xc yd - yc zd - zc xc - xa yc - ya zc - za Dt =

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

KĨ THUẬT ĐỒ HỌA Trang 40 (adsbygoogle = window.adsbygoogle || []).push({});

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

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

8. Kiểm tra quan hệ Mặt

phẳ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 3D (Trang 35 - 41)