2012-12-20 162 views
1

如何在Canvas中繪製這樣的2D曲線?在Android畫布中繪製2D曲線?

enter image description here enter image description here enter image description here

所有類似曲線具有mathematical formula或是fractals,但帆布僅具有用於繪製簡單的形狀像一個三角形或矩形的一些方法。我知道大多數曲線可以劃分成更簡單的形狀,例如繪製一個Heart Curve,但是有沒有更容易的方法用畫布繪製2D曲線?

+0

難道你不能在Canvas上繪製點,即Canvas.drawPoints(...),除非有另一個你沒有提到的要求。 –

+0

@MorrisonChang似乎這不是一個很好的方法來繪製分形。你同意嗎? – hasanghaforian

回答

1

如果你看看如何繪製2D曲線,一般你要麼被畫點或線,它只是外表光滑。

你的問題有兩個參數形式和一個分形。所有可以用線條和點繪製。參數形式可以直接通過算法在您的問題中完成,也可以轉換爲更通用的形式,如@leenephi提到的貝塞爾曲線

大多數時候用於生成分形的方程/算法都使用線,科赫雪花,或點,Mandelbrot集。如果你真的瞭解如何生成它們,你會發現分形不太適合繪製「曲線」,更多關於過程(遞歸)和結果(自相似性)。

0

您必須通過簡單的基元(例如短線段)近似曲線。

2

使用「路徑」對象,您可以在「畫布」中創建一些更精緻的線條和曲線。只是隨機找到了這兩個問題;我希望他們能指出你正確的方向,因爲我個人沒有使用過它們。

Draw a perfect curve connecting three points

Bezier curve and canvas

+0

更正:我已經使用了很多路徑對象,但不是曲線,就是我的意思。 :)路徑是非常酷的做更復雜的線與非常簡單的畫布.DrawLine(...) – leenephi

+0

它似乎不是一個很好的方式來繪製分形。你同意嗎? – hasanghaforian

+0

你打算如何繪製分形?如果你僅僅是在提取數據點,那麼Morrison的上述建議可能是最好的。你在尋找實時動作或動畫還是隻是一個分形圖像?如果第一個,您可能需要考慮SurfaceView或OpenGL中的畫布。如果是後者,我不明白爲什麼Path不起作用,因爲您可以將多個路徑和曲線指令添加到單個Path對象中。 – leenephi