

PREV CLASS NEXT CLASS  FRAMES NO FRAMES  
SUMMARY: NESTED  FIELD  CONSTR  METHOD  DETAIL: FIELD  CONSTR  METHOD 
java.lang.Object com.bbn.openmap.proj.Proj com.bbn.openmap.proj.GeoProj com.bbn.openmap.proj.Cylindrical
public abstract class Cylindrical
Base of all cylindrical projections.
Projection
,
Proj
,
Mercator
,
CADRG
,
Serialized FormField Summary  

protected int 
half_world

protected java.awt.Point 
world

Fields inherited from class com.bbn.openmap.proj.GeoProj 

DATELINE, mercator, NORTH_POLE, NUM_DEFAULT_CIRCLE_VERTS, NUM_DEFAULT_GREAT_SEGS, pixelsPerMeter, planetPixelCircumference, planetPixelRadius, planetRadius, scaled_radius, SOUTH_POLE, XSCALE_THRESHOLD, XTHRESHOLD 
Fields inherited from class com.bbn.openmap.proj.Proj 

centerX, centerY, height, maxscale, MIN_HEIGHT, MIN_WIDTH, minscale, projID, rotationAngle, scale, ucuom, width 
Constructor Summary  

Cylindrical(LatLonPoint center,
float scale,
int width,
int height)
Construct a cylindrical projection. 
Method Summary  

protected java.util.ArrayList<float[]> 
_forwardPoly(double[] rawllpts,
int ltype,
int nsegs,
boolean isFilled)
Forward project a raw float[] Poly. 
protected java.util.ArrayList<float[]> 
_forwardPoly(float[] rawllpts,
int ltype,
int nsegs,
boolean isFilled)
Forward project a raw float[] Poly. 
protected void 
computeParameters()
Called when some fundamental parameters change. 
static void 
dumpPoly(double[] rawllpts,
float[] xs,
float[] ys)

static void 
dumpPoly(float[] rawllpts,
float[] xs,
float[] ys)

boolean 
forwardRaw(double[] rawllpts,
int rawoff,
float[] xcoords,
float[] ycoords,
boolean[] visible,
int copyoff,
int copylen)
Forward project a raw array of radian points. 
boolean 
forwardRaw(float[] rawllpts,
int rawoff,
float[] xcoords,
float[] ycoords,
boolean[] visible,
int copyoff,
int copylen)
Forward project a raw array of radian points. 
LatLonPoint 
getLowerRight()
Get the lower right (southeast) point of the projection. 
java.lang.String 
getName()
Get the name string of the projection. 
LatLonPoint 
getUpperLeft()
Get the upper left (northwest) point of the projection. 
protected void 
init()
Called after the center and scale is set in setParams, but before the scale is checked for legitimacy. 
java.lang.String 
toString()
Return stringified description of this projection. 
Methods inherited from class com.bbn.openmap.proj.Proj 

drawBackground, drawBackground, equals, forward, forward, forward, forwardLine, forwardPoly, forwardPoly, forwardRect, forwardShape, getHeight, getMaxScale, getMinScale, getProjectionID, getRotationAngle, getScale, getWidth, hashCode, inverse, inverse, inverseShape, isPlotable, makeClone, panE, panE, panN, panN, panNE, panNE, panNW, panNW, panS, panS, panSE, panSE, panSW, panSW, panW, panW, setCenter, setHeight, setMaxScale, setMinScale, setParms, setProjectionID, setRotationAngle, setScale, setWidth 
Methods inherited from class java.lang.Object 

finalize, getClass, notify, notifyAll, wait, wait, wait 
Field Detail 

protected transient java.awt.Point world
protected transient int half_world
Constructor Detail 

public Cylindrical(LatLonPoint center, float scale, int width, int height)
center
 LatLonPoint center of projectionscale
 float scale of projectionwidth
 width of screenheight
 height of screenMethod Detail 

