我正在用Python編寫一個基本的二維形狀庫(主要用於處理SVG圖形),而且我對如何有效計算兩個橢圓的交點感到茫然。查找兩個橢圓的交點(Python)
每個橢圓由以下變量(所有浮子)定義:
c: center point (x, y)
hradius: "horizontal" radius
vradius: "vertical" radius
phi: rotation from coordinate system's x-axis to ellipse's horizontal axis
當橢圓是相同的忽略,有可能通過4個交叉點(沒有交點,正切,部分重疊的,部分重疊的是0和內部相切,並完全重疊)。
我已經發現了一些可能的解決方案:
- SymPy geometry module - 這基本上只是插頭橢圓方程爲SymPy的求解。如果沒有求解者,我不確定這是否合理。 (順便說一句,我會用SymPy代替滾動我自己的,但它在處理瘋狂的浮動時表現可怕)
- How to detect if an ellipse intersects(collides with) a circle - 這可能適用於兩個省略號,但我對如何打開它有點模糊變成明智的代碼。
- How Ellipse to Ellipse intersection? - 答案參考庫(CADEMIA)可能有一個很好的算法,但我甚至不知道它是否是開源的。
- Wikipedia: Intersecting Two Conics - 我沒有足夠的線性代數來理解這個解決方案。
任何關於如何計算交叉點的建議?速度(可能需要計算很多交叉點),優雅是主要標準。代碼會很棒,但即使是一個好的方向,也會有所幫助。
這可以減少爲求解兩個變量的二次方程 – thkang 2013-03-16 04:36:50
大多數橢圓與圓的解決方案不會爲你工作,因爲通常你做到這一點的參數化然後找出橢圓的距離與圓心的距離等於圓的半徑。 (如果你知道以鎖步參數化兩個橢圓的正確階段,你可以做到這一點......但是從我的頭頂開始,我懷疑這並不比橢圓相交更容易......) – abarnert 2013-03-16 06:23:56
另外,我認爲這屬於http: //math.stackexchange.com而不是這裏 - 實際上它是一個已經在那裏遷移的問題的重複,http://math.stackexchange.com/questions/197982/calculate-intersection-of-twoellipses – abarnert 2013-03-16 06:30:02