向量法計算平面與直線的交點

2021-09-29 14:36:14 字數 2096 閱讀 9660

已知有平面上三個點(abc)座標,直線上兩個點(de)座標,求平面abc與直線de的交點座標。

解:

/**

* 平面與直線的交點

* * @param planta

* @param plantb

* @param plantc

* @param lined

* @param linee

* @return

*/public static double getcrosspointofplaneandline3d(double planta, double plantb, double plantc,

double lined, double linee)

// 三稜錐abcd的體積的3倍為向量ab×ac·ad

double arrowad = arrow(planta, lined);

double volumed = dotmultiply3d(plantside, arrowad);

// 此步之前已證明底面積不為0,若體積為0,則d點在平面abc上

if (volumed == 0)

// 三稜錐abce的體積的3倍為向量ab×ac·ae

double arrowae = arrow(planta, linee);

double volumee = dotmultiply3d(plantside, arrowae);

// 此步之前已證明底面積不為0,若體積為0,則e點在平面abc上

if (volumee == 0)

// abcd與abce體積相等,說明d與e到平面的距離相等,且在同一側,即線段與平面平行

if (volumed == volumee)

// 若直線de與平面abc不平行,則必能在直線de上找到一點f,使三稜錐abcf的體積為0,點f即直線de與平面abc的交點

double ans = new double[3];

for (int i = 0; i < ans.length; ++i)

return ans;

}

axis函式和matlab的axis函式類似,但是這個axis是對數字進行縮放,不會作用於顯示器。與點積、叉積不同,估計很多人不知道axis是怎樣實現的。這裡附上axis函式:

/**

* 縮放座標(不支援整數操作,因為整數操作比例計算時會失去小數部分,使比例不正確)

* * @param srcmin 原域最小值

* @param srcmax 原域最大值

* @param dstmin 新域最小值

* @param dstmax 新域最大值

* @param x 座標陣列

* @return 新座標

*/public static double axis(double srcmin, double srcmax, double dstmin, double dstmax, double... x)

// 假想的攝像機座標範圍

double mathrange = srcmax - srcmin;

// 顯示器的尺寸範圍

double displayrange = dstmax - dstmin;

// 兩個範圍相除就是兩個座標系的縮放比例

double slope = displayrange / mathrange;

double ret = new double[x.length];

for (int i = 0; i < x.length; ++i)

return ret;

}

axis是可以反向對映的,也就是把源座標範圍或目標座標範圍的最大值和最小值換位,就可以變成源座標增加,目標座標減小。axis也支援把乙個有長度的範圍對映到0長度的範圍,就是把目標座標的最大最小設為相等。這個縮放函式與matlab圖表座標範圍設定不同,matlab有x和y兩個縮放比例,這個axis只有乙個縮放比例,如果要像matlab的axis一樣縮放,需要分別為x軸和y軸呼叫axis,並輸入各自的對映範圍。matlab的axis的顯示器座標是自動的,此處的這個axis用於數字的換算,換算的範圍和比例是未知的,所以才會有乙個目標範圍。

空間直線與平面的交點

如果直線不與平面平行,將存在交點。如下圖所示,已知直線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...

空間直線與平面的交點

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!如果直線不與平面平行,將存在交點。如下圖所示,已知直線l過點m m1,m2,m3 且方向向量為vl v1,v2,v3 平面p過點n n1,n2,n3 且法線方向向量為vp vp1,vp2,vp3 求得直線與平面的交點o的座標 x,y,z 將直線方程...

計算直線交點與夾角方法

基於matlab求解初等幾何問題 lyqmath 在工程應用 科學計算等領域,計算兩條直線的交點是乙個較為基礎的問題。一般的應該考慮到直線方程的寫法和求解交點的方式。這裡給出乙個具體的處理方式,其基本思想是 首先基於給定的節點定義出直線一般方程,然後求解方程組得到直線方程引數,最後根據得到的兩條直線...