001/*
002 * To change this template, choose Tools | Templates
003 * and open the template in the editor.
004 */
005
006package armyc2.c5isr.renderer.utilities;
007
008
009//import android.graphics.Point;
010import android.graphics.PointF;
011//import Point2D;
012//import Point2D;
013import armyc2.c5isr.graphics2d.*;
014import armyc2.c5isr.graphics2d.Point2D;
015
016/**
017 *
018*
019 */
020public class PointConverter3D implements IPointConversion
021{
022    private double _controlLat=0;
023    private double _controlLong=0;
024    private double _scale=0;
025    private double _metersPerPixel=0;
026    public PointConverter3D(double controlLong, double controlLat, double scale)
027    {
028        try
029        {
030            this._controlLat=controlLat;
031            this._controlLong=controlLong;
032            this._scale=scale;
033            _metersPerPixel=GeoPixelConversion3D.metersPerPixel(scale);
034        }
035        catch(Error e)
036        {
037            throw e;
038        }
039    }
040    public PointF PixelsToGeo(PointF pixel)
041    {
042        PointF pt2dGeo=null;
043        try
044        {
045            double y=GeoPixelConversion3D.y2lat(pixel.y, _scale, _controlLat, _metersPerPixel);
046            double x=GeoPixelConversion3D.x2long(pixel.x, _scale, _controlLong, y, _metersPerPixel);
047            pt2dGeo=new PointF((float)x,(float)y);
048        }
049        catch(Error e)
050        {
051            throw e;
052        }
053        return pt2dGeo;
054    }
055
056    public PointF GeoToPixels(PointF coord)
057    {
058        PointF ptPixels=null;
059        try
060        {
061            double y=GeoPixelConversion3D.lat2y(coord.y, _scale, _controlLat, _metersPerPixel);
062            double x=GeoPixelConversion3D.long2x(coord.x, _scale, _controlLong, coord.y, _metersPerPixel);
063            ptPixels=new PointF((float)x,(float)y);
064        }
065        catch(Error e)
066        {
067            throw e;
068        }
069        return ptPixels;
070    }
071//      @Override
072//      public Point2D PixelsToGeo(Point pixel) {
073//
074//              return (Point2D)PixelsToGeo(new Point2D.Double(pixel.x, pixel.y));
075//      }
076//      @Override
077//      public Point GeoToPixels(Point2D coord) {
078
079//              Point2D temp = PixelsToGeo(coord);
080//              return new Point((int)temp.getX(),(int)temp.getY());
081//      }
082        @Override
083        public Point2D PixelsToGeo(Point2D pixel) {
084                
085                Point2D pt2dGeo=null;
086        try
087        {
088            double y=GeoPixelConversion3D.y2lat(pixel.getY(), _scale, _controlLat, _metersPerPixel);
089            double x=GeoPixelConversion3D.x2long(pixel.getX(), _scale, _controlLong, y, _metersPerPixel);
090            pt2dGeo=new Point2D.Double(x,y);
091        }
092        catch(Error e)
093        {
094            throw e;
095        }
096        return pt2dGeo;
097        }
098        //@Override
099        public Point2D GeoToPixels(Point2D coord) {
100                Point2D ptPixels=null;
101        try
102        {
103            double y=GeoPixelConversion3D.lat2y(coord.getY(), _scale, _controlLat, _metersPerPixel);
104            double x=GeoPixelConversion3D.long2x(coord.getX(), _scale, _controlLong, coord.getY(), _metersPerPixel);
105            ptPixels=new Point2D.Double(x,y);
106        }
107        catch(Error e)
108        {
109            throw e;
110        }
111        return ptPixels;
112        }
113
114}