# Projection-related helper functions for the MFD maps

var Camera = {
    new: func(options) {
        var m = {
            parents: [Camera],

            camGeo: options['camGeo'] or geo.aircraft_position(),
            camHdg: options['camHdg'] or 0,
            range: options['range'] or 10.0,
            screenRange: options['screenRange'] or 256.0,
            screenCX: options['screenCX'] or options['screenRange'] or 256.0,
            screenCY: options['screenCY'] or options['screenRange'] or 256.0,
        };
        return m;
    },

    setRange: func(range) {
        me.range = range;
    },

    repositon: func(geo, hdg) {
        me.camGeo = geo;
        me.camHdg = hdg;
    },

    project: func(targetGeo) {
        var dist = me.camGeo.distance_to(targetGeo) * M2NM;
        var bearing = me.camGeo.course_to(targetGeo) - me.camHdg;
        return me.projectDistBearing(dist, bearing);
    },

    projectDistBearing: func(dist, bearing) {
        var bearingRad = bearing * D2R;
        var tx =  math.sin(bearingRad) * dist;
        var ty = -math.cos(bearingRad) * dist;
        var x = tx * me.screenRange / me.range + me.screenCX;
        var y = ty * me.screenRange / me.range + me.screenCY;
        return [x, y];
    },
};