2015-06-22 180 views
-2

在VBScript上編寫宏以在給定的兩個CATIA曲面中查找最近的兩個點時,我遇到了一些困難。如果我能夠找到CATIA的預定義函數或算法來執行相同的操作,那就太好了。兩條曲線之間的最近點

回答

0

不是一個簡單的算法。

將您的3D空間分爲X方向10個單位,Y方向10個單位,Z方向10個單位。您現在有一個包含1000個小立方體的3D空間。分析空間中的每個立方體。 #1表面是否穿過該立方體? Surface#2是否跨越該立方體?如果是這樣,請記錄下來。此工作空間的每個立方體都可以沒有表面交叉,兩個表面都交叉或交叉表面#1或#2。

如果任何立方體都有兩個表面交叉,那麼下一步。

再在每個方向再做10個單位(遞歸)再做分析。 (等等)

在某些時候,您將擁有一個三維空間,其中沒有細分的立方體具有穿過它的兩條曲線。運行分析程序以確定具有表面交叉的立方體之間的距離。你應該能夠找到哪兩個立方體是最小的距離。

使用繼續遞歸和細分來優化解決方案。

注意:如果您使用的是JavaScript,像Sylvester.js這樣的庫對於這個問題是非常方便的。

+0

這似乎是一個很好的解決方案,但我正在尋找更好的處理時間的算法。我認爲使用數學公式有助於我的情況,因爲只有四種類型的曲面(圓弧曲面,線條,矩形曲面和圓弧) – Deepak