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

📄 stresswwjiterator.java

📁 world wind java sdk 源码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                        {                            statusLbl.setText("status:  Adding WMS Layer");                            Layer wmsLayer =  stressWMS.getLayer(wmsLayerCount);                            addedLayers.add(wmsLayer);                            wmsLayerCount++;                            ApplicationTemplate.insertBeforePlacenames(wwd, wmsLayer);                            frame.getLayerPanel().update(wwd);                        }                    });                    moveToDefaut(timeToMove);                }                else                {                    Position randPos = randomPosition(globe);                    double zoom = randPos.getElevation()+ (1000000); //do not need to zoom in for these layers                    Position center = new Position(randPos, zoom);                     moveToandAlter(timeToMove, center, 1);                }            }            else            {                statusLbl.setText("status: Reseting for next round");                moveToDefaut(timeToMove);                viewIterations=0;                numRounds++;                markerIterations=0;                airspaceIterations=0;                wmsIterations=0;                wmsLayerCount=0;                logMsg = "Round: " + numRounds + " | Total Iterations: " + totIterations;                if(markers.size() > 0)                    markers.clear();                if ( airspace.size() > 0)                    airspace.clearAirspace();                //reset to orig layers                if ( addedLayers.size() > 0)                {                    wwd.getModel().getLayers().removeAll(addedLayers);                    addedLayers.clear();                }                                //Call GC                System.gc();                wwd.redraw();                frame.getLayerPanel().update(wwd);                //Alter Texture Cache values                long cap = new Double(wwd.getTextureCache().getCapacity() * .95).longValue();                if ( cap < minCacheCap)                    wwd.getTextureCache().setCapacity(maxCacheCap);                else                    wwd.getTextureCache().setCapacity(cap);                cap = new Double(wwd.getTextureCache().getLowWater() * .95).longValue();                if ( cap < minCacheLowCap)                    wwd.getTextureCache().setLowWater(maxCacheLowCap);                else                    wwd.getTextureCache().setLowWater(cap);                if(minimizeWindow)                {                    SwingUtilities.invokeLater(new Runnable()                    {                        public void run()                        {                            for (int i =0; i<5; i++)                            {                                try{                                    Thread.sleep(500);                                    frame.setVisible(false);                                    Thread.sleep(500);                                    frame.setVisible(true);                                }                                catch(InterruptedException ie)                                {                                    Logging.logger().severe("Error minimizing/maximizing WWJ window: " + ie.getMessage());                                    frame.setVisible(true);                                    break;                                }                            }                        }                    });                }            }            Logging.logger().info(logMsg + " | Current Memory Used: " + currentMemUsed + "mb | Max Memory Used: " + maxMemUsed + "mb");        }    }    private void moveToDefaut(long timeToIterate)    {        Position center = new Position(Angle.fromDegreesLatitude(22.0), Angle.fromDegreesLongitude(-47.0), 15000000); //randPos.getElevation()); //0);        OrbitView view = (OrbitView) wwd.getView();        view.applyStateIterator(nextVSI(timeToIterate, center, 1));    }    private void moveToandAlter(long timeToIterate, Position center, int iterations )    {        OrbitView view = (OrbitView) wwd.getView();        statusLbl.setText("status: Moving to new location");        view.applyStateIterator(nextVSI(timeToIterate, center, iterations));    }    private ViewStateIterator nextVSI(long timeToIterate, Position center, int num)    {        ViewStateIterator vsi;        OrbitView view = (OrbitView) wwd.getView();        switch ( num % 10)        {            case 0:                vsi = new EyePositionIterator(timeToIterate,view.getCenterPosition(), center);                break;            case 2:                vsi = FlyToOrbitViewStateIterator.createPanToIterator(                    wwd.getModel().getGlobe(),                    view.getCenterPosition(), center,                    view.getHeading(), Angle.fromDegrees(360 * Math.random()),                    view.getPitch(), Angle.fromDegrees(0.0),                    view.getZoom(), center.getElevation(),                    timeToIterate, true);                break;            case 4:                vsi = FlyToOrbitViewStateIterator.createPanToIterator(                    wwd.getModel().getGlobe(),                    view.getCenterPosition(), center,                    view.getHeading(), Angle.fromDegrees(0.0),                    view.getPitch(), Angle.fromDegrees(70 * Math.random()),                    view.getZoom(), center.getElevation(),                    timeToIterate, true);                break;            case 6:                vsi = FlyToOrbitViewStateIterator.createPanToIterator(                    wwd.getModel().getGlobe(),                    view.getCenterPosition(), center,                    view.getHeading(), Angle.fromDegrees(360 * Math.random()),                    view.getPitch(), Angle.fromDegrees(70 * Math.random()),                    view.getZoom(), center.getElevation(),                    timeToIterate, true);                break;            default:                vsi = FlyToOrbitViewStateIterator.createPanToIterator(                    wwd.getModel().getGlobe(),                    view.getCenterPosition(), center,                    view.getHeading(), Angle.fromDegrees(0.0),                    view.getPitch(), Angle.fromDegrees(0.0),                    view.getZoom(), center.getElevation(),                    timeToIterate, true);                break;        }        return vsi;    }    private ViewStateIterator alterVSI(long timeToMove)    {        OrbitView view = (OrbitView) wwd.getView();        Globe globe = wwd.getModel().getGlobe();        double heading = 360 * Math.random();        double pitch = 80 * Math.random();        return FlyToOrbitViewStateIterator.createPanToIterator(                            globe,                            view.getCenterPosition(), view.getCenterPosition(),                            view.getHeading(), Angle.fromDegrees(heading),                            Angle.fromDegrees(0), Angle.fromDegrees(pitch),                            view.getZoom(), view.getZoom(),                            timeToMove, true);    }    private static Position randomPosition(Globe globe)    {        double lat, lon;        double elevation;        double rand;        do        {            rand = Math.random();            lat = 140 * rand - 70;               rand = Math.random();            lon = 360 * rand - 180;            elevation = globe.getElevation(Angle.fromDegreesLatitude(lat), Angle.fromDegreesLongitude(lon));        } while (elevation < 1);        return Position.fromDegrees(lat, lon, elevation);    }    public JPanel makeControlPanel()    {        JPanel controlPanel = new JPanel(new GridLayout(0, 1, 5, 5));        controlPanel.add(new JLabel("Started: " + new Date().toString()));        controlPanel.add(totalMemLbl);        controlPanel.add(freeMemLbl);        controlPanel.add(new JSeparator(SwingConstants.HORIZONTAL));        controlPanel.add(viewLbl);        controlPanel.add(markerLbl);        controlPanel.add(airspaceLbl);        controlPanel.add(wmsLbl);        controlPanel.add(numObjectsLbl);        controlPanel.add(new JSeparator(SwingConstants.HORIZONTAL));        controlPanel.add(roundsLbl);        controlPanel.add(iterationsLbl);        statusLbl.setForeground(Color.BLUE);        controlPanel.add(statusLbl);        controlPanel.setBorder(new CompoundBorder(BorderFactory.createEmptyBorder(9, 9, 9, 9),                                                            new TitledBorder("Stress Test Statistics")));        return controlPanel;    }    //inner class for reading iterator properties file    //borrowed from gov.nasa.worldwind.Configuration    private class StressTestConfiguration    {        private static final String DEFAULT_LOGGER_NAME = "gov.nasa.worldwind";        private Properties properties= new Properties();        public StressTestConfiguration(String propsFile)        {            readProperties(propsFile);        }        private void readProperties(String configFileName)        {            try            {                java.io.InputStream propsStream = null;                File file = new File(configFileName);                if (file.exists())                {                    try                    {                        propsStream = new FileInputStream(file);                    }                    catch (FileNotFoundException e)                    {                        String message = Logging.getMessage("Configuration.LocalConfigFileNotFound", configFileName);                        Logging.logger().finest(message);                    }                }                if (propsStream == null)                {                    propsStream = this.getClass().getResourceAsStream("/" + configFileName);                }                if (propsStream == null)                {                    Logging.logger().log(Level.WARNING, "Configuration.UnavailablePropsFile", configFileName);                }                if (propsStream != null)                    this.properties.load(propsStream);            }            // Use a named logger in all the catch statements below to prevent Logger from calling back into            // Configuration when this Configuration instance is not yet fully instantiated.            catch (FileNotFoundException e)            {                Logging.logger(DEFAULT_LOGGER_NAME).log(Level.WARNING, "Configuration.UnavailablePropsFile",                    configFileName);            }            catch (IOException e)            {                Logging.logger(DEFAULT_LOGGER_NAME).log(Level.SEVERE, "Configuration.ExceptionReadingPropsFile", e);            }            catch (Exception e)            {                Logging.logger(DEFAULT_LOGGER_NAME).log(Level.SEVERE, "Configuration.ExceptionReadingPropsFile", e);            }        }        public synchronized Integer getIntegerValue(String key, Integer defaultValue)        {            Integer v = getIntegerValue(key);            return v != null ? v : defaultValue;        }        public synchronized Integer getIntegerValue(String key)        {            String v = getStringValue(key);            if (v == null)                return null;            try            {                return Integer.parseInt(v);            }            catch (NumberFormatException e)            {                Logging.logger().log(Level.SEVERE, "Configuration.ConversionError", v);                return null;            }        }        public String getStringValue(String key, String defaultValue)        {            String v = getStringValue(key);            return v != null ? v : defaultValue;        }        public synchronized String getStringValue(String key)        {            return properties.getProperty(key);        }    }}

⌨️ 快捷键说明

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