我想知道如何將點連接在一起形成曲線。我在圖表中有20點,並想知道如何加入他們。我試過用GeneralPath對象,但想知道是否有更好的方法?從幾個點繪製曲線
從幾個點繪製曲線
回答
要建立一個曲線,而不僅僅是行,你可以使用的GeneralPath
public void curveTo(float x1, float y1, float x2, float y2, float x3, float y3)
它創建貝塞爾曲線的方法。但要計算控制點x1, y1, x2, y2
您需要放一些數學,或者下載一些插值庫。
你也可以檢查this question,它有一個鏈接到源代碼實現一些插值算法。
沒有解決通過點路由曲線的關鍵問題。此外,「下載一些插值庫」意味着什麼,控制點不能像這樣生成。 「放一些數學」是可以的,但是模擬貝塞爾曲線的算法需要的算法是真正的彎曲。 – 2011-06-19 18:03:16
GeneralPath肯定是最直接的。創建您的路徑,爲您的第一個點調用moveTo,然後爲每個後續點調用lineTo。然後將其繪製到Graphics2D對象。
GeneralPath
是一個很好的方法,應該很好地處理您的要求,除非您要離開別的東西。 Path2D
是一個新的類,可以更精確,但如果你不需要這種精度,那麼GeneralPath
就沒有優勢了。
貝塞爾想象基於多項式元件上的曲線:
(a + b)^3 = a^3 + 3a^2*b + 3a*b^2 + b^3
(^
正「到電源」,而不是「異或」)。他實際上將a
由t
和b
替換爲1-t
。所以公式應該是(t + (1 - t))^3
(是的,它等於1)。
在這一點上,我們有公式
t^3 + 3*t^2*(1-t) + 3*t*(1-t)^2 + (1-t)^3
有4個部分。選擇4點。
(x1,y1), (x2,y2), (x3,y3), (x4,y4)
現在,創建參數方程,通過座標式的每一個部分相乘,如下所示:
x(t) = t^3*x1 + 3*t^2*(1-t)*x2 + 3*t*(1-t)^2*x3 + (1-t)^3*x4
y(t) = t^3*y1 + 3*t^2*(1-t)*y2 + 3*t*(1-t)^2*y3 + (1-t)^3*y4
這是三次貝塞爾的參數方程。
你想要一個20次方的Bézier? 「簡單地」開發(t + (1-t))^20
。
Pascal Triangle應該可以幫到你。
這聽起來像你需要一個Catmull-Rom曲線來代替。有關更多詳細信息,請參閱http://www.mvps.org/directx/articles/catmull/,有關實施請參閱http://johnsogg.blogspot.com/2010/01/cardinal-splines-and-catmull-rom.html。
- 1. 如何通過幾個點來繪製貝塞爾曲線?
- 2. 如何繪製經過QT中幾個點的平滑曲線?
- 3. 繪製曲線
- 4. 繪製曲線點點滴滴
- 5. SceneKit繪製曲線
- 6. 龜繪製曲線
- 7. 繪製NURBS曲線?
- 8. 從用戶繪製的柵格曲線製作矢量曲線
- 9. 如何繪製2點曲線(Android,Java)
- 10. 兩點之間繪製曲線
- 11. 繪製曲線線android
- 12. Highcharts樣條曲線不繪製前30個點的圖線。
- 13. 繪製超過3個控制點的貝塞爾曲線
- 14. 從survreg預測繪製生存曲線
- 15. Matplotlib不繪製曲線
- 16. 在iPhone中繪製曲線?
- 17. 繪製折線圖彎曲
- 18. 在AndEngine中繪製曲線
- 19. 使用libgdx繪製曲線
- 20. 如何繪製與曲線
- 21. 繪製二次曲線
- 22. 繪製平滑曲線
- 23. 繪製二次曲線
- 24. Ntlk&Python,繪製ROC曲線
- 25. AUC曲線繪製在python
- 26. 繪製法線到曲面
- 27. 使用Paraview繪製曲線
- 28. 從已知點繪製直線到MATLAB中擬合曲線中的點
- 29. 從點陣快速繪製平滑曲線
- 30. 繪製平均曲線個gnuplot的
定義'更好'。 – 2011-06-15 15:08:24