|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectcom.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 Form| Field 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 string-ified 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 screen| Method Detail |
|---|
public java.lang.String toString()
toString in class GeoProjProjection.getProjectionID()protected void init()
ProjMake sure you call super.init() if you override this method.
init in class GeoProjprotected 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 Projpublic 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 ProjectiongetUpperLeft in class Projpublic 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 ProjectiongetLowerRight 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 ProjectionforwardRaw in class Projrawllpts - 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 ProjectionforwardRaw in class Projrawllpts - 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 x-y 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 GeoProjrawllpts - 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 x-y 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 GeoProjrawllpts - 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 ProjectiongetName in class Proj
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||