我在现实生活中有以下物品的设置:
雷达是静态的,也就是说它总是处于相同的位置。A项可以移动,其位置可以是任何地方。我可以从雷达中读取A与雷达之间的x和y坐标。我编写了以下类来描述每个物品的位置:
现在给定雷达的地理坐标,相对于雷达的
由于
雷达是静态的,也就是说它总是处于相同的位置。A项可以移动,其位置可以是任何地方。我可以从雷达中读取A与雷达之间的x和y坐标。我编写了以下类来描述每个物品的位置:
public class Position {
public enum Direction {
EAST, WEST, NORTH, SOUTH
};
public final Direction latitudeDirection, longitudeDirection;
public final float latitude, longitude, altitude;
public Position(Direction latitudeDirection, Direction longitudeDirection,
float latitude, float longitude, float altitude) {
this.latitudeDirection = latitudeDirection;
this.longitudeDirection = longitudeDirection;
this.latitude = latitude;
this.longitude = longitude;
this.altitude = altitude;
}
public Position(float radarX, float radarY) {
// TODO: Implement the question here
this.altitude = Config.RADAR_POSITION.altitude;
}
}
class Config {
// Position of the radar
public static final Position RADAR_POSITION = new Position(
Position.Direction.NORTH, // Latitude direction
Position.Direction.EAST, // Longitude direction
55.0f, // Latitude
13.0f, // Longitude
60.0f); // Altitude
// Facing direction of the radar in degrees. 0° is north, advancing
// clockwise.
public static final float RADAR_FACING_DIRECTION = 10.0f;
}
现在给定雷达的地理坐标,相对于雷达的
A
点的x
和y
坐标,以及雷达相对于北方的朝向,我该如何计算A
点的绝对地理坐标?由于
x
和/或y
的最大值不超过几百米,因此地球的曲率不是问题。
xnew = x * cos(theta) - y * sin(theta); ynew = x * sin(theta) + y * cos(theta);
- Vishal K