Revision 45747 trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.geometry/org.gvsig.fmap.geometry.api/src/main/java/org/gvsig/fmap/geom/GeometryUtils.java

View differences:

GeometryUtils.java
941 941
        r = formatCoordinate_replace(r,"D","f", value);        
942 942
        return r;
943 943
    }
944

  
945
    public static String formatAngle(String fmt, double angle) {
946

  
947
        double value = Math.abs(angle);
948

  
949
        int deg = (int)(value);
950
        double min = (value - deg) * 60;
951
        double secs = (min - (int) min)*60;
952
        
953
        String r = fmt;
954
        r = r.replace("%-",angle<0 ? "-" : "");
955
        r = r.replace("%+",angle<0 ? "-" : "+");
956

  
957
        r = formatCoordinate_replace(r,"s","f", secs);
958
        r = formatCoordinate_replace(r,"d","d", deg);
959
        r = formatCoordinate_replace(r,"m","d", (int)min);
960
        r = formatCoordinate_replace(r,"D","f", value);        
961
        return r;
962
    }
944 963
    
945 964
    private static String formatCoordinate_replace(String fmt, String source_conversion, String target_conversion, Object value) {
946 965
        String s = fmt;
......
962 981
        }
963 982
        return s;
964 983
    }
984
    
985
    /**
986
     * Returns the coefficient that expresses the direction in which the angle with vertex at center a and from point1 to point2 is beaten 
987
     * coefDirection >= 0 then the direction is CCW 
988
     * else the direction is CW
989
     * 
990
     * @param center
991
     * @param point1
992
     * @param point2
993
     * @return 
994
     */
995
    public static double getCoefDirection(Point center, Point point1, Point point2) {
996
        return Math.signum((point1.getX() - center.getX()) * (point2.getY() - center.getY()) - (point1.getY() - center.getY()) * (point2.getX() - center.getX()));
997
    }
965 998

  
966 999

  
967
    public static void main(String[] args) throws GeometryException {
968
        String s;
969
//        s =  GeometryUtils.formatCoordinate("%-%d? %m' %s'' N", 39.89);
1000

  
1001
//    public static void main(String[] args) throws GeometryException {
1002
//        String s;
1003
//        s =  GeometryUtils.formatCoordinate("%-%d\u00B0 %m\u2032 %s\u2033 N", 39.89);
970 1004
//        System.out.println(s);
971
//        s =  GeometryUtils.formatCoordinate("%-%d? %m' %.0s'' N", 39.89);
1005
//        s =  GeometryUtils.formatCoordinate("%-%d\u00B0 %m\u2032 %.0s\u2033 N", 39.89);
972 1006
//        System.out.println(s);
973
//        s =  GeometryUtils.formatCoordinate("%+%d? %m' %.2s'' N (%4.4D)", 39.89);
1007
//        s =  GeometryUtils.formatCoordinate("%+%d\u00B0 %m\u2032 %.2s\u2033 N (%4.4D)", 39.89);
974 1008
//        System.out.println(s);
975
//        s =  GeometryUtils.formatCoordinate("%-%d? %m' N", -39.89);
1009
//        s =  GeometryUtils.formatCoordinate("%-%d\u00B0 %m\u2032 N", -39.89);
976 1010
//        System.out.println(s);
977
//        s =  GeometryUtils.formatCoordinate("%-%d? %m' N (%4.4D)", 39.89);
1011
//        s =  GeometryUtils.formatCoordinate("%-%d\u00B0 %m\u2032 N (%4.4D)", 39.89);
978 1012
//        System.out.println(s);
979
        Geometry g = GeometryUtils.createFrom("00000007d50000000100000007d20000002341258d57c2b73acf4150bf008a45b87241258d5eb2faa5364150befedb0f995841258d6aeb851eb84150befbeeb851ec41258d723d70a3d74150bef9d51eb85241258d7e428f5c294150bef677ae147b41258d9d147ae1484150beeea47ae14841258dbc28f5c28f4150bee72ae147ae41258dc7ae147ae14150bee468f5c28f41258dcc6b851eb84150bee31999999a41258dd1666666664150bee18b851eb841258dd8d70a3d714150bedf1d70a3d741258ddea8f5c28f4150bedc951eb85241258de3eb851eb84150bed99ccccccd41258dea3d70a3d74150bed6351eb85241258defbd70a3d74150bed3728f5c2941258df39999999a4150bed1751eb85241258df6c7ae147b4150bed01c28f5c341258df86b851eb84150becf1f5c28f641258dfa1999999a4150becd4666666641258dfb6147ae144150becbc51eb85241258dfd1999999a4150bec9a000000041258dfec28f5c294150bec753d70a3d41258e001eb851ec4150bec2f666666641258e047ae147ae4150beb73147ae1441258e054ccccccd4150beb3bc28f5c341258e054ccccccd4150beb2d70a3d7141258e05947ae1484150beb2047ae14841258e053d70a3d74150beb17333333341258e03a8f5c28f4150beb0e47ae14841258de69999999a4150beaca3d70a3d41258db10f5c28f64150bea46d70a3d741258dabdc28f5c34150bea3928f5c2941258da8dc28f5c34150bea300a3d70a41258da623d70a3d4150bea26147ae1441258da34ccccccd4150bea19d70a3d7");
980
        
981
        System.out.println(g);
982
    }
1013
//        Geometry g = GeometryUtils.createFrom("00000007d50000000100000007d20000002341258d57c2b73acf4150bf008a45b87241258d5eb2faa5364150befedb0f995841258d6aeb851eb84150befbeeb851ec41258d723d70a3d74150bef9d51eb85241258d7e428f5c294150bef677ae147b41258d9d147ae1484150beeea47ae14841258dbc28f5c28f4150bee72ae147ae41258dc7ae147ae14150bee468f5c28f41258dcc6b851eb84150bee31999999a41258dd1666666664150bee18b851eb841258dd8d70a3d714150bedf1d70a3d741258ddea8f5c28f4150bedc951eb85241258de3eb851eb84150bed99ccccccd41258dea3d70a3d74150bed6351eb85241258defbd70a3d74150bed3728f5c2941258df39999999a4150bed1751eb85241258df6c7ae147b4150bed01c28f5c341258df86b851eb84150becf1f5c28f641258dfa1999999a4150becd4666666641258dfb6147ae144150becbc51eb85241258dfd1999999a4150bec9a000000041258dfec28f5c294150bec753d70a3d41258e001eb851ec4150bec2f666666641258e047ae147ae4150beb73147ae1441258e054ccccccd4150beb3bc28f5c341258e054ccccccd4150beb2d70a3d7141258e05947ae1484150beb2047ae14841258e053d70a3d74150beb17333333341258e03a8f5c28f4150beb0e47ae14841258de69999999a4150beaca3d70a3d41258db10f5c28f64150bea46d70a3d741258dabdc28f5c34150bea3928f5c2941258da8dc28f5c34150bea300a3d70a41258da623d70a3d4150bea26147ae1441258da34ccccccd4150bea19d70a3d7");
1014
//        
1015
//        System.out.println(g);
1016
//    }
983 1017

  
984 1018
}

Also available in: Unified diff