constructor()

in packages/maker.js/src/models/Ellipse.ts [92:192]


        constructor(...args: any[]) {

            var n = 360 / maxBezierArcspan;
            var accuracy: number;

            var isPointArgs0 = isPoint(args[0]);

            var realArgs = (numArgs: number) => {
                switch (numArgs) {
                    case 2:
                        if (isPointArgs0) {
                            //origin, radius
                            this.origin = <IPoint>args[0];
                        }
                        break;

                    case 3:
                        //origin, rx, ry
                        this.origin = <IPoint>args[0];
                        break;

                    case 4:
                        //cx, cy, rx, ry
                        this.origin = [args[0] as number, args[1] as number];
                        break;
                }

                //construct a bezier approximation for an arc with radius of 1.
                var a = 360 / n;
                var arc = new paths.Arc([0, 0], 1, 0, a);

                //clone and rotate to complete a circle
                for (var i = 0; i < n; i++) {

                    var seed = bezierSeedFromArc(arc);

                    switch (numArgs) {
                        case 1:
                            //radius
                            seed = path.scale(seed, args[0] as number) as IPathBezierSeed;
                            break;

                        case 2:
                            if (isPointArgs0) {
                                //origin, radius
                                seed = path.scale(seed, args[1] as number) as IPathBezierSeed;

                            } else {
                                //rx, ry
                                seed = path.distort(seed, args[0] as number, args[1] as number) as IPathBezierSeed;
                            }
                            break;

                        case 3:
                            //origin, rx, ry
                            seed = path.distort(seed, args[1] as number, args[2] as number) as IPathBezierSeed;
                            break;

                        case 4:
                            //cx, cy, rx, ry
                            seed = path.distort(seed, args[2] as number, args[3] as number) as IPathBezierSeed;
                            break;
                    }

                    this.models['Curve_' + (1 + i)] = new BezierCurve(seed, accuracy);

                    arc.startAngle += a;
                    arc.endAngle += a;
                }
            };

            switch (args.length) {
                case 2:
                    realArgs(2);
                    break;

                case 3:
                    if (isPointArgs0) {
                        realArgs(3);
                    } else {
                        accuracy = args[2] as number;
                        realArgs(2);
                    }
                    break;

                case 4:
                    if (isPointArgs0) {
                        accuracy = args[3] as number;
                        realArgs(3);
                    } else {
                        realArgs(4);
                    }
                    break;

                case 5:
                    accuracy = args[4] as number;
                    realArgs(4);
                    break;
            }

        }