import Plot from './Plot'
import PlotTypes from '../PlotTypes'
import LineString from 'ol/geom/LineString'
import * as PlotUtils from '../utils/plot_util'
import mix from '../../util/mixin'
//--fix dyj 目前mix函数只支持简单对象的拷贝,Plot必须放在复杂对象前面
export default class Arc extends mix(Plot, LineString) {

    constructor(points) {
        super(points);
        this.type = PlotTypes.ARC;
        this.fixPointCount = 3;
        this.setPoints(points);
    }
    generate() {
        var count = this.getPointCount();
        if (count < 2) {
            return;
        }
        if (count == 2) {
            this.setCoordinates(this.points);
        } else {
            var pnt1 = this.points[0];
            var pnt2 = this.points[1];
            var pnt3 = this.points[2];
            var center = PlotUtils.getCircleCenterOfThreePoints(pnt1, pnt2, pnt3);
            var radius = PlotUtils.distance(pnt1, center);

            var angle1 = PlotUtils.getAzimuth(pnt1, center);
            var angle2 = PlotUtils.getAzimuth(pnt2, center);
            if (PlotUtils.isClockWise(pnt1, pnt2, pnt3)) {
                var startAngle = angle2;
                var endAngle = angle1;
            }
            else {
                startAngle = angle1;
                endAngle = angle2;
            }
            this.setCoordinates(PlotUtils.getArcPoints(center, radius, startAngle, endAngle));
        }
    }

}