我想知道如何將點連接在一起形成曲線。我在圖表中有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. 如何繪製經過QT中幾個點的平滑曲線?
- 2. 龜繪製曲線
- 3. 繪製NURBS曲線?
- 4. 兩點之間繪製曲線
- 5. 繪製曲線線android
- 6. 從survreg預測繪製生存曲線
- 7. 在iPhone中繪製曲線?
- 8. Ntlk&Python,繪製ROC曲線
- 9. 繪製二次曲線
- 10. 使用Paraview繪製曲線
- 11. AUC曲線繪製在python
- 12. 繪製平滑曲線
- 13. 在AndEngine中繪製曲線
- 14. Matplotlib不繪製曲線
- 15. 繪製法線到曲面
- 16. 繪製折線圖彎曲
- 17. 繪製平均曲線個gnuplot的
- 18. 循環繪製ggplot中的幾條擬合曲線?
- 19. 繪製曲線SVG箭頭線的div
- 20. 繪製最適合的曲線線
- 21. WPF折線相對點值和拉伸繪製的曲線圖
- 22. 使用gnuplot從多個文件繪製曲線
- 23. 動畫從一個點繪製一條線到一個點
- 24. Python:pyplot - 在曲線上繪製平滑曲線,並在曲線上顯示數據點
- 25. 如何繪製Google Map上幾個點之間的連線路線?
- 26. 如何繪製下列曲線的ROC曲線?
- 27. R:添加多個迴歸線和黃土曲線繪製
- 28. matplotlib:沒有正確地繪製曲線
- 29. 在R中繪製正弦曲線
- 30. 在grafana中繪製一條曲線
定義'更好'。 – 2011-06-15 15:08:24