亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? losgenerator.java

?? openmap java寫的開(kāi)源數(shù)字地圖程序. 用applet實(shí)現(xiàn),可以像google map 那樣放大縮小地圖.
?? JAVA
字號(hào):
// **********************************************************************// // <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/tools/terrain/LOSGenerator.java,v $// $RCSfile: LOSGenerator.java,v $// $Revision: 1.4.2.1 $// $Date: 2004/10/14 18:27:45 $// $Author: dietrick $// // **********************************************************************package com.bbn.openmap.tools.terrain;import java.awt.Color;import com.bbn.openmap.LatLonPoint;import com.bbn.openmap.MoreMath;import com.bbn.openmap.dataAccess.dted.DTEDFrameCache;import com.bbn.openmap.proj.GreatCircle;import com.bbn.openmap.proj.Planet;import com.bbn.openmap.util.Debug;/** * A Class that can do Line-Of-Sight calculations between two points. * Uses the DTEDFrameCache to get elevations. */public class LOSGenerator {    // These are used to control the algorithm type. Right now, the    // first two are eliminated, since the azimuth alogorithm is    // faster    // and more precise.    final static int PRECISE = 0;    final static int GOODENOUGH = 1;    final static int AZIMUTH = 2;    // The colors of pixels    final static int DEFAULT_INVISIBLE = new Color(0, 0, 0, 0).getRGB();    final static int DEFAULT_VISIBLE = new Color(0, 255, 0, 255).getRGB();    final static int DEFAULT_MAYBEVISIBLE = new Color(255, 255, 0, 255).getRGB();    protected int INVISIBLE = DEFAULT_INVISIBLE;    protected int VISIBLE = DEFAULT_VISIBLE;    protected int MAYBEVISIBLE = DEFAULT_MAYBEVISIBLE;    DTEDFrameCache dtedCache = null;    /**     * Not the preferred way to create one of these. It's full of     * defaults.     */    public LOSGenerator() {}    public LOSGenerator(DTEDFrameCache cache) {        setDtedCache(cache);    }    public void setDtedCache(DTEDFrameCache cache) {        dtedCache = cache;    }    public DTEDFrameCache getDtedCache() {        return dtedCache;    }    /**     * Check to see if two points are within line of sight of each     * other, taking into account their elevations above Mean Sea     * Level as retrieved by a DTED database, and any other addition     * height of each object.     *      * @param startLLP location of point 1.     * @param startObjHeight the elevation of point 1 above the     *        surface, in meters. The surface elevation of the point     *        will be looked up and added to this value.     * @param endLLP location of point 2.     * @param endObjHeight the elevation of point 2 above the surface,     *        in meters. The surface elevation of the point will be     *        looked up and added to this value.     * @param numPoints number of sample points to check between the     *        two end points. Can be dependent on the Projection of     *        the current map, and based on the number of pixels     *        between the projected points. Could also be based on the     *        number of elevation posts between the two points in the     *        DTED database.     * @return true of their is a line-of-sight path between the two     *         points.     */    public boolean isLOS(LatLonPoint startLLP, int startObjHeight,                         LatLonPoint endLLP, int endObjHeight, int numPoints) {        boolean ret = false;        if (Debug.debugging("los")) {            Debug.output("LOSGenerator.isLOS: " + startLLP + " at height:"                    + startObjHeight + ", " + endLLP + " at height:"                    + endObjHeight + ", numPoints = " + numPoints);        }        if (dtedCache == null) {            return ret;        }        int startTotalHeight = startObjHeight                + dtedCache.getElevation(startLLP.getLatitude(),                        startLLP.getLongitude());        float[] llpoints = GreatCircle.great_circle(startLLP.radlat_,                startLLP.radlon_,                endLLP.radlat_,                endLLP.radlon_,                numPoints,                true);        LatLonPoint llp = new LatLonPoint();        int size = llpoints.length;        double losSlope = -MoreMath.HALF_PI;        for (int i = 0; i < size; i += 2) {            llp.setLatLon(llpoints[i], llpoints[i + 1], true);            int height = 0;            if (i >= size - 2) {                height = endObjHeight;            }            double slope = calculateLOSSlope(startLLP,                    startTotalHeight,                    llp,                    height);            if (Debug.debugging("losdetail")) {                Debug.output("   LOS:" + (i / 2) + " - slope = " + slope                        + " at height of point: " + height);            }            // if the slope is greater than the current slope, it is            // visible. If it's less than or equal to the current            // slope, it is not visible.            if (losSlope < slope) {                losSlope = slope;                ret = true;                // If the last point has the largest slope, then the                // point is LOS.            } else {                ret = false;            }        }        if (Debug.debugging("los")) {            Debug.output("LOSGenerator - points " + (ret ? "" : " NOT ")                    + " in LOS");        }        return ret;    }    /**     * CalculateLOSslope figures out the slope from one point to     * another. The arc_dist is in radians, and is the radian arc     * distance of the point from the center point of the image, on     * the earth. This slope calculation does take the earth's     * curvature into account, based on the spherical model. The slope     * returned is the angle from the end point to the beginning     * point, relative to the vertical of the end point to the center     * of the earth - i.e. starting at the axis pointing straight down     * into the earth, how many radians do you have to angle up until     * you hit the starting point.     *      * @param startLLP the coordinates of point 1.     * @param startTotalHeight the total height of point 1, from the     *        Mean Sea Level - so it's the elevation of the point plus     *        altitude above the surface, in meters.     * @param endLLP the coordinates of point 2.     * @param endObjHeight the elevation of point 2 above the surface,     *        in meters. The surface elevation of the point will be     *        looked up and added to this value.     * @return slope of line between the two points, with zero     *         pointing straight down, in radians.     */    public double calculateLOSSlope(LatLonPoint startLLP, int startTotalHeight,                                    LatLonPoint endLLP, int endObjHeight) {        if (dtedCache == null) {            return 0;        }        float arc_dist = GreatCircle.spherical_distance(startLLP.radlat_,                startLLP.radlon_,                endLLP.radlat_,                endLLP.radlon_);        int endTotalHeight = endObjHeight                + dtedCache.getElevation(endLLP.getLatitude(),                        endLLP.getLongitude());        return calculateLOSSlope(startTotalHeight, endTotalHeight, arc_dist);    }    /**     * Calculate the slope of a line between two points across a     * spherical model of the earth.     *      * @param startTotalHeight total height of one point, in meters.     *        Should represent elevation of point which is the surface     *        elevation above MSL, and the height above the surface.     * @param endTotalHeight total height of one the other point, in     *        meters. Should represent elevation of point which is the     *        surface elevation above MSL, and the height above the     *        surface.     * @param arc_dist the surface angle, in radians, across the     *        spherical model of the earth that separates the two     *        points.     */    public double calculateLOSSlope(int startTotalHeight, int endTotalHeight,                                    float arc_dist) {        double ret = 0;        double P = Math.sin(arc_dist)                * (endTotalHeight + Planet.wgs84_earthEquatorialRadiusMeters);        double xPrime = Math.cos(arc_dist)                * (endTotalHeight + Planet.wgs84_earthEquatorialRadiusMeters);        double bottom;        double cutoff = startTotalHeight                + Planet.wgs84_earthEquatorialRadiusMeters;        // Suggested changes, submitted by Mark Wigmore. Introduces        // use of doubles, and avoidance of PI/2 tan() calculations.        bottom = cutoff - xPrime;        ret = MoreMath.HALF_PI_D - Math.atan(bottom / P);        return ret;    }}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91成人看片片| 成人福利电影精品一区二区在线观看| 欧美亚洲综合在线| 亚洲电影一区二区三区| 欧美在线免费视屏| 性做久久久久久久久| 欧美一三区三区四区免费在线看| 日韩电影在线一区二区三区| 精品日韩欧美在线| 国产99久久久国产精品| 亚洲日本va在线观看| 在线观看亚洲精品| 久久精品国产成人一区二区三区| 精品久久一二三区| 成人av网站在线| 亚洲自拍偷拍图区| 欧美大片在线观看一区| 国产寡妇亲子伦一区二区| 中文字幕中文字幕中文字幕亚洲无线| 一本大道综合伊人精品热热| 五月婷婷久久丁香| 久久精品亚洲乱码伦伦中文| 色综合久久久久久久| 天堂在线一区二区| 国产女人水真多18毛片18精品视频| 91麻豆精品视频| 日本欧美韩国一区三区| 国产精品婷婷午夜在线观看| 欧美午夜精品电影| 国产精品一二三| 亚洲一区二区欧美| 国产日韩欧美不卡| 欧美三级视频在线观看| 九色综合狠狠综合久久| 亚洲色图在线看| 精品久久久网站| 欧美三片在线视频观看| 国模无码大尺度一区二区三区| 一区二区三区在线视频观看| 久久综合999| 欧美色精品天天在线观看视频| 国产91精品久久久久久久网曝门| 亚洲成人在线观看视频| 欧美国产一区二区| 欧美成人伊人久久综合网| 欧洲在线/亚洲| 福利91精品一区二区三区| 日产国产欧美视频一区精品| 亚洲乱码国产乱码精品精小说| 精品国产精品网麻豆系列| 欧美系列在线观看| 成人av午夜电影| 国产69精品久久久久毛片| 天天影视色香欲综合网老头| 欧美性色黄大片手机版| 国产精品一二一区| 美国欧美日韩国产在线播放| 一区二区三区四区在线| 国产情人综合久久777777| 欧美一区二区三区系列电影| 色8久久精品久久久久久蜜| 国产黄色91视频| 激情图区综合网| 美女性感视频久久| 日日嗨av一区二区三区四区| 一区二区三区精品| 亚洲日本青草视频在线怡红院| 中国av一区二区三区| 国产精品视频线看| 中文字幕免费一区| 中文字幕精品在线不卡| 国产精品久久毛片a| 中文字幕乱码久久午夜不卡| 国产三级精品在线| 欧美韩日一区二区三区| 欧美国产亚洲另类动漫| 国产精品久久久久aaaa| 国产精品麻豆99久久久久久| 国产午夜精品一区二区| 国产视频视频一区| 国产精品网曝门| 国产精品久久一级| 亚洲欧美aⅴ...| 亚洲精品ww久久久久久p站 | 欧美日韩国产综合视频在线观看| 91免费精品国自产拍在线不卡| 成人ar影院免费观看视频| 成人一区二区在线观看| 成人av午夜电影| 日本久久电影网| 欧美日韩卡一卡二| 欧美电影在哪看比较好| 欧美成人福利视频| 久久精品亚洲国产奇米99| 国产精品视频一二三区| 亚洲一级二级在线| 日本va欧美va精品发布| 国产精品系列在线播放| 92国产精品观看| 欧美日韩aaaaa| 日韩欧美一二三| 欧美极品另类videosde| 一级做a爱片久久| 日本不卡在线视频| 国产精品白丝jk黑袜喷水| 99re这里只有精品6| 欧美日韩视频第一区| 在线播放/欧美激情| 国产欧美一区在线| 亚洲精品成人天堂一二三| 午夜视频在线观看一区| 国产精品香蕉一区二区三区| 色爱区综合激月婷婷| 欧美一级爆毛片| 国产欧美视频在线观看| 玉米视频成人免费看| 蜜臀av亚洲一区中文字幕| 国产激情视频一区二区在线观看 | 一级日本不卡的影视| 日本特黄久久久高潮| 国产91露脸合集magnet| 7777精品伊人久久久大香线蕉经典版下载 | 国产精品三级视频| 精品制服美女丁香| 波多野洁衣一区| 欧美久久久久免费| 欧美韩日一区二区三区四区| 日韩精品成人一区二区三区| 成人午夜av电影| 欧美肥胖老妇做爰| 亚洲免费大片在线观看| 国产毛片精品视频| 欧美日韩国产美| 中文字幕日韩一区| 国产主播一区二区| 欧美性猛交xxxxxx富婆| 国产精品久久久久久久久免费桃花 | 天天综合色天天综合色h| 成人手机电影网| 日韩久久免费av| 亚洲成人av一区| 色婷婷香蕉在线一区二区| 久久精品人人做人人爽97| 日本欧美肥老太交大片| 欧美午夜寂寞影院| 亚洲精品国产无天堂网2021| 国产精品一区二区91| 日韩欧美成人一区| 舔着乳尖日韩一区| 欧美午夜视频网站| 亚洲欧美另类在线| 99精品国产91久久久久久| 久久夜色精品国产噜噜av| 亚洲成a人在线观看| av日韩在线网站| 国产精品无码永久免费888| 国产麻豆日韩欧美久久| 亚洲精品一区二区三区蜜桃下载 | 石原莉奈在线亚洲二区| 色一情一乱一乱一91av| 亚洲素人一区二区| 不卡电影一区二区三区| 国产精品久久久久久久午夜片| 国产高清视频一区| 欧美国产综合一区二区| 不卡视频免费播放| 国产欧美日韩麻豆91| 国产.欧美.日韩| 国产精品伦一区| 一本一本久久a久久精品综合麻豆| 欧美国产乱子伦| 成人精品视频一区二区三区尤物| 欧美极品xxx| 91麻豆国产福利精品| 亚洲素人一区二区| 欧美日韩一区 二区 三区 久久精品| 亚洲在线视频一区| 亚洲综合一区在线| 在线亚洲+欧美+日本专区| 亚洲午夜国产一区99re久久| 欧美人牲a欧美精品| 久久国产剧场电影| 欧美韩日一区二区三区四区| 96av麻豆蜜桃一区二区| 亚洲国产一区二区视频| 欧美精品一二三区| 毛片不卡一区二区| 久久久久国色av免费看影院| 国产精品自拍三区| 1区2区3区国产精品| 欧美亚洲图片小说| 老汉av免费一区二区三区 | 国产精品久久久久久久久久久免费看 | 欧美国产精品中文字幕| 色久综合一二码| 日本欧美一区二区在线观看| 日本一区二区在线不卡| 91极品美女在线| 精油按摩中文字幕久久| 国产精品你懂的在线欣赏|