Ticket #8987: coords.diff

File coords.diff, 13.7 KB (added by shinigami, 11 years ago)
  • src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java

     
    683683                Point p3 = mv.getPoint(newN1en);
    684684                Point p4 = mv.getPoint(newN2en);
    685685
    686                 EastNorth normalUnitVector = getNormalUniVector();
     686                Point2D normalUnitVector = getNormalUniVector();
    687687
    688688                if (mode == Mode.extrude || mode == Mode.create_new) {
    689689                    g2.setColor(mainColor);
     
    752752        }
    753753    }
    754754
    755     private EastNorth getNormalUniVector() {
    756         double fac = 1.0 / activeMoveDirection.en.distance(0,0);
     755    private Point2D getNormalUniVector() {
     756        double fac = 1.0 / activeMoveDirection.en.length();
    757757        // mult by factor to get unit vector.
    758         EastNorth normalUnitVector = new EastNorth(activeMoveDirection.en.getX() * fac, activeMoveDirection.en.getY() * fac);
     758        Point2D normalUnitVector = new Point2D.Double(activeMoveDirection.en.getX() * fac, activeMoveDirection.en.getY() * fac);
    759759
    760760        // Check to see if our new N1 is in a positive direction with respect to the normalUnitVector.
    761761        // Even if the x component is zero, we should still be able to discern using +0.0 and -0.0
    762762        if (newN1en != null && ((newN1en.getX() > initialN1en.getX()) != (normalUnitVector.getX() > -0.0))) {
    763763            // If not, use a sign-flipped version of the normalUnitVector.
    764             normalUnitVector = new EastNorth(-normalUnitVector.getX(), -normalUnitVector.getY());
     764            normalUnitVector = new Point2D.Double(-normalUnitVector.getX(), -normalUnitVector.getY());
    765765        }
    766766
    767767        //HACK: swap Y, because the target pixels are top down, but EastNorth is bottom-up.
     
    770770        return normalUnitVector;
    771771    }
    772772
    773     private void drawAngleSymbol(Graphics2D g2, Point2D center, EastNorth normal, boolean mirror) {
     773    private void drawAngleSymbol(Graphics2D g2, Point2D center, Point2D normal, boolean mirror) {
    774774        // EastNorth units per pixel
    775775        double factor = 1.0/g2.getTransform().getScaleX();
    776776        double raoffsetx = symbolSize*factor*normal.getX();
  • src/org/openstreetmap/josm/command/Command.java

     
    1515import javax.swing.JPanel;
    1616
    1717import org.openstreetmap.josm.Main;
    18 import org.openstreetmap.josm.data.coor.LatLon;
    1918import org.openstreetmap.josm.data.osm.Node;
    2019import org.openstreetmap.josm.data.osm.OsmPrimitive;
    2120import org.openstreetmap.josm.data.osm.PrimitiveData;
     
    221220
    222221    private static boolean isOutlying(OsmPrimitive osm, Area area) {
    223222        if (osm instanceof Node && !osm.isNewOrUndeleted()) {
    224             LatLon coor = ((Node) osm).getCoor();
    225             return coor != null && !area.contains(coor);
     223            return !((Node) osm).getCoor().isIn(area);
    226224        } else if (osm instanceof Way) {
    227225            for (Node n : ((Way) osm).getNodes()) {
    228226                if (isOutlying(n, area)) {
  • src/org/openstreetmap/josm/command/SequenceCommand.java

     
    66import java.util.Arrays;
    77import java.util.Collection;
    88import java.util.HashSet;
    9 import java.util.List;
    109
    1110import javax.swing.Icon;
    1211
  • src/org/openstreetmap/josm/data/Bounds.java

     
    205205        if (crosses180thMeridian()) {
    206206            LatLon result = new LatLon(minLat, minLon-360.0).getCenter(getMax());
    207207            if (result.lon() < -180.0) {
    208                 result.setLocation(result.lon()+360.0, result.lat());
     208                result = new LatLon(result.lat(), result.lon() + 360.0);
    209209            }
    210210            return result;
    211211        } else {
  • src/org/openstreetmap/josm/data/coor/CachedLatLon.java

     
    3232        this.eastNorth = eastNorth;
    3333    }
    3434
    35     public final void setCoor(LatLon coor) {
    36         setLocation(coor.lon(), coor.lat());
    37         proj = null;
    38     }
    39 
    40     public final void setEastNorth(EastNorth eastNorth) {
    41         proj = Main.getProjection();
    42         this.eastNorth = eastNorth;
    43         LatLon l = proj.eastNorth2latlon(eastNorth);
    44         setLocation(l.lon(), l.lat());
    45     }
    46 
    4735    /**
    4836     * Replies the projected east/north coordinates.
    4937     *
  • src/org/openstreetmap/josm/data/coor/Coordinate.java

     
    11// License: GPL. Copyright 2007 by Immanuel Scholz and others
    22package org.openstreetmap.josm.data.coor;
    33
    4 import java.awt.geom.Point2D;
    54import java.io.Serializable;
    65
    76/**
     
    1615 *
    1716 * @author imi
    1817 */
    19 abstract class Coordinate extends Point2D implements Serializable {
     18abstract class Coordinate implements Serializable {
    2019
    21     protected double x;
    22     protected double y;
     20    protected final double x;
     21    protected final double y;
    2322
    2423    /**
    2524     * Construct the point with latitude / longitude values.
     
    3130        this.x = x; this.y = y;
    3231    }
    3332
    34     @Override
    3533    public double getX() {
    3634        return x;
    3735    }
    3836
    39     @Override
    4037    public double getY() {
    4138        return y;
    4239    }
    4340
    4441    @Override
    45     public void setLocation (double x, double y) {
    46         this.x = x;
    47         this.y = y;
    48     }
    49 
    50     @Override
    5142    public int hashCode() {
    5243        final int prime = 31;
    5344        int result = super.hashCode();
  • src/org/openstreetmap/josm/data/coor/EastNorth.java

     
    4343        return new EastNorth((this.x + en2.x)/2.0, (this.y + en2.y)/2.0);
    4444    }
    4545
    46     public double distance(EastNorth en2) {
    47         return Math.sqrt((this.x-en2.x)*(this.x-en2.x) + (this.y-en2.y)*(this.y-en2.y));
     46    /**
     47     * Counts euclidean distance between this and other EastNorth.
     48     *
     49     * @param en2 other EastNorth
     50     * @return distance between this and other EastNorth
     51     */
     52    public double distance(final EastNorth en2) {
     53        final double dx = this.x-en2.x;
     54        final double dy = this.y-en2.y;
     55        return Math.sqrt(dx*dx + dy*dy);
    4856    }
    4957
    5058    /**
     59     * Counts square of euclidean distance between this and other EastNorth.
     60     *
     61     * @param en2 other EastNorth
     62     * @return square of distance between this and other EastNorth
     63     */
     64    public double distanceSq(final EastNorth en2) {
     65        final double dx = this.x-en2.x;
     66        final double dy = this.y-en2.y;
     67        return dx*dx + dy*dy;
     68    }
     69
     70    /**
     71     * Counts length (distance from [0,0]) of this.
     72     *
     73     * @return length of this
     74     */
     75    public double length(){
     76        return Math.sqrt(x*x + y*y);
     77    }
     78   
     79    /**
    5180     * Returns the heading, in radians, that you have to use to get from
    5281     * this EastNorth to another. Heading is mapped into [0, 2pi)
    5382     *
  • src/org/openstreetmap/josm/data/coor/LatLon.java

     
    1010import static java.lang.Math.toRadians;
    1111import static org.openstreetmap.josm.tools.I18n.trc;
    1212
     13import java.awt.geom.Area;
    1314import java.text.DecimalFormat;
    1415import java.text.NumberFormat;
    1516import java.util.Locale;
     
    221222    }
    222223
    223224    /**
     225     * Check if this is contained in given area or area is null.
     226     *
     227     * @param a Area
     228     * @return <code>true</code> if this is contained in given area or area is null.
     229     */
     230    public boolean isIn(Area a) {
     231        return a == null || a.contains(x, y);
     232    }
     233
     234    /**
    224235     * Computes the distance between this lat/lon and another point on the earth.
    225236     * Uses Haversine formular.
    226237     * @param other the other point.
     
    285296        return new LatLon((this.lat() + ll2.lat())/2.0, (this.lon() + ll2.lon())/2.0);
    286297    }
    287298
     299    /**
     300     * Counts euclidean distance between this and other LatLon.
     301     *
     302     * @param ll2 other LatLon
     303     * @return distance between this and other LatLon
     304     */
     305   public double distance(final LatLon ll2) {
     306        final double dx = this.x-ll2.x;
     307        final double dy = this.y-ll2.y;
     308        return Math.sqrt(dx*dx + dy*dy);
     309    }
     310
    288311    @Override public String toString() {
    289312        return "LatLon[lat="+lat()+",lon="+lon()+"]";
    290313    }
  • src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java

     
    13411341        Path2D.Double path = new Path2D.Double();
    13421342        boolean initial = true;
    13431343        for (Node n : w.getNodes()) {
    1344             Point2D p = n.getEastNorth();
     1344            EastNorth p = n.getEastNorth();
    13451345            if (p != null) {
    13461346                if (initial) {
    13471347                    path.moveTo(p.getX(), p.getY());
  • src/org/openstreetmap/josm/data/osm/visitor/paint/relations/Multipolygon.java

     
    1717import org.openstreetmap.josm.Main;
    1818import org.openstreetmap.josm.data.Preferences.PreferenceChangeEvent;
    1919import org.openstreetmap.josm.data.Preferences.PreferenceChangedListener;
     20import org.openstreetmap.josm.data.coor.EastNorth;
    2021import org.openstreetmap.josm.data.osm.DataSet;
    2122import org.openstreetmap.josm.data.osm.Node;
    2223import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
     
    212213        private void buildPoly() {
    213214            boolean initial = true;
    214215            for (Node n : nodes) {
    215                 Point2D p = n.getEastNorth();
     216                EastNorth p = n.getEastNorth();
    216217                if (p != null) {
    217218                    if (initial) {
    218219                        poly.moveTo(p.getX(), p.getY());
  • src/org/openstreetmap/josm/data/validation/tests/Coastlines.java

     
    149149            if (headWays == 0 || tailWays == 0) {
    150150                List<OsmPrimitive> highlight = new ArrayList<OsmPrimitive>();
    151151
    152                 if (headWays == 0 && (downloadedArea == null || downloadedArea.contains(head.getCoor()))) {
     152                if (headWays == 0 && head.getCoor().isIn(downloadedArea)) {
    153153                    highlight.add(head);
    154154                }
    155                 if (tailWays == 0 && (downloadedArea == null || downloadedArea.contains(tail.getCoor()))) {
     155                if (tailWays == 0 && tail.getCoor().isIn(downloadedArea)) {
    156156                    highlight.add(tail);
    157157                }
    158158
  • src/org/openstreetmap/josm/data/validation/tests/UnconnectedWays.java

     
    292292            found_nodes.addAll(endnodes.search(new BBox(bounds.get(0), bounds.get(1))));
    293293
    294294            for (Node n : found_nodes) {
    295                 if (!nearby(n, dist) ||
    296                         (ds_area != null && !ds_area.contains(n.getCoor()))) {
     295                if (!nearby(n, dist) || !n.getCoor().isIn(ds_area)) {
    297296                    continue;
    298297                }
    299298                // It is actually very rare for us to find a node
  • src/org/openstreetmap/josm/gui/layer/markerlayer/Marker.java

     
    340340    }
    341341
    342342    public final void setCoor(LatLon coor) {
    343         if(this.coor == null) {
    344             this.coor = new CachedLatLon(coor);
    345         } else {
    346             this.coor.setCoor(coor);
    347         }
     343        this.coor = new CachedLatLon(coor);
    348344    }
    349345
    350346    public final LatLon getCoor() {
     
    352348    }
    353349
    354350    public final void setEastNorth(EastNorth eastNorth) {
    355         coor.setEastNorth(eastNorth);
     351        this.coor = new CachedLatLon(eastNorth);
    356352    }
    357353
    358354    public final EastNorth getEastNorth() {