📄 anaglyphstereo.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 + -