📄 shapeutils.java
字号:
/* Copyright (C) 2001, 2008 United States Government as represented bythe Administrator of the National Aeronautics and Space Administration.All Rights Reserved.*/package gov.nasa.worldwind.examples.util;import gov.nasa.worldwind.WorldWindow;import gov.nasa.worldwind.geom.*;import gov.nasa.worldwind.globes.Globe;import gov.nasa.worldwind.view.OrbitView;import java.util.*;/** * @author dcollins * @version $Id: ShapeUtils.java 9168 2009-03-05 00:40:03Z dcollins $ */public class ShapeUtils{ public static double getViewportScaleFactor(WorldWindow wwd) { return ((OrbitView) wwd.getView()).getZoom() / 8.0; } public static Position getNewShapePosition(WorldWindow wwd) { Line ray = new Line(wwd.getView().getEyePoint(), wwd.getView().getForwardVector()); Intersection[] intersection = wwd.getSceneController().getTerrain().intersect(ray); if (intersection != null && intersection.length != 0) { return wwd.getModel().getGlobe().computePositionFromPoint(intersection[0].getIntersectionPoint()); } else if (wwd.getView() instanceof OrbitView) { return ((OrbitView) wwd.getView()).getCenterPosition(); } return Position.ZERO; } public static Angle getNewShapeHeading(WorldWindow wwd, boolean matchViewHeading) { if (matchViewHeading) { if (wwd.getView() instanceof OrbitView) { return ((OrbitView) wwd.getView()).getHeading(); } } return Angle.ZERO; } public static List<LatLon> createSquareInViewport(WorldWindow wwd, Position position, Angle heading, double sizeInMeters) { Globe globe = wwd.getModel().getGlobe(); Matrix transform = Matrix.IDENTITY; transform = transform.multiply(globe.computeTransformToPosition(position)); transform = transform.multiply(Matrix.fromRotationZ(heading.multiply(-1))); double widthOver2 = sizeInMeters / 2.0; double heightOver2 = sizeInMeters / 2.0; Vec4[] points = new Vec4[] { new Vec4(-widthOver2, -heightOver2, 0.0).transformBy4(transform), // lower left new Vec4(widthOver2, -heightOver2, 0.0).transformBy4(transform), // lower right new Vec4(widthOver2, heightOver2, 0.0).transformBy4(transform), // upper right new Vec4(-widthOver2, heightOver2, 0.0).transformBy4(transform) // upper left }; LatLon[] locations = new LatLon[points.length]; for (int i = 0; i < locations.length; i++) { locations[i] = new LatLon(globe.computePositionFromPoint(points[i])); } return Arrays.asList(locations); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -