|
||||||||||
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 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 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 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 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 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 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 |