001package sec.geo.shape; 002 003import sec.sun.awt.geom.Area; 004import sec.geo.GeoArc; 005import sec.geo.GeoEllipse; 006import sec.geo.ShapeObject; 007import sec.geo.GeoPoint; 008import sec.geo.kml.KmlOptions.AltitudeMode; 009 010public class Radarc/* extends AArc */ { //AArc extends APivot which extends AExtrusion 011 012 private double minAltitudeMeters; 013 private double maxAltitudeMeters; 014 private Area shape; 015 protected double maxDistanceMeters; 016 protected double flatnessDistanceMeters; 017 private double minRadiusMeters; 018 protected double leftAzimuthDegrees, rightAzimuthDegrees; 019 protected GeoPoint pivot; 020 protected double radiusMeters; 021 protected AltitudeMode altitudeMode; 022 protected int limit; 023 024 public Radarc() { 025 maxDistanceMeters = 100000; 026 flatnessDistanceMeters = 1; 027 limit = 4; //was 4 028 } 029 030 public void setRightAzimuthDegrees(double rightAzimuthDegrees) { 031 this.rightAzimuthDegrees = rightAzimuthDegrees; 032 shapeChanged(); 033 } 034 035 public void setLeftAzimuthDegrees(double leftAzimuthDegrees) { 036 this.leftAzimuthDegrees = leftAzimuthDegrees; 037 shapeChanged(); 038 } 039 040 public void setMinRadius(double minRadiusMeters) { 041 this.minRadiusMeters = minRadiusMeters; 042 shapeChanged(); 043 } 044 045 protected void shapeChanged() { 046 shape = null; 047 } 048 049 //@Override 050 protected Area createShape() { 051 GeoArc arc = new GeoArc(pivot, radiusMeters * 2, radiusMeters * 2, leftAzimuthDegrees, rightAzimuthDegrees, 052 maxDistanceMeters, flatnessDistanceMeters, limit); 053 ShapeObject arcObj = new ShapeObject(arc); 054 //Area shape = new Area(arc); 055 Area shape1 = new Area(arcObj); 056 GeoEllipse ellipse = new GeoEllipse(pivot, minRadiusMeters * 2, minRadiusMeters * 2, maxDistanceMeters, 057 flatnessDistanceMeters, limit); 058 059 ShapeObject ellipseObj = new ShapeObject(ellipse); 060 061 shape1.subtract(new Area(ellipseObj)); 062 return shape1; 063 } 064 065 public double getMinAltitude() { 066 return minAltitudeMeters; 067 } 068 069 public void setMinAltitude(double minAltitudeMeters) { 070 this.minAltitudeMeters = minAltitudeMeters; 071 shapeChanged(); 072 } 073 074 public double getMaxAltitude() { 075 return maxAltitudeMeters; 076 } 077 078 public void setMaxAltitude(double maxAltitudeMeters) { 079 this.maxAltitudeMeters = maxAltitudeMeters; 080 shapeChanged(); 081 } 082 083 public void setMaxDistance(double maxDistanceMeters) { 084 this.maxDistanceMeters = maxDistanceMeters; 085 shapeChanged(); 086 } 087 088 public void setFlatness(double flatnessDistanceMeters) { 089 this.flatnessDistanceMeters = flatnessDistanceMeters; 090 shapeChanged(); 091 } 092 093 public void setLimit(int limit) { 094 this.limit = limit; 095 shapeChanged(); 096 } 097 098 public AltitudeMode getAltitudeMode() { 099 return altitudeMode; 100 } 101 102 public void setAltitudeMode(AltitudeMode altitudeMode) { 103 this.altitudeMode = altitudeMode; 104 } 105 106 public void setRadius(double radiusMeters) { 107 this.radiusMeters = radiusMeters; 108 shapeChanged(); 109 } 110 111 public void setPivot(GeoPoint pivot) { 112 this.pivot = pivot; 113 shapeChanged(); 114 } 115 116 public Area getShape() { 117 if (shape == null) { 118 shape = createShape(); 119 } 120 return shape; 121 } 122 123}