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

📄 shapeutils.java

📁 world wind java sdk 源码
💻 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 + -