2015-09-27 33 views
0

我想在dxf文件中以編程方式創建樣條曲線。我需要使用擬合點,因爲曲線需要通過指定的點。我知道我也需要使用控制點。有沒有一個公式來計算這些應該是什麼?它是一個封閉的樣條線,有四個合適的點。如何使用擬合點創建dxf樣條曲線?

在此先感謝!

回答

2

我覺得這不是一件容易的事。除了控制點之外,您還需要確定節點。 DXF閱讀器/查看器here(用C++編寫)聲稱支持樣條曲線。也許你可以通過閱讀代碼找到一些信息。

AutoCAD使用近似曲線的NURBS曲線(曲線僅通過第一個和最後一個點)。在用戶界面中,插值樣條曲線(曲線經過擬合點),因此在讀取/寫入DXF文件時會進行翻譯。如果您創建一個封閉的點有4個擬合點,你會看到有DXF文件中的7分控制:

Fit points vs control points

使用折線近似的樣條曲線會比較容易。下面是(從0,0開始L形 - > 100 0 - > 100,50)的折線的樣品

0 
LWPOLYLINE 
    5 
D5 
    330 
70 
    100 
AcDbEntity 
    8 
0 
    100 
AcDbPolyline 
    90 
3 
    70 
0 
    43 
0.0 
    10 
0.0 
    20 
0.0 
    10 
100.0 
    20 
0.0 
    10 
100.0 
    20 
50.0 

計算從擬合點的控制點的位置,可以諮詢此page(§24&§25)。事實上,你需要扭轉Casteljau的算法(對於Bezier曲線;我不知道它對NURBS是如何工作的)。

+0

是的,非常感謝Maxence - 我也有類似的結論。我正在嘗試按照您的建議使用多段線 - 您是否知道我可以看到的任何示例?它看起來像多線實體一樣,我也需要頂點實體。 – AesculusMaximus

+0

如果您編寫的版本> R12的DXF,您可以使用LWPOLYLINE而不是POLYLINE,則不需要額外的VERTEX實體。 – Maxence

+0

我下載了引用的代碼。這個代碼沒有幫助試圖發佈它在這裏,但它達到了stackoverflow字符限制。無論如何,它充滿了拼寫錯誤和變量,如:AMag,k NP,Mat,Bx,By,Cx,Cy。任何地方都無法解釋這些變量。 – Dustin