三維空間的兩條直線是否相交

2021-09-01 21:33:12 字數 568 閱讀 5108

今天偶然看到一道題目,如何程式設計來判斷,三維空間中的兩條線段是否相交?兩條直線是否相交?

第一眼看到想到了二維座標系中的簡化版,在二維的空間中,判斷兩條線是否相交,可以分別對橫座標,縱座標投影,並判斷是否都有重合。投影的過程,其實就相當於維度的簡化。因此,對於三維座標系中的兩條線段,第乙個想法也是分別對三個二維平面投影,簡化為三個二維平面中的線段是否相交,重合的判斷。這裡有乙個陷阱,就算在三個二維平面都有交點的線段在三維空間也可能是不相交的,反之者必然成立。也就是說,前者是後者的必要非充分條件。

進一步考慮到,如果線段相交,那麼在三個二維平面上投影的交點是同乙個點,而如果不相交,而在三個投影均相交,那麼三個投影交點必然不是同乙個原始點,不論是在哪條直線上。因此,可以通過反正法來排除是兩條不相交的直線。

證明方式就是先作投影,如果不是三個二維面上都有焦點,則線段不相交;如果都有交點,則選取三個交點,得到原始三維空間中線段上的點,如果點重合,則線段相交,反之不相交。

還有一種更直觀一點的證明方式,通過座標變換,將其中一條線段的作為x軸,乙個端點為原點,另一端延伸為x軸正向,變換另外一條線段的座標,接下來就是判斷一條直線是否跟x軸相交。方法有多種,不細訴了。

三維空間剛體旋轉

剛體 運動過程中不會產生形變的物體,運動過程中同乙個向量的長度和夾角都不會發生變化。剛體變換也稱為歐式變換。旋轉矩陣 四元數旋轉向量 尤拉角安裝方式 eigen庫只有標頭檔案,沒有.so和.a二進位制檔案,所以在cmakelists.txt中只需要新增標頭檔案路徑,並不需要使用target link...

BFS 三維空間迷宮

題面 你被困在乙個三維的空間中,現在要尋找最短路徑逃生!空間由立方體單位構成。每次向上下前後左右移動乙個單位需要一分鐘,且不能對角線移動。空間的四周封閉。你的目標是走到空間的出口。問是否存在逃出生天的可能性?如果存在,則需要多少時間?輸入第一行是乙個數表示空間的數量。每個空間的描述的第一行為l,r和...

三維空間和四維空間

從螞蟻走路可以看出。由於螞蟻受限於自己的身體沒有翅膀,就跟人沒有翅膀一樣,碰到吊在自己頭頂的東西就只能繞遠路通過二維的方法到達三維的地方,所以只要有工具,可以是翅膀,可以是深深固定地上的梯子,也可以是飛機,都可以從受限的二維空間達到三維空間。而且這些手段全都是為了用來克服重力的,所以重力跟第三維有不...