本文整理汇总了Java中org.gavaghan.geodesy.GlobalCoordinates类的典型用法代码示例。如果您正苦于以下问题:Java GlobalCoordinates类的具体用法?Java GlobalCoordinates怎么用?Java GlobalCoordinates使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
GlobalCoordinates类属于org.gavaghan.geodesy包,在下文中一共展示了GlobalCoordinates类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。
示例1: updateTrackDistances
import org.gavaghan.geodesy.GlobalCoordinates; //导入依赖的package包/类
/**
* updates the distance information in the trackpoints of the track object.
*
* @param track
* Track object to update
* @throws java.lang.NullPointerException
* if track is empty
*/
public static void updateTrackDistances(Track track) {
Optional.ofNullable(Objects.requireNonNull(track).getTrackPoints()).ifPresent(trackPoints -> {
GeodeticCalculator geoCalc = new GeodeticCalculator();
Double distance = 0.0;
GlobalCoordinates lastCoordinate = null;
for (TrackPoint trackPoint : trackPoints) {
trackPoint.setDistance(distance);
GlobalCoordinates thisCoordinate =
new GlobalCoordinates(trackPoint.getLatitude(), trackPoint.getLongitude());
if (null != lastCoordinate) {
distance += geoCalc.calculateGeodeticCurve(Ellipsoid.WGS84, lastCoordinate, thisCoordinate)
.getEllipsoidalDistance();
}
lastCoordinate = thisCoordinate;
}
});
}
开发者ID:sothawo,项目名称:trakxmap,代码行数:26,代码来源:Geo.java
示例2: GeoBlock2
import org.gavaghan.geodesy.GlobalCoordinates; //导入依赖的package包/类
public GeoBlock2(GeoPoint p1, GeoPoint p2, double leftWidthMeters, double rightWidthMeters, double maxDistanceMeters,
double flatnessDistanceMeters, int limit) {
super(maxDistanceMeters, flatnessDistanceMeters, limit);
GlobalCoordinates c1 = toGlobalCoord(p1);
GlobalCoordinates c2 = toGlobalCoord(p2);
GeodeticCurve curve = geoCalc.calculateGeodeticCurve(REFERENCE_ELLIPSOID, c1, c2);
double a1 = curve.getAzimuth();
double a2 = curve.getReverseAzimuth();
double leftRadius = leftWidthMeters;
double rightRadius = rightWidthMeters;
GlobalCoordinates c = geoCalc.calculateEndingGlobalCoordinates(REFERENCE_ELLIPSOID, c1, a1 - 90, leftRadius);
moveTo(c.getLongitude(), c.getLatitude());
c = geoCalc.calculateEndingGlobalCoordinates(REFERENCE_ELLIPSOID, c2, a2 + 90, leftRadius);
lineTo(c.getLongitude(), c.getLatitude());
c = geoCalc.calculateEndingGlobalCoordinates(REFERENCE_ELLIPSOID, c2, a2 - 90, rightRadius);
lineTo(c.getLongitude(), c.getLatitude());
c = geoCalc.calculateEndingGlobalCoordinates(REFERENCE_ELLIPSOID, c1, a1 + 90, rightRadius);
lineTo(c.getLongitude(), c.getLatitude());
closePath();
}
开发者ID:missioncommand,项目名称:mil-sym-java,代码行数:23,代码来源:GeoBlock2.java
示例3: GeoBlock
import org.gavaghan.geodesy.GlobalCoordinates; //导入依赖的package包/类
public GeoBlock(GeoPoint p1, GeoPoint p2, double widthMeters, double maxDistanceMeters,
double flatnessDistanceMeters, int limit) {
super(maxDistanceMeters, flatnessDistanceMeters, limit);
GlobalCoordinates c1 = toGlobalCoord(p1);
GlobalCoordinates c2 = toGlobalCoord(p2);
GeodeticCurve curve = geoCalc.calculateGeodeticCurve(REFERENCE_ELLIPSOID, c1, c2);
double a1 = curve.getAzimuth();
double a2 = curve.getReverseAzimuth();
double radius = widthMeters / 2;
GlobalCoordinates c = geoCalc.calculateEndingGlobalCoordinates(REFERENCE_ELLIPSOID, c1, a1 - 90, radius);
moveTo(c.getLongitude(), c.getLatitude());
c = geoCalc.calculateEndingGlobalCoordinates(REFERENCE_ELLIPSOID, c2, a2 + 90, radius);
lineTo(c.getLongitude(), c.getLatitude());
c = geoCalc.calculateEndingGlobalCoordinates(REFERENCE_ELLIPSOID, c2, a2 - 90, radius);
lineTo(c.getLongitude(), c.getLatitude());
c = geoCalc.calculateEndingGlobalCoordinates(REFERENCE_ELLIPSOID, c1, a1 + 90, radius);
lineTo(c.getLongitude(), c.getLatitude());
closePath();
}
开发者ID:missioncommand,项目名称:mil-sym-java,代码行数:22,代码来源:GeoBlock.java
示例4: distance3D
import org.gavaghan.geodesy.GlobalCoordinates; //导入依赖的package包/类
public double distance3D(WayPoint other) {
double d = geoCalc.calculateGeodeticCurve(reference,
new GlobalCoordinates(getLat(), this.getLon()),
new GlobalCoordinates(other.getLat(), other.getLon())
).getEllipsoidalDistance();
if (!Double.isNaN(getEle()) && !Double.isNaN(other.getEle())) {
double h = (getEle() - other.getEle());
return Math.sqrt(d * d + h * h);
} else return d;
}
开发者ID:gimportexportdevs,项目名称:gexporter,代码行数:12,代码来源:WayPoint.java
示例5: lineTo
import org.gavaghan.geodesy.GlobalCoordinates; //导入依赖的package包/类
public void lineTo(GeoPoint point) {
//Path2D newPath = new Path2D.Double();
GeneralPath newPath = new GeneralPath();
// Move to the initial point
GeoPoint lastPoint = new GeoPoint();
if (toPoints.size() > 0) {
lastPoint = toPoints.get(toPoints.size() - 1);
newPath.moveTo(lastPoint.x, lastPoint.y);
}
// Calculate the curve to the new point
GlobalCoordinates start = toGlobalCoord(lastPoint);
GlobalCoordinates end = toGlobalCoord(point);
GeodeticCurve curve = geoCalc.calculateGeodeticCurve(REFERENCE_ELLIPSOID, start, end);
// Generate points along the curve, adding them to the new path
double distance = maxDistanceMeters;
while (distance < curve.getEllipsoidalDistance()) {
GlobalCoordinates c = geoCalc.calculateEndingGlobalCoordinates(REFERENCE_ELLIPSOID, start, curve
.getAzimuth(), distance);
newPath.lineTo(c.getLongitude(), c.getLatitude());
distance += maxDistanceMeters;
}
newPath.lineTo(point.x, point.y);
// Append the new path to the existing path
path.append(newPath, true);
toPoints.add(point);
}
开发者ID:missioncommand,项目名称:mil-sym-android,代码行数:32,代码来源:GeoEllipse.java
示例6: GeoBlock2
import org.gavaghan.geodesy.GlobalCoordinates; //导入依赖的package包/类
public GeoBlock2(GeoPoint p1, GeoPoint p2, double leftWidthMeters, double rightWidthMeters, double maxDistanceMeters,
double flatnessDistanceMeters, int limit) {
//super(maxDistanceMeters, flatnessDistanceMeters, limit);
path = new GeneralPath();
toPoints = new ArrayList<GeoPoint>();
geoCalc = new GeodeticCalculator();
this.maxDistanceMeters = maxDistanceMeters;
//this.flatnessDistanceMeters = flatnessDistanceMeters;
//this.limit = limit;
GlobalCoordinates c1 = toGlobalCoord(p1);
GlobalCoordinates c2 = toGlobalCoord(p2);
GeodeticCurve curve = geoCalc.calculateGeodeticCurve(REFERENCE_ELLIPSOID, c1, c2);
double a1 = curve.getAzimuth();
double a2 = curve.getReverseAzimuth();
double leftRadius = leftWidthMeters;
double rightRadius = rightWidthMeters;
//diagnostic to prevent error in calculate global coords if points are identical
if(p1.x==p2.x && p1.y==p2.y)
return;
//end section
GlobalCoordinates c = geoCalc.calculateEndingGlobalCoordinates(REFERENCE_ELLIPSOID, c1, a1 - 90, leftRadius);
c = geoCalc.calculateEndingGlobalCoordinates(REFERENCE_ELLIPSOID, c1, a1 - 90, leftRadius);
moveToLatLong(c.getLongitude(), c.getLatitude());
c = geoCalc.calculateEndingGlobalCoordinates(REFERENCE_ELLIPSOID, c2, a2 + 90, leftRadius);
lineToLatLong(c.getLongitude(), c.getLatitude());
c = geoCalc.calculateEndingGlobalCoordinates(REFERENCE_ELLIPSOID, c2, a2 - 90, rightRadius);
lineToLatLong(c.getLongitude(), c.getLatitude());
c = geoCalc.calculateEndingGlobalCoordinates(REFERENCE_ELLIPSOID, c1, a1 + 90, rightRadius);
lineToLatLong(c.getLongitude(), c.getLatitude());
closePath();
}
开发者ID:missioncommand,项目名称:mil-sym-android,代码行数:33,代码来源:GeoBlock2.java
示例7: lineTo
import org.gavaghan.geodesy.GlobalCoordinates; //导入依赖的package包/类
public void lineTo(GeoPoint point) {
GeneralPath newPath = new GeneralPath();
// Move to the initial point
GeoPoint lastPoint = new GeoPoint();
if (toPoints.size() > 0) {
lastPoint = toPoints.get(toPoints.size() - 1);
newPath.moveTo(lastPoint.x, lastPoint.y);
}
// Calculate the curve to the new point
GlobalCoordinates start = toGlobalCoord(lastPoint);
GlobalCoordinates end = toGlobalCoord(point);
GeodeticCurve curve = geoCalc.calculateGeodeticCurve(REFERENCE_ELLIPSOID, start, end);
// Generate points along the curve, adding them to the new path
double distance = maxDistanceMeters;
while (distance < curve.getEllipsoidalDistance()) {
GlobalCoordinates c = geoCalc.calculateEndingGlobalCoordinates(REFERENCE_ELLIPSOID, start, curve
.getAzimuth(), distance);
newPath.lineTo(c.getLongitude(), c.getLatitude());
distance += maxDistanceMeters;
}
newPath.lineTo(point.x, point.y);
// Append the new path to the existing path
path.append(newPath, true);
toPoints.add(point);
simplify();
}
开发者ID:missioncommand,项目名称:mil-sym-android,代码行数:32,代码来源:GeoBlock2.java
示例8: lineTo
import org.gavaghan.geodesy.GlobalCoordinates; //导入依赖的package包/类
public void lineTo(GeoPoint point) {
GeneralPath newPath = new GeneralPath();
// Move to the initial point
GeoPoint lastPoint = new GeoPoint();
if (toPoints.size() > 0) {
lastPoint = toPoints.get(toPoints.size() - 1);
newPath.moveTo(lastPoint.x, lastPoint.y);
}
// Calculate the curve to the new point
GlobalCoordinates start = toGlobalCoord(lastPoint);
GlobalCoordinates end = toGlobalCoord(point);
GeodeticCurve curve = geoCalc.calculateGeodeticCurve(REFERENCE_ELLIPSOID, start, end);
// Generate points along the curve, adding them to the new path
double distance = maxDistanceMeters;
while (distance < curve.getEllipsoidalDistance()) {
GlobalCoordinates c = geoCalc.calculateEndingGlobalCoordinates(REFERENCE_ELLIPSOID, start, curve
.getAzimuth(), distance);
newPath.lineTo(c.getLongitude(), c.getLatitude());
distance += maxDistanceMeters;
}
newPath.lineTo(point.x, point.y);
// Append the new path to the existing path
path.append(newPath, true);
toPoints.add(point);
}
开发者ID:missioncommand,项目名称:mil-sym-android,代码行数:31,代码来源:GeoPath.java
示例9: GeoBlock
import org.gavaghan.geodesy.GlobalCoordinates; //导入依赖的package包/类
public GeoBlock(GeoPoint p1, GeoPoint p2, double widthMeters, double maxDistanceMeters,
double flatnessDistanceMeters, int limit) {
//super(maxDistanceMeters, flatnessDistanceMeters, limit);
path = new GeneralPath();
toPoints = new ArrayList<GeoPoint>();
geoCalc = new GeodeticCalculator();
this.maxDistanceMeters = maxDistanceMeters;
//this.flatnessDistanceMeters = flatnessDistanceMeters;
//this.limit = limit;
GlobalCoordinates c1 = toGlobalCoord(p1);
GlobalCoordinates c2 = toGlobalCoord(p2);
GeodeticCurve curve = geoCalc.calculateGeodeticCurve(REFERENCE_ELLIPSOID, c1, c2);
double a1 = curve.getAzimuth();
double a2 = curve.getReverseAzimuth();
double radius = widthMeters / 2;
//diagnostic to prevent error in calculate global coords if points are identical
if(p1.x==p2.x && p1.y==p2.y)
return;
//end section
GlobalCoordinates c = geoCalc.calculateEndingGlobalCoordinates(REFERENCE_ELLIPSOID, c1, a1 - 90, radius);
moveToLatLong(c.getLongitude(), c.getLatitude());
c = geoCalc.calculateEndingGlobalCoordinates(REFERENCE_ELLIPSOID, c2, a2 + 90, radius);
lineToLatLong(c.getLongitude(), c.getLatitude());
c = geoCalc.calculateEndingGlobalCoordinates(REFERENCE_ELLIPSOID, c2, a2 - 90, radius);
lineToLatLong(c.getLongitude(), c.getLatitude());
c = geoCalc.calculateEndingGlobalCoordinates(REFERENCE_ELLIPSOID, c1, a1 + 90, radius);
lineToLatLong(c.getLongitude(), c.getLatitude());
closePath();
}
开发者ID:missioncommand,项目名称:mil-sym-android,代码行数:31,代码来源:GeoBlock.java
示例10: lineTo
import org.gavaghan.geodesy.GlobalCoordinates; //导入依赖的package包/类
public void lineTo(GeoPoint point) {
GeneralPath newPath = new GeneralPath();
// Move to the initial point
GeoPoint lastPoint = new GeoPoint();
if (toPoints.size() > 0) {
lastPoint = toPoints.get(toPoints.size() - 1);
newPath.moveTo(lastPoint.x, lastPoint.y);
}
// Calculate the curve to the new point
GlobalCoordinates start = toGlobalCoord(lastPoint);
GlobalCoordinates end = toGlobalCoord(point);
GeodeticCurve curve = geoCalc.calculateGeodeticCurve(REFERENCE_ELLIPSOID, start, end);
// Generate points along the curve, adding them to the new path
double distance = maxDistanceMeters;
while (distance < curve.getEllipsoidalDistance()) {
GlobalCoordinates c = geoCalc.calculateEndingGlobalCoordinates(REFERENCE_ELLIPSOID, start, curve
.getAzimuth(), distance);
newPath.lineTo(c.getLongitude(), c.getLatitude());
distance += maxDistanceMeters;
}
newPath.lineTo(point.x, point.y);
// Append the new path to the existing path
path.append(newPath, true);
//path.lineTo(point.x, point.y);
toPoints.add(point);
simplify();
}
开发者ID:missioncommand,项目名称:mil-sym-android,代码行数:32,代码来源:GeoBlock.java
示例11: lineTo
import org.gavaghan.geodesy.GlobalCoordinates; //导入依赖的package包/类
public void lineTo(GeoPoint point) {
GeneralPath newPath = new GeneralPath();
// Move to the initial point
GeoPoint lastPoint = new GeoPoint();
if (toPoints.size() > 0) {
lastPoint = toPoints.get(toPoints.size() - 1);
newPath.moveTo(lastPoint.x, lastPoint.y);
}
// Calculate the curve to the new point
GlobalCoordinates start = toGlobalCoord(lastPoint);
GlobalCoordinates end = toGlobalCoord(point);
GeodeticCurve curve = geoCalc.calculateGeodeticCurve(REFERENCE_ELLIPSOID, start, end);
// Generate points along the curve, adding them to the new path
double distance = maxDistanceMeters;
while (distance < curve.getEllipsoidalDistance()) {
GlobalCoordinates c = geoCalc.calculateEndingGlobalCoordinates(REFERENCE_ELLIPSOID, start, curve
.getAzimuth(), distance);
newPath.lineTo(c.getLongitude(), c.getLatitude());
distance += maxDistanceMeters;
}
newPath.lineTo(point.x, point.y);
// Append the new path to the existing path
path.append(newPath, true);
toPoints.add(point);
}
开发者ID:missioncommand,项目名称:mil-sym-android,代码行数:31,代码来源:GeoArc.java
示例12: lineTo
import org.gavaghan.geodesy.GlobalCoordinates; //导入依赖的package包/类
public void lineTo(GeoPoint point) {
Path2D newPath = new Path2D.Double();
// Move to the initial point
GeoPoint lastPoint = new GeoPoint();
if (toPoints.size() > 0) {
lastPoint = toPoints.get(toPoints.size() - 1);
newPath.moveTo(lastPoint.x, lastPoint.y);
}
// Calculate the curve to the new point
GlobalCoordinates start = toGlobalCoord(lastPoint);
GlobalCoordinates end = toGlobalCoord(point);
GeodeticCurve curve = geoCalc.calculateGeodeticCurve(REFERENCE_ELLIPSOID, start, end);
// Generate points along the curve, adding them to the new path
double distance = maxDistanceMeters;
while (distance < curve.getEllipsoidalDistance()) {
GlobalCoordinates c = geoCalc.calculateEndingGlobalCoordinates(REFERENCE_ELLIPSOID, start, curve
.getAzimuth(), distance);
newPath.lineTo(c.getLongitude(), c.getLatitude());
distance += maxDistanceMeters;
}
newPath.lineTo(point.x, point.y);
// Append the new path to the existing path
path.append(newPath, true);
toPoints.add(point);
}
开发者ID:missioncommand,项目名称:mil-sym-java,代码行数:31,代码来源:GeoPath.java
示例13: distance
import org.gavaghan.geodesy.GlobalCoordinates; //导入依赖的package包/类
public double distance(WayPoint other) {
return geoCalc.calculateGeodeticCurve(reference,
new GlobalCoordinates(getLat(), this.getLon()),
new GlobalCoordinates(other.getLat(), other.getLon())
).getEllipsoidalDistance();
}
开发者ID:gimportexportdevs,项目名称:gexporter,代码行数:7,代码来源:WayPoint.java
示例14: arcTo
import org.gavaghan.geodesy.GlobalCoordinates; //导入依赖的package包/类
public final void arcTo(GeoPoint pivot, double widthMeters, double heightMeters, double leftAzimuthDegrees,
double rightAzimuthDegrees) {
//Path2D newPath = new Path2D.Double();
GeneralPath newPath = new GeneralPath();
Arc2D arc;
if (leftAzimuthDegrees > rightAzimuthDegrees) {
arc = new Arc2D(-widthMeters / 2, -heightMeters / 2, widthMeters, heightMeters,
leftAzimuthDegrees - 90, Math.abs((360 - leftAzimuthDegrees) + rightAzimuthDegrees), Arc2D.OPEN);
} else {
arc = new Arc2D(-widthMeters / 2, -heightMeters / 2, widthMeters, heightMeters,
leftAzimuthDegrees - 90, Math.abs(leftAzimuthDegrees - rightAzimuthDegrees), Arc2D.OPEN);
}
GeoPoint point = null;
if (pivot != null) {
FlatteningPathIterator it = new FlatteningPathIterator(arc.getPathIterator(null), flatnessDistanceMeters, limit);
while (!it.isDone()) {
// Add a point to the list for each segment flattened from the curve
double[] strokePoints = new double[6];
int type = it.currentSegment(strokePoints);
double x = strokePoints[0];
double y = strokePoints[1];
double azimuth = Angle.toDegrees(Math.atan2(x, y));
GlobalCoordinates coord = new GlobalCoordinates(pivot.getLatitude(), pivot.getLongitude());
GlobalCoordinates c = geoCalc.calculateEndingGlobalCoordinates(REFERENCE_ELLIPSOID, coord, azimuth,
//new Point2D().distance(x, y));
Point2D.distance(0, 0, x, y));
switch (type) {
case PathIterator.SEG_MOVETO:
newPath.moveTo(c.getLongitude(), c.getLatitude());
GeoPoint startPoint = new GeoPoint(c.getLongitude(), c.getLatitude());
if (toPoints.size() > 0 && !startPoint.equals(toPoints.get(toPoints.size() - 1))) {
lineTo(startPoint);
}
break;
case PathIterator.SEG_LINETO:
newPath.lineTo(c.getLongitude(), c.getLatitude());
point = new GeoPoint(c.getLongitude(), c.getLatitude());
break;
}
it.next();
}
}
path.append(newPath, true);
toPoints.add(point);
}
开发者ID:missioncommand,项目名称:mil-sym-android,代码行数:49,代码来源:GeoEllipse.java
示例15: toGlobalCoord
import org.gavaghan.geodesy.GlobalCoordinates; //导入依赖的package包/类
protected GlobalCoordinates toGlobalCoord(GeoPoint point) {
return new GlobalCoordinates(point.getLatitude(), point.getLongitude());
}
开发者ID:missioncommand,项目名称:mil-sym-android,代码行数:4,代码来源:GeoEllipse.java
示例16: toGlobalCoord
import org.gavaghan.geodesy.GlobalCoordinates; //导入依赖的package包/类
protected final GlobalCoordinates toGlobalCoord(GeoPoint point) {
return new GlobalCoordinates(point.getLatitude(), point.getLongitude());
}
开发者ID:missioncommand,项目名称:mil-sym-android,代码行数:4,代码来源:GeoBlock2.java
示例17: arcTo
import org.gavaghan.geodesy.GlobalCoordinates; //导入依赖的package包/类
public void arcTo(GeoPoint pivot, double widthMeters, double heightMeters, double leftAzimuthDegrees,
double rightAzimuthDegrees) {
GeneralPath newPath = new GeneralPath();
Arc2D arc;
if (leftAzimuthDegrees > rightAzimuthDegrees) {
arc = new Arc2D(-widthMeters / 2, -heightMeters / 2, widthMeters, heightMeters,
leftAzimuthDegrees - 90, Math.abs((360 - leftAzimuthDegrees) + rightAzimuthDegrees), Arc2D.OPEN);
} else {
arc = new Arc2D(-widthMeters / 2, -heightMeters / 2, widthMeters, heightMeters,
leftAzimuthDegrees - 90, Math.abs(leftAzimuthDegrees - rightAzimuthDegrees), Arc2D.OPEN);
}
GeoPoint point = null;
if (pivot != null) {
FlatteningPathIterator it = new FlatteningPathIterator(arc.getPathIterator(null), flatnessDistanceMeters, limit);
while (!it.isDone()) {
// Add a point to the list for each segment flattened from the curve
double[] strokePoints = new double[6];
int type = it.currentSegment(strokePoints);
double x = strokePoints[0];
double y = strokePoints[1];
double azimuth = Angle.toDegrees(Math.atan2(x, y));
GlobalCoordinates coord = new GlobalCoordinates(pivot.getLatitude(), pivot.getLongitude());
GlobalCoordinates c = geoCalc.calculateEndingGlobalCoordinates(REFERENCE_ELLIPSOID, coord, azimuth,
//new Point2D(0,0).distance(x, y));
Point2D.distance(0, 0, x, y));
switch (type) {
case PathIterator.SEG_MOVETO:
newPath.moveTo(c.getLongitude(), c.getLatitude());
GeoPoint startPoint = new GeoPoint(c.getLongitude(), c.getLatitude());
if (toPoints.size() > 0 && !startPoint.equals(toPoints.get(toPoints.size() - 1))) {
lineTo(startPoint);
}
break;
case PathIterator.SEG_LINETO:
newPath.lineTo(c.getLongitude(), c.getLatitude());
point = new GeoPoint(c.getLongitude(), c.getLatitude());
break;
}
it.next();
}
}
path.append(newPath, true);
toPoints.add(point);
}
开发者ID:missioncommand,项目名称:mil-sym-android,代码行数:48,代码来源:GeoPath.java
示例18: toGlobalCoord
import org.gavaghan.geodesy.GlobalCoordinates; //导入依赖的package包/类
protected GlobalCoordinates toGlobalCoord(GeoPoint point) {
return new GlobalCoordinates(point.getLatitude(), point.getLongitude());
}
开发者ID:missioncommand,项目名称:mil-sym-android,代码行数:4,代码来源:GeoPath.java
示例19: arcTo
import org.gavaghan.geodesy.GlobalCoordinates; //导入依赖的package包/类
public final void arcTo(GeoPoint pivot, double widthMeters, double heightMeters, double leftAzimuthDegrees,
double rightAzimuthDegrees) {
GeneralPath newPath = new GeneralPath();
Arc2D arc;
if (leftAzimuthDegrees > rightAzimuthDegrees) {
arc = new Arc2D(-widthMeters / 2, -heightMeters / 2, widthMeters, heightMeters,
leftAzimuthDegrees - 90, Math.abs((360 - leftAzimuthDegrees) + rightAzimuthDegrees), Arc2D.OPEN);
} else {
arc = new Arc2D(-widthMeters / 2, -heightMeters / 2, widthMeters, heightMeters,
leftAzimuthDegrees - 90, Math.abs(leftAzimuthDegrees - rightAzimuthDegrees), Arc2D.OPEN);
}
GeoPoint point = null;
if (pivot != null) {
FlatteningPathIterator it = new FlatteningPathIterator(arc.getPathIterator(null), flatnessDistanceMeters, limit);
while (!it.isDone()) {
// Add a point to the list for each segment flattened from the curve
double[] strokePoints = new double[6];
int type = it.currentSegment(strokePoints);
double x = strokePoints[0];
double y = strokePoints[1];
double azimuth = Angle.toDegrees(Math.atan2(x, y));
GlobalCoordinates coord = new GlobalCoordinates(pivot.getLatitude(), pivot.getLongitude());
GlobalCoordinates c = geoCalc.calculateEndingGlobalCoordinates(REFERENCE_ELLIPSOID, coord, azimuth,
//new Point2D.Double(0,0).distance(x, y));
Point2D.distance(0, 0, x, y));
switch (type) {
case PathIterator.SEG_MOVETO:
newPath.moveTo(c.getLongitude(), c.getLatitude());
GeoPoint startPoint = new GeoPoint(c.getLongitude(), c.getLatitude());
if (toPoints.size() > 0 && !startPoint.equals(toPoints.get(toPoints.size() - 1))) {
lineTo(startPoint);
}
break;
case PathIterator.SEG_LINETO:
newPath.lineTo(c.getLongitude(), c.getLatitude());
point = new GeoPoint(c.getLongitude(), c.getLatitude());
break;
}
it.next();
}
}
path.append(newPath, true);
toPoints.add(point);
}
开发者ID:missioncommand,项目名称:mil-sym-android,代码行数:48,代码来源:GeoArc.java
示例20: arcTo
import org.gavaghan.geodesy.GlobalCoordinates; //导入依赖的package包/类
public void arcTo(GeoPoint pivot, double widthMeters, double heightMeters, double leftAzimuthDegrees,
double rightAzimuthDegrees) {
Path2D newPath = new Path2D.Double();
Arc2D arc;
if (leftAzimuthDegrees > rightAzimuthDegrees) {
arc = new Arc2D.Double(-widthMeters / 2, -heightMeters / 2, widthMeters, heightMeters,
leftAzimuthDegrees - 90, Math.abs((360 - leftAzimuthDegrees) + rightAzimuthDegrees), Arc2D.OPEN);
} else {
arc = new Arc2D.Double(-widthMeters / 2, -heightMeters / 2, widthMeters, heightMeters,
leftAzimuthDegrees - 90, Math.abs(leftAzimuthDegrees - rightAzimuthDegrees), Arc2D.OPEN);
}
GeoPoint point = null;
if (pivot != null) {
PathIterator it = new FlatteningPathIterator(arc.getPathIterator(null), flatnessDistanceMeters, limit);
while (!it.isDone()) {
// Add a point to the list for each segment flattened from the curve
double[] strokePoints = new double[6];
int type = it.currentSegment(strokePoints);
double x = strokePoints[0];
double y = strokePoints[1];
double azimuth = Angle.toDegrees(Math.atan2(x, y));
GlobalCoordinates coord = new GlobalCoordinates(pivot.getLatitude(), pivot.getLongitude());
GlobalCoordinates c = geoCalc.calculateEndingGlobalCoordinates(REFERENCE_ELLIPSOID, coord, azimuth,
new Point2D.Double().distance(x, y));
switch (type) {
case PathIterator.SEG_MOVETO:
newPath.moveTo(c.getLongitude(), c.getLatitude());
GeoPoint startPoint = new GeoPoint(c.getLongitude(), c.getLatitude());
if (toPoints.size() > 0 && !startPoint.equals(toPoints.get(toPoints.size() - 1))) {
lineTo(startPoint);
}
break;
case PathIterator.SEG_LINETO:
newPath.lineTo(c.getLongitude(), c.getLatitude());
point = new GeoPoint(c.getLongitude(), c.getLatitude());
break;
}
it.next();
}
}
path.append(newPath, true);
toPoints.add(point);
}
开发者ID:missioncommand,项目名称:mil-sym-java,代码行数:47,代码来源:GeoPath.java
注:本文中的org.gavaghan.geodesy.GlobalCoordinates类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论