public java.lang.String toString()
toString
in class GeoProj
Projection.getProjectionID()
protected void init()
Proj
Make sure you call super.init() if you override this method.
init
in class GeoProj
protected void computeParameters()
Each projection will decide how to respond to this change. For instance, they may need to recalculate "constant" parameters used in the forward() and inverse() calls.
computeParameters
in class Proj
public LatLonPoint getUpperLeft()
Returns the upper left point (or closest equivalent) of the projection based on the center point and height and width of screen.
getUpperLeft
in interface Projection
getUpperLeft
in class Proj
public LatLonPoint getLowerRight()
Returns the lower right point (or closest equivalent) of the projection based on the center point and height and width of screen.
getLowerRight
in interface Projection
getLowerRight
in class Proj
public boolean forwardRaw(float[] rawllpts, int rawoff, float[] xcoords, float[] ycoords, boolean[] visible, int copyoff, int copylen)
It does populate a visible array indicating whether the points are visible on the projected view of the world.
forwardRaw
in interface Projection
forwardRaw
in class Proj
rawllpts
 array of lat,lon,... in radiansrawoff
 offset into rawllptsxcoords
 x coordinatesycoords
 y coordinatesvisible
 coordinates visible?copyoff
 offset into x,y,visible arrayscopylen
 number of coordinates (coordinate arrays should be at
least this long, rawllpts should be at least twice as long).
public boolean forwardRaw(double[] rawllpts, int rawoff, float[] xcoords, float[] ycoords, boolean[] visible, int copyoff, int copylen)
It does populate a visible array indicating whether the points are visible on the projected view of the world.
forwardRaw
in interface Projection
forwardRaw
in class Proj
rawllpts
 array of lat,lon,... in radiansrawoff
 offset into rawllptsxcoords
 x coordinatesycoords
 y coordinatesvisible
 coordinates visible?copyoff
 offset into x,y,visible arrayscopylen
 number of coordinates (coordinate arrays should be at
least this long, rawllpts should be at least twice as long).
protected java.util.ArrayList<float[]> _forwardPoly(float[] rawllpts, int ltype, int nsegs, boolean isFilled)
Implementation:
For the cylindrical "boxy" family of projections, we project all the
points, and check the horizontal (longitudinal) spacing between vertices
as we go. If the spacing is greater than half the world width
(circumference) in pixels, we assume that the segment has wrapped off one
edge of the screen and back onto the other side. (NOTE that our
restrictions on line segments mentioned in the Projection interface do
not allow for lines >= 180 degrees of arc or for the difference in
longitude between two points to be >= 180 degrees of arc).
For the case where a segment wraps offscreen, we keep track of the wrapping adjustment factor, and shift the points as we go. After projecting and shifting all the points, we have a single continuous xy polygon. We then need to make shifted copies of this polygon for the maxima and minima wrap values calculated during the projection process. This allows us to see the discontinuous (wrapped) sections on the screen when they are drawn.
_forwardPoly
in class GeoProj
rawllpts
 float[] of lat,lon,lat,lon,... in RADIANS!ltype
 line type (straight, rhumbline, greatcircle)nsegs
 number of segments between vertices (or if < 0, generate
this value internally)isFilled
 filled poly? this is currently ignored for cylindrical
projections.
protected java.util.ArrayList<float[]> _forwardPoly(double[] rawllpts, int ltype, int nsegs, boolean isFilled)
Implementation:
For the cylindrical "boxy" family of projections, we project all the
points, and check the horizontal (longitudinal) spacing between vertices
as we go. If the spacing is greater than half the world width
(circumference) in pixels, we assume that the segment has wrapped off one
edge of the screen and back onto the other side. (NOTE that our
restrictions on line segments mentioned in the Projection interface do
not allow for lines >= 180 degrees of arc or for the difference in
longitude between two points to be >= 180 degrees of arc).
For the case where a segment wraps offscreen, we keep track of the wrapping adjustment factor, and shift the points as we go. After projecting and shifting all the points, we have a single continuous xy polygon. We then need to make shifted copies of this polygon for the maxima and minima wrap values calculated during the projection process. This allows us to see the discontinuous (wrapped) sections on the screen when they are drawn.
_forwardPoly
in class GeoProj
rawllpts
 float[] of lat,lon,lat,lon,... in RADIANS!ltype
 line type (straight, rhumbline, greatcircle)nsegs
 number of segments between vertices (or if < 0, generate
this value internally)isFilled
 filled poly? this is currently ignored for cylindrical
projections.
public static final void dumpPoly(float[] rawllpts, float[] xs, float[] ys)
public static final void dumpPoly(double[] rawllpts, float[] xs, float[] ys)
public java.lang.String getName()
getName
in interface Projection
getName
in class Proj


PREV CLASS NEXT CLASS  FRAMES NO FRAMES  
SUMMARY: NESTED  FIELD  CONSTR  METHOD  DETAIL: FIELD  CONSTR  METHOD 