如何在 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中文网其他相关文章!