001package sec.geo.shape; 002 003import sec.geo.GeoPoint; 004import sec.geo.ShapeObject; 005import sec.geo.GeoEllipse; 006import sec.geo.kml.KmlOptions.AltitudeMode; 007 008public class Circle /*extends APivot*/ { //APivot extends AExtrusion 009 010 protected GeoPoint pivot; 011 protected double radiusMeters; 012 private ShapeObject shape; 013 protected double maxDistanceMeters; 014 protected double flatnessDistanceMeters; 015 protected AltitudeMode altitudeMode; 016 private double minAltitudeMeters; 017 private double maxAltitudeMeters; 018 protected int limit; 019 020 public Circle() { 021 pivot = new GeoPoint(); 022 maxDistanceMeters = 100000; 023 flatnessDistanceMeters = 1; 024 limit = 4; 025 } 026 027 public ShapeObject getShape() { 028 if (shape == null) { 029 shape = createShape(); 030 } 031 return shape; 032 } 033 034 //@Override 035 public void setRadius(double radiusMeters) { 036 this.radiusMeters = radiusMeters; 037 shapeChanged(); 038 } 039 040 //@Override 041 public void setPivot(GeoPoint pivot) { 042 this.pivot = pivot; 043 shapeChanged(); 044 } 045 046 //@Override 047 protected ShapeObject createShape() { 048 GeoEllipse e = new GeoEllipse(pivot, radiusMeters * 2, radiusMeters * 2, maxDistanceMeters, 049 flatnessDistanceMeters, limit); 050 return new ShapeObject(e); 051 } 052 053 protected void shapeChanged() { 054 shape = null; 055 } 056 057 public double getMinAltitude() { 058 return minAltitudeMeters; 059 } 060 061 public void setMinAltitude(double minAltitudeMeters) { 062 this.minAltitudeMeters = minAltitudeMeters; 063 shapeChanged(); 064 } 065 066 public double getMaxAltitude() { 067 return maxAltitudeMeters; 068 } 069 070 public void setMaxAltitude(double maxAltitudeMeters) { 071 this.maxAltitudeMeters = maxAltitudeMeters; 072 shapeChanged(); 073 } 074 075 public void setMaxDistance(double maxDistanceMeters) { 076 this.maxDistanceMeters = maxDistanceMeters; 077 shapeChanged(); 078 } 079 080 public void setFlatness(double flatnessDistanceMeters) { 081 this.flatnessDistanceMeters = flatnessDistanceMeters; 082 shapeChanged(); 083 } 084 085 public void setLimit(int limit) { 086 this.limit = limit; 087 shapeChanged(); 088 } 089 090 public AltitudeMode getAltitudeMode() { 091 return altitudeMode; 092 } 093 094 public void setAltitudeMode(AltitudeMode altitudeMode) { 095 this.altitudeMode = altitudeMode; 096 } 097}