示意圖
上述示意圖中,
該方法思路不是直接求取射線與橢球體的交點,而是利用變換矩陣,轉化為求取與位於原點的單位球體的交點。
首先要基於當前橢球體,構建與空間中位於原點的單位球體之間的變換矩陣,該變換可能包括位移,縮放以及旋轉,採用圖形學中的齊次座標形式表示:
位移矩陣
旋轉矩陣
縮放矩陣
則,組合變換矩陣為:
思路為:
將該變換應用於與橢球體進行相交計算的直線。
計算變換後的直線與與位於原點的單位球體的相交情況。
將結果應用於變換前的直線,獲取相交點。
若以 點代表參與計算的單位球體的中心,則球體表面上的點通常應該滿足:
(1)等式兩邊同時平方,可得:
(2)由於球體為位於原點的單位球體,因此其中心
為原點,且半徑為1:
在求交點過程中,直線通常用引數方程來表示:
(3)式(3)所表示的直線為直接與橢球體
相交的直線,為了與單位球體
進行相交計算,需要對其進行下述變換:
(4) 記
, ,則式(4)可以變形為:
(5)通過以上變換,即將進行相交計算的單位球體和引數化直線就準備好了,下面開始計算。
首先要將位於單位球體上的點
替換為以引數形式表示的點:
(6)最終,只要求解出
的值就可以確定交點資訊。
定義乙個表徵
點和 點之間的向量
:(7)
將(7)式帶入式(6),可得:
(8)由於向量長度的平方等於其自身的點積,則式(8)可以進一步表示為:
(9)展開(9)式可得:
(10) 記
, ,
,則式(10)可變形為:
(11)
式(11)為乙個關於
的一元二次方程。
根據一元二次方程求解過程可知,交點的個數可以根據判別式來判定,可能存在0個交點,1個交點和2個交點的情況:
表明單位球體的中心點
與直線
之間的距離小於半徑1,此時,直線與單位球體有兩個交點:
, ,
表明單位球體的中心點
與直線
之間的距離等於半徑1,此時,直線與單位球體有乙個交點:
, 表明單位球體的中心點
與直線
之間的距離大於半徑1,此時,直線與單位球體沒有交點。
圓與直線交點
圓與直線交點題目鏈結 include 使用scanf和printf的標頭檔案 include 使用c風格字串函式的標頭檔案 include 使用演算法庫的標頭檔案,max,min,swap,sort等 include 使用cin,cout的標頭檔案 include 數學標頭檔案 include 使用...
計算直線交點與夾角方法
基於matlab求解初等幾何問題 lyqmath 在工程應用 科學計算等領域,計算兩條直線的交點是乙個較為基礎的問題。一般的應該考慮到直線方程的寫法和求解交點的方式。這裡給出乙個具體的處理方式,其基本思想是 首先基於給定的節點定義出直線一般方程,然後求解方程組得到直線方程引數,最後根據得到的兩條直線...
空間直線與平面的交點
如果直線不與平面平行,將存在交點。如下圖所示,已知直線l過點m m1,m2,m3 且方向向量為vl v1,v2,v3 平面p過點n n1,n2,n3 且法線方向向量為vp vp1,vp2,vp3 求得直線與平面的交點o的座標 x,y,z 將直線方程寫成引數方程形式,即有 x m1 v1 t y m2...