首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用bezier曲线

使用bezier曲线
EN

Stack Overflow用户
提问于 2013-02-06 08:28:17
回答 2查看 617关注 0票数 1

我正在为我的项目创建一个自定义方法,它将创建多边形。我有这个:

代码语言:javascript
复制
var c2 = document.getElementById('c').getContext('2d');
c2.fillStyle = '#f00';
c2.beginPath();
c2.moveTo(10, 20);
c2.lineTo(20, 10);
c2.lineTo(60, 10);
c2.lineTo(60, 30);
c2.lineTo(20, 30);
c2.lineTo(10, 20);
c2.closePath();
c2.fill();

现场演示:http://jsfiddle.net/yd7Wv/4292/现在,我需要使用贝塞尔曲线,因为,我需要圆角,,你能帮我处理贝塞尔曲线吗?向你问好,丹尼尔

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-06 09:22:21

可以使用以下方法绘制bezier曲线

代码语言:javascript
复制
canvas_context.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);

代码语言:javascript
复制
canvas_context.quadraticCurveTo(cpx, cpy, x, y); 

这些医生会帮你的

  1. canvas/
  2. http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#the-canvas-element
票数 1
EN

Stack Overflow用户

发布于 2013-02-06 09:33:16

要么使用已经实现的bezierCurveTo方法:

代码语言:javascript
复制
bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y); 

beziercurveto.asp

或者,您可以编写自己的bazier曲线方法,如下所示,它具有更大的近似性:

代码语言:javascript
复制
coord = function (x,y) {
  if(!x) var x=0;
  if(!y) var y=0;
  return {x: x, y: y};
}

function B1(t) { return t*t*t }
function B2(t) { return 3*t*t*(1-t) }
function B3(t) { return 3*t*(1-t)*(1-t) }
function B4(t) { return (1-t)*(1-t)*(1-t) }

function getBezier(percent,C1,C2,C3,C4) {
  var pos = new coord();
  pos.x = C1.x*B1(percent) + C2.x*B2(percent) + C3.x*B3(percent) + C4.x*B4(percent);
  pos.y = C1.y*B1(percent) + C2.y*B2(percent) + C3.y*B3(percent) + C4.y*B4(percent);
  return pos;
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14724574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档