Как построить синусоиду между двумя известными координатами (Java)? Здравствуйте, друзья. Уж простите, что я свосем забыл математику, но вопрос надо быстро решить, а я начинаю закапываться (очень много дел). Рассчитываю на Вашу помощь. Имеются две координаты (географические): a = (61.044039; 28.156276) b = (42.689624; 23.402102) Между ними путь в виде синусоиды в периоде 2*Пи. Движемся мы вдоль широты. Нужно нарисовать на карте 30 точек на этой синусоиде, равноудалённых друг от друга. Как это сделать средствами Java? Точнее, как вычислить эти точки (я их при вычислении добавить должен в коллекции), как их расположить я знаю))))
Для того чтобы вычислить 30 точек на синусоиде между двумя известными точками, можно воспользоваться следующим кодом на Java:
import java.util.ArrayList; import java.util.List; public class SinusoidalPath { public static void main(String[] args) { double lat1 = 61.044039; double lon1 = 28.156276; double lat2 = 42.689624; double lon2 = 23.402102; List<Point> points = calculateSinusoidalPath(lat1, lon1, lat2, lon2); for (Point point : points) { System.out.println("Latitude: " + point.lat + ", Longitude: " + point.lon); } } public static List<Point> calculateSinusoidalPath(double lat1, double lon1, double lat2, double lon2) { List<Point> points = new ArrayList<>(); for (int i = 0; i < 30; i++) { double t = i * Math.PI / 15; double lat = (lat1 + lat2) / 2 + (lat1 - lat2) / 2 * Math.sin(t); double lon = (lon1 + lon2) / 2 + (lon1 - lon2) / 2 * Math.sin(t); points.add(new Point(lat, lon)); } return points; } public static class Point { double lat; double lon; public Point(double lat, double lon) { this.lat = lat; this.lon = lon; } } }
Этот код создает 30 точек на синусоиде между двумя известными координатами, используя формулу для построения синусоиды между двумя точками. Вам нужно будет просто добавить эти точки в вашу коллекцию и с ними работать дальше для отображения на карте.
Для того чтобы вычислить 30 точек на синусоиде между двумя известными точками, можно воспользоваться следующим кодом на Java:
import java.util.ArrayList;import java.util.List;
public class SinusoidalPath {
public static void main(String[] args) {
double lat1 = 61.044039;
double lon1 = 28.156276;
double lat2 = 42.689624;
double lon2 = 23.402102;
List<Point> points = calculateSinusoidalPath(lat1, lon1, lat2, lon2);
for (Point point : points) {
System.out.println("Latitude: " + point.lat + ", Longitude: " + point.lon);
}
}
public static List<Point> calculateSinusoidalPath(double lat1, double lon1, double lat2, double lon2) {
List<Point> points = new ArrayList<>();
for (int i = 0; i < 30; i++) {
double t = i * Math.PI / 15;
double lat = (lat1 + lat2) / 2 + (lat1 - lat2) / 2 * Math.sin(t);
double lon = (lon1 + lon2) / 2 + (lon1 - lon2) / 2 * Math.sin(t);
points.add(new Point(lat, lon));
}
return points;
}
public static class Point {
double lat;
double lon;
public Point(double lat, double lon) {
this.lat = lat;
this.lon = lon;
}
}
}
Этот код создает 30 точек на синусоиде между двумя известными координатами, используя формулу для построения синусоиды между двумя точками. Вам нужно будет просто добавить эти точки в вашу коллекцию и с ними работать дальше для отображения на карте.