import { __extends } from "tslib"; 
 | 
import Path from '../Path.js'; 
 | 
var cos = Math.cos; 
 | 
var sin = Math.sin; 
 | 
var TrochoidShape = (function () { 
 | 
    function TrochoidShape() { 
 | 
        this.cx = 0; 
 | 
        this.cy = 0; 
 | 
        this.r = 0; 
 | 
        this.r0 = 0; 
 | 
        this.d = 0; 
 | 
        this.location = 'out'; 
 | 
    } 
 | 
    return TrochoidShape; 
 | 
}()); 
 | 
export { TrochoidShape }; 
 | 
var Trochoid = (function (_super) { 
 | 
    __extends(Trochoid, _super); 
 | 
    function Trochoid(opts) { 
 | 
        return _super.call(this, opts) || this; 
 | 
    } 
 | 
    Trochoid.prototype.getDefaultStyle = function () { 
 | 
        return { 
 | 
            stroke: '#000', 
 | 
            fill: null 
 | 
        }; 
 | 
    }; 
 | 
    Trochoid.prototype.getDefaultShape = function () { 
 | 
        return new TrochoidShape(); 
 | 
    }; 
 | 
    Trochoid.prototype.buildPath = function (ctx, shape) { 
 | 
        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; 
 | 
        var x1; 
 | 
        var y1; 
 | 
        var x2; 
 | 
        var y2; 
 | 
        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); 
 | 
        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); 
 | 
    }; 
 | 
    return Trochoid; 
 | 
}(Path)); 
 | 
Trochoid.prototype.type = 'trochoid'; 
 | 
export default Trochoid; 
 |