幾何演算法 python求解空間線段交點座標

2021-10-02 18:18:27 字數 975 閱讀 9077

問題

已知兩個線段的端點座標分別為(x1, y1, z1)、(x2, y2, z2);(x3, y3, z3)、(x4, y4, z4),求它們的交點座標?

已知線段1座標:(7,6,7)、(1,4,5),線段2的座標:(4,7,4)、(4,4,7)。

由於兩條線段交點是唯一的,兩條直線交點也是唯一的,所以,求解線段交點可以利用求解直線交點的思想。

直線方程可以寫成:

用引數方程表示,也可以寫成:

先求解方程組:

x1+(x2-x1)t1=x3+(x4-x3)t2

y1+(y2-y1)t1=y3+(y4-y3)t2

解得(t1,t2)

再代入第三個方程檢驗是否成立:

z1+(z2-z1)t1=z3+(z4-z3)t2

如果第三個方程成立,則兩直線相交,且交點座標為(x1+(x2-x1)t1,y1+(y2-y1)t1,z1+(z2-z1)t1)。

**

from sympy import *

from sympy.abc import x,y

solution = solve([7+6*x-(4),6+2*x-(7+3*y)],[x,y])

print(solution)

t1=-1/2

t2=-2/3

print((7+6*t1,6+2*t1,7+2*t1))

結果

(4.0, 5.0, 6.0)

貪心演算法求解TSP問題(python)

這裡使用貪心演算法求解tsp問題的python版本 dist 為距離矩陣,start index 為起始位置 deftsp quick dist list start index int sum distance,seq result,n 0,start index,len dist for pat...

Python遞迴演算法以及命名空間

遞迴演算法 遞迴是一種程式設計的思路或者可以說是一種演算法,並沒有標準的語句結構或者語法等限制,只需滿足條件即可算是遞迴。遞迴條件 遞迴例子 10的集乘 10的集乘相當於,109的集乘,9的集乘相當於98的集乘,以此類推,為遞迴條件 而當乘到1時,集乘結束,為基線條件 集乘的遞迴 deffn a i...

找零問題之貪心演算法求解Python

貪心演算法是基於區域性最優原理,將問題分割成若干個小的子問題,然後求解子問題的最優解,這樣歸併子問題的解,從而求得整個問題的解。當然這個解並不是最優解,只能說是近似最優解,因為區域性最優的合併並不一定是全域性最優。貪心演算法還有驗證解的步驟,這個比較簡單,就是把解帶入即可 找零問題,比如說售貨員需要...