直線與球體的交點lisp 直線與橢球體相交

2021-10-14 03:29:06 字數 1290 閱讀 1704

示意圖

上述示意圖中,

該方法思路不是直接求取射線與橢球體的交點,而是利用變換矩陣,轉化為求取與位於原點的單位球體的交點。

首先要基於當前橢球體,構建與空間中位於原點的單位球體之間的變換矩陣,該變換可能包括位移,縮放以及旋轉,採用圖形學中的齊次座標形式表示:

位移矩陣

旋轉矩陣

縮放矩陣

則,組合變換矩陣為:

思路為:

將該變換應用於與橢球體進行相交計算的直線。

計算變換後的直線與與位於原點的單位球體的相交情況。

將結果應用於變換前的直線,獲取相交點。

若以 點代表參與計算的單位球體的中心,則球體表面上的點通常應該滿足:

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