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

📄 anaglyphstereo.java

📁 world wind java sdk 源码
💻 JAVA
字号:
/*Copyright (C) 2001, 2006 United States Governmentas represented by the Administrator of theNational Aeronautics and Space Administration.All Rights Reserved.*/package gov.nasa.worldwind.examples;import gov.nasa.worldwind.*;import gov.nasa.worldwind.geom.Angle;import gov.nasa.worldwind.render.Renderable;import gov.nasa.worldwind.layers.Earth.BMNGOneImage;import gov.nasa.worldwind.avlist.AVKey;import javax.swing.*;import javax.swing.event.ChangeListener;import javax.swing.event.ChangeEvent;import javax.swing.border.CompoundBorder;import javax.swing.border.TitledBorder;import java.awt.*;import java.awt.event.ActionListener;import java.awt.event.ActionEvent;import java.awt.event.MouseListener;import java.awt.event.MouseEvent;/** Using the AnaglyphSceneController * @author tag * @version $Id: AnaglyphStereo.java 3155 2007-09-29 07:29:54Z patrickmurris $ */public class AnaglyphStereo extends ApplicationTemplate{    public static class AppFrame extends ApplicationTemplate.AppFrame    {        private String displayMode;        private Angle focusAngle;        private JSlider focusAngleSlider;        public AppFrame()        {            super(true, true, false);            // Retreive current settings            this.displayMode = ((AnaglyphSceneController)this.getWwd().getSceneController()).getDisplayMode();            this.focusAngle = ((AnaglyphSceneController)this.getWwd().getSceneController()).getFocusAngle();            // Add a stereo control panel to the layer panel            this.getLayerPanel().add(makeStereoPanel(),  BorderLayout.SOUTH);        }        private JPanel makeStereoPanel()        {            JPanel stereoPanel = new JPanel(new GridLayout(0, 1, 0, 0));            // Mono/Stereo button group            JPanel buttons = new JPanel(new GridLayout(0, 2, 0, 0));            ButtonGroup group = new ButtonGroup();            JRadioButton bMono = new JRadioButton("Mono");            bMono.addActionListener(new ActionListener()            {                public void actionPerformed(ActionEvent actionEvent)                {                    displayMode = AnaglyphSceneController.DISPLAY_MODE_MONO;                    update();                }            });            bMono.setSelected(!this.displayMode.equals(AnaglyphSceneController.DISPLAY_MODE_STEREO));            group.add(bMono);            buttons.add(bMono);            JRadioButton bStereo = new JRadioButton("Stereo");            bStereo.addActionListener(new ActionListener()            {                public void actionPerformed(ActionEvent event)                {                    displayMode = AnaglyphSceneController.DISPLAY_MODE_STEREO;                    update();                }            });            bStereo.setSelected(this.displayMode.equals(AnaglyphSceneController.DISPLAY_MODE_STEREO));            group.add(bStereo);            buttons.add(bStereo);            // Focus angle slider            JPanel slider = new JPanel(new GridLayout(0, 1, 0, 0));            JSlider s = new JSlider(JSlider.HORIZONTAL, 0, 50, (int)(this.focusAngle.degrees * 10));  // 0 - 5 in tenth of degrees            s.setMajorTickSpacing(10);            s.setMinorTickSpacing(1);            s.setPaintTicks(true);            s.setPaintLabels(true);            s.setToolTipText("Focus angle 1/10 degrees");            s.addChangeListener(new ChangeListener()            {                public void stateChanged(ChangeEvent event)                {                    JSlider s = (JSlider)event.getSource();                    if (!s.getValueIsAdjusting())                    {                        focusAngle = Angle.fromDegrees( (double)s.getValue() / 10);                        update();                    }                }            });            slider.add(s);            s.setEnabled(this.displayMode.equals(AnaglyphSceneController.DISPLAY_MODE_STEREO));            this.focusAngleSlider = s;            // Help label            JPanel text = new JPanel(new GridLayout(0, 1, 0, 0));            JLabel l = new JLabel("Tip: pitch view for stereo effect.");            l.setHorizontalAlignment(SwingConstants.CENTER);            text.add(l);            // Assembly            stereoPanel.add(buttons);            stereoPanel.add(slider);            stereoPanel.add(text);            stereoPanel.setBorder(                new CompoundBorder(BorderFactory.createEmptyBorder(9, 9, 9, 9), new TitledBorder("View")));            stereoPanel.setToolTipText("Stereo controls");            return stereoPanel;        }        // Update worldwind        private void update()        {            AnaglyphSceneController asc = (AnaglyphSceneController)this.getWwd().getSceneController();            asc.setDisplayMode(this.displayMode);            asc.setFocusAngle(this.focusAngle);            this.focusAngleSlider.setEnabled(this.displayMode.equals(AnaglyphSceneController.DISPLAY_MODE_STEREO));            this.getWwd().redraw();        }    }    public static void main(String[] args)    {        Configuration.setValue(AVKey.SCENE_CONTROLLER_CLASS_NAME, AnaglyphSceneController.class.getName());        ApplicationTemplate.start("World Wind Anaglyph Stereo", AppFrame.class);    }}

⌨️ 快捷键说明

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