Kiểm tra quan hệ Điểm 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 47 - 51)

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

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

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

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.

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