如何在JavaScript 和HTML5 Canvas 中繪製多點平滑曲線
問題:
透過使用「curveTo」函數連接採樣點來在繪圖應用程式中建立平滑曲線,會因控制點脫節而導致扭結。
解:
繪製平滑曲線通過 N 個點,另一種方法是「曲線」到後續點之間的中點。
代碼:
<code class="javascript">// Move to the first point ctx.moveTo(points[0].x, points[0].y); // Iterate through points for (var i = 1; i < points.length - 2; i++) { // Calculate midpoint var xc = (points[i].x + points[i + 1].x) / 2; var yc = (points[i].y + points[i + 1].y) / 2; // Create quadratic curves to midpoints ctx.quadraticCurveTo(points[i].x, points[i].y, xc, yc); } // Curve through the last two points ctx.quadraticCurveTo( points[i].x, points[i].y, points[i + 1].x, points[i + 1].y );</code>
解釋:
此方法透過在相鄰點的中點連接曲線來相鄰近似平滑曲線。每條不相交的曲線共用一個端點,但受到公共控制點的影響,從而在相交點處實現平滑過渡。
注意:
雖然這種方法不會繪製通過每個正如問題標題中最初所述的樣本點,它會產生視覺上無法區分的平滑曲線,足以滿足大多數繪圖應用程式的需求。
以上是如何在畫布上用多個點繪製平滑曲線?的詳細內容。更多資訊請關注PHP中文網其他相關文章!