Rose.js 855 Bytes
var Path = require("../Path");

/**
 * 玫瑰线
 * @module zrender/graphic/shape/Rose
 */
var sin = Math.sin;
var cos = Math.cos;
var radian = Math.PI / 180;

var _default = Path.extend({
  type: 'rose',
  shape: {
    cx: 0,
    cy: 0,
    r: [],
    k: 0,
    n: 1
  },
  style: {
    stroke: '#000',
    fill: null
  },
  buildPath: function (ctx, shape) {
    var x;
    var y;
    var R = shape.r;
    var r;
    var k = shape.k;
    var n = shape.n;
    var x0 = shape.cx;
    var y0 = shape.cy;
    ctx.moveTo(x0, y0);

    for (var i = 0, len = R.length; i < len; i++) {
      r = R[i];

      for (var j = 0; j <= 360 * n; j++) {
        x = r * sin(k / n * j % 360 * radian) * cos(j * radian) + x0;
        y = r * sin(k / n * j % 360 * radian) * sin(j * radian) + y0;
        ctx.lineTo(x, y);
      }
    }
  }
});

module.exports = _default;