Current File : /home/tradevaly/www/node_modules/zrender/src/graphic/shape/Trochoid.js |
/**
* 内外旋轮曲线
* @module zrender/graphic/shape/Trochold
*/
import Path from '../Path';
var cos = Math.cos;
var sin = Math.sin;
export default Path.extend({
type: 'trochoid',
shape: {
cx: 0,
cy: 0,
r: 0,
r0: 0,
d: 0,
location: 'out'
},
style: {
stroke: '#000',
fill: null
},
buildPath: function (ctx, shape) {
var x1;
var y1;
var x2;
var y2;
var R = shape.r;
var r = shape.r0;
var d = shape.d;
var offsetX = shape.cx;
var offsetY = shape.cy;
var delta = shape.location === 'out' ? 1 : -1;
if (shape.location && R <= r) {
return;
}
var num = 0;
var i = 1;
var theta;
x1 = (R + delta * r) * cos(0)
- delta * d * cos(0) + offsetX;
y1 = (R + delta * r) * sin(0)
- d * sin(0) + offsetY;
ctx.moveTo(x1, y1);
// 计算结束时的i
do {
num++;
}
while ((r * num) % (R + delta * r) !== 0);
do {
theta = Math.PI / 180 * i;
x2 = (R + delta * r) * cos(theta)
- delta * d * cos((R / r + delta) * theta)
+ offsetX;
y2 = (R + delta * r) * sin(theta)
- d * sin((R / r + delta) * theta)
+ offsetY;
ctx.lineTo(x2, y2);
i++;
}
while (i <= (r * num) / (R + delta * r) * 360);
}
});