⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 projmath.java

📁 openmap java写的开源数字地图程序. 用applet实现,可以像google map 那样放大缩小地图.
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
// **********************************************************************// // <copyright>// //  BBN Technologies//  10 Moulton Street//  Cambridge, MA 02138//  (617) 873-8000// //  Copyright (C) BBNT Solutions LLC. All rights reserved.// // </copyright>// **********************************************************************// // $Source: /cvs/distapps/openmap/src/openmap/com/bbn/openmap/proj/ProjMath.java,v $// $RCSfile: ProjMath.java,v $// $Revision: 1.3.2.2 $// $Date: 2005/02/11 22:51:27 $// $Author: dietrick $// // **********************************************************************package com.bbn.openmap.proj;import com.bbn.openmap.MoreMath;/** * Math functions used by projection code. */public final class ProjMath {    /**     * North pole latitude in radians.     */    public final static transient float NORTH_POLE_F = MoreMath.HALF_PI;    /**     * South pole latitude in radians.     */    public final static transient float SOUTH_POLE_F = -NORTH_POLE_F;    /**     * North pole latitude in radians.     */    public final static transient double NORTH_POLE_D = MoreMath.HALF_PI_D;    /**     * South pole latitude in radians.     */    public final static transient double SOUTH_POLE_D = -NORTH_POLE_D;    /**     * Dateline longitude in radians.     */    public final static transient float DATELINE_F = (float) Math.PI;    /**     * Dateline longitude in radians.     */    public final static transient double DATELINE_D = Math.PI;    /**     * Longitude range in radians.     */    public final static transient float LON_RANGE_F = (float) MoreMath.TWO_PI;    /**     * Longitude range in radians.     */    public final static transient double LON_RANGE_D = MoreMath.TWO_PI_D;    // cannot construct    private ProjMath() {}    /**     * rounds the quantity away from 0.     *      * @param x in value     * @return double     * @see #qint(double)     */    public final static double roundAdjust(double x) {        return qint_old(x);    }    /**     * Rounds the quantity away from 0.     *      * @param x value     * @return double     */    public final static double qint(double x) {        return qint_new(x);    }    final private static double qint_old(double x) {        return (((int) x) < 0) ? (x - 0.5) : (x + 0.5);    }    final private static double qint_new(double x) {        // -1 or +1 away from zero        return (x <= 0.0) ? (x - 1.0) : (x + 1.0);    }    /**     * Calculate the shortest arc distance between two lons.     *      * @param lon1 radians     * @param lon2 radians     * @return float distance     */    public final static float lonDistance(float lon1, float lon2) {        return (float) Math.min(Math.abs(lon1 - lon2), ((lon1 < 0) ? lon1                + Math.PI : Math.PI - lon1)                + ((lon2 < 0) ? lon2 + Math.PI : Math.PI - lon2));    }    /**     * Convert between decimal degrees and scoords.     *      * @param deg degrees     * @return long scoords     *       */    public final static long DEG_TO_SC(double deg) {        return (long) (deg * 3600000);    }    /**     * Convert between decimal degrees and scoords.     *      * @param sc scoords     * @return double decimal degrees     */    public final static double SC_TO_DEG(int sc) {        return ((double) (sc) / (60.0 * 60.0 * 1000.0));    }    /**     * Convert radians to degrees.     *      * @param rad radians     * @return double decimal degrees     */    public final static double radToDeg(double rad) {        return (rad * (180.0d / Math.PI));    }    /**     * Convert radians to degrees.     *      * @param rad radians     * @return float decimal degrees     */    public final static float radToDeg(float rad) {        return (float) radToDeg((double)rad);    }    /**     * Convert degrees to radians.     *      * @param deg degrees     * @return double radians     */    public final static double degToRad(double deg) {        return (deg * (Math.PI / 180.0d));    }    /**     * Convert degrees to radians.     *      * @param deg degrees     * @return float radians     */    public final static float degToRad(float deg) {        return (float) degToRad((double)deg);    }    /**     * Generate a hashCode value for a lat/lon pair.     *      * @param lat latitude     * @param lon longitude     * @return int hashcode     *       */    public final static int hashLatLon(float lat, float lon) {        if (lat == -0f)            lat = 0f;//handle negative zero (anything else?)        if (lon == -0f)            lon = 0f;        int tmp = Float.floatToIntBits(lat);        int hash = (tmp << 5) | (tmp >> 27);//rotate the lat bits        return hash ^ Float.floatToIntBits(lon);//XOR with lon    }    /**     * Converts an array of decimal degrees float lat/lons to float     * radians in place.     *      * @param degs float[] lat/lons in decimal degrees     * @return float[] lat/lons in radians     */    public final static float[] arrayDegToRad(float[] degs) {        for (int i = 0; i < degs.length; i++) {            degs[i] = degToRad(degs[i]);        }        return degs;    }    /**     * Converts an array of radian float lat/lons to decimal degrees     * in place.     *      * @param rads float[] lat/lons in radians     * @return float[] lat/lons in decimal degrees     */    public final static float[] arrayRadToDeg(float[] rads) {        for (int i = 0; i < rads.length; i++) {            rads[i] = radToDeg(rads[i]);        }        return rads;    }    /**     * Converts an array of decimal degrees double lat/lons to double     * radians in place.     *      * @param degs double[] lat/lons in decimal degrees     * @return double[] lat/lons in radians     */    public final static double[] arrayDegToRad(double[] degs) {        for (int i = 0; i < degs.length; i++) {            degs[i] = degToRad(degs[i]);        }        return degs;    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -