public void render(final DrawContext dc) { //System.out.println("render"); final double x = dc.getView().getViewport().getWidth() - 75.0; final double y = 320.0; setScreenLocation(new Point((int) x, (int) y)); super.render(dc); }
/******************************************************************************************************************* * * ******************************************************************************************************************/ private Vec4 computeReferencePoint(DrawContext dc) { if (dc.getViewportCenterPosition() != null) { return dc.getGlobe().computePointFromPosition(dc.getViewportCenterPosition()); } java.awt.geom.Rectangle2D viewport = dc.getView().getViewport(); int x = (int) viewport.getWidth() / 2; for (int y = (int) (0.5 * viewport.getHeight()); y >= 0; y--) { Position pos = dc.getView().computePositionFromScreenPoint(x, y); if (pos == null) { continue; } return dc.getGlobe().computePointFromPosition(pos.getLatitude(), pos.getLongitude(), 0d); } return null; }
double currAlt = dc.getView().getCurrentEyePosition().getAltitude();
/******************************************************************************************************************* * * ******************************************************************************************************************/ private boolean atMaxLevel(DrawContext dc) { Position vpc = dc.getViewportCenterPosition(); if (dc.getView() == null || this.getLevels() == null || vpc == null) { return false; } if (!this.getLevels().getSector().contains(vpc.getLatitude(), vpc.getLongitude())) { return true; } Level nextToLast = this.getLevels().getNextToLastLevel(); if (nextToLast == null) { return true; } Sector centerSector = nextToLast.computeSectorForPosition(vpc.getLatitude(), vpc.getLongitude()); return this.needToSplit(dc, centerSector); }
/******************************************************************************************************************* * * ******************************************************************************************************************/ @Override protected double[] computeFrustumLimits (final @Nonnull DrawContext dc) { final double r = dc.getGlobe().getEquatorialRadius(); final Vec4 center = dc.getGlobe().getCenter(); final double distanceFromOrigin = dc.getView().getEyePoint().distanceTo3(center); final double near = 1000; // ditanceFromOrigine - r * 2; final double far = distanceFromOrigin; return new double[]{ near, far }; }
public static List<LatLon> getCornersHeuristic1( DrawContext dc ) { View view = dc.getView( ); Rectangle viewport = view.getViewport( ); List<LatLon> corners = new ArrayList<LatLon>( 4 ); corners.add( view.computePositionFromScreenPoint( viewport.getMinX( ), viewport.getMinY( ) ) ); corners.add( view.computePositionFromScreenPoint( viewport.getMinX( ), viewport.getMaxY( ) ) ); corners.add( view.computePositionFromScreenPoint( viewport.getMaxX( ), viewport.getMaxY( ) ) ); corners.add( view.computePositionFromScreenPoint( viewport.getMaxX( ), viewport.getMinY( ) ) ); return corners; }
public static List<LatLon> getCornersHeuristic2( DrawContext dc ) double x = dc.getView( ).getViewport( ).getWidth( ) / 2; double y = dc.getView( ).getViewport( ).getHeight( ) / 2; Position centerPosition = dc.getView( ).computePositionFromScreenPoint( x, y ); Vec4 center = dc.getGlobe( ).computePointFromPosition( centerPosition ); Vec4 eye = dc.getView( ).getEyePoint( ); double metersPerPixel = dc.getView( ).computePixelSizeAtDistance( distance ); View view = dc.getView( ); Rectangle viewport = view.getViewport( ); double viewportHeightMeters = viewport.getHeight( ) * metersPerPixel;
/******************************************************************************************************************* * * ******************************************************************************************************************/ @Override public boolean isLayerInView(DrawContext dc) { if (dc == null) { String message = Logging.getMessage("nullValue.DrawContextIsNull"); logger.severe(message); throw new IllegalStateException(message); } if (dc.getView() == null) { String message = Logging.getMessage("layers.AbstractLayer.NoViewSpecifiedInDrawingContext"); logger.severe(message); throw new IllegalStateException(message); } return !(dc.getVisibleSector() != null && !this.levels.getSector().intersects(dc.getVisibleSector())); }
/******************************************************************************************************************* * * ******************************************************************************************************************/ private boolean isTileVisible(DrawContext dc, MercatorTextureTile tile) { // if (!(tile.getExtent(dc).intersects(dc.getView().getFrustumInModelCoordinates()) // && (dc.getVisibleSector() == null || dc.getVisibleSector().intersects(tile.getSector())))) // return false; // // Position eyePos = dc.getView().getEyePosition(); // LatLon centroid = tile.getSector().getCentroid(); // Angle d = LatLon.greatCircleDistance(eyePos.getLatLon(), centroid); // if ((!tile.getLevelName().equals("0")) && d.compareTo(tile.getSector().getDeltaLat().multiply(2.5)) == 1) // return false; // // return true; // return tile.getExtent(dc).intersects( dc.getView().getFrustumInModelCoordinates()) && (dc.getVisibleSector() == null || dc.getVisibleSector().intersects(tile.getSector())); }
Vec4 centerPoint = sector.computeCenterPoint(dc.getGlobe()); View view = dc.getView(); double d1 = view.getEyePoint().distanceTo3(corners[0]); double d2 = view.getEyePoint().distanceTo3(corners[1]);