气球形状基本上是在不同的地方伸出的圆。但是,这并不是说简单的简单画一个圆,然后用帆布API舒展它。相反,我们需要重新使用四个三次贝塞尔曲线圈:
开始这个过程中,我发现,它实际上是不可能的创建使用三次贝塞尔曲线,一个完美的圆。相反,你可以使用一个只得到一个非常接近的近似名为“kapa”常量。如此计算的“把手”的长度(或从控制点到对应点的曲线上的距离),我们使用下面的公式:
var KAPPA = (4 * (Math.sqrt(2) - 1))/3;var handleLength = KAPPA * radius;
现在,我们可以创建一个使用四个近乎完美的圆,独立三次贝塞尔曲线,与创建bezierCurveTo方法
代码如下
/**
* @namespace Core namespace
*/
var CANVASBALLOON = {};
// Constants
CANVASBALLOON.KAPPA = (4 * (Math.sqrt(2) - 1))/3;
CANVASBALLOON.WIDTH_FACTOR = 0.0333;
CANVASBALLOON.HEIGHT_FACTOR = 0.4;
CANVASBALLOON.TIE_WIDTH_FAC