format Degree To Dms - Java java.lang

Java examples for java.lang:Math Geometry

Description

format Degree To Dms

Demo Code

/*/*  w  w w  .j  a  v  a2 s  .  co  m*/
 * Copyright (C) 2011-2012 Inaki Ortiz de Landaluce Saiz
 * 
 * This program is free software: you can redistribute it 
 * and/or modify it under the terms of the GNU General Public License 
 * as published by the Free Software Foundation, either 
 * version 3 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be
 * useful, but WITHOUT ANY WARRANTY; without even the implied warranty
 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public 
 * License along with this program. If not, see 
 * <http://www.gnu.org/licenses/>
 */
//package com.java2s;
import java.text.DecimalFormat;

public class Main {
    public static void main(String[] argv) throws Exception {
        double degrees = 2.45678;
        double min = 2.45678;
        double max = 2.45678;
        System.out.println(formatDegToDms(degrees, min, max));
    }

    public static String formatDegToDms(double degrees, double min,
            double max) {
        String s = "";
        // normalize values within the given range
        double deg = normalizeAngle(degrees, min, max);
        // take sign into account
        if (deg < 0) {
            deg = Math.abs(deg);
            s += "-";
        }
        double arcmin = (deg - (int) deg) * 60.0;
        double arcsec = (arcmin - (int) arcmin) * 60.0;
        s += new DecimalFormat("00").format((int) deg) + "d"
                + new DecimalFormat("00").format((int) arcmin) + "'"
                + new DecimalFormat("00.00").format(arcsec) + "\"";
        return s;
    }

    /**
     * Normalizes an angle value between a given range
     * 
     * @param value
     *            the angle value
     * @param minValue
     *            minimum value of the range
     * @param maxValue
     *            maximum value of the range
     */
    public static double normalizeAngle(double value, double minValue,
            double maxValue) {
        double delta = maxValue - minValue;
        return ((value - minValue) % delta + delta) % delta + minValue;
    }
}

Related Tutorials