React-leaflet, Как сделать, чтобы точки при повороте по широте не растягивались?

Есть точки на карте (для наглядности линиями соединены), я их поворачиваю на 90 градусов и они вытягиваются, а нужно, чтобы расстояние между точками было такое же, как до поворота Пример при повороте на 90 градусов

Пример без поворота, т.е. 0 градусов

Создание точек:

samplePoints = async (event) => {
    // Обнуление массива
    this.setState({ arrCoordinates: [] });

    // Расчет точек замера выше оси X
    var lng = this.state.markerLng;
    var lat;
    for (let i = 0; i <= 50; i++) {
        lat = this.state.markerLat;
        for (let j = 0; j <= 20; j++) {
            this.state.arrCoordinates.push(lat, lng);
            lat += 0.005;
        }
        lng += 0.005;
    }

    // Расчет точек замера ниже оси X
    lng = this.state.markerLng;
    for (let i = 0; i <= 50; i++) {
        lat = this.state.markerLat;
        for (let j = 0; j <= 20; j++) {
            this.state.arrCoordinates.push(lat, lng);
            lat -= 0.005;
        }
        lng += 0.005;
    }
    console.log("Массив точек: ", this.state.arrCoordinates);
};

Поворот точек (нули, это угол поворота, для теста я их просто меняю вручную):

getNewCoordSamplePoints = async (event) => {
    var arrNewCoord = [];
    for (let i = 0; i < this.state.arrCoordinates.length; i += 2) {
        var newLng =
            this.state.markerLng +
            (this.state.arrCoordinates[i + 1] - this.state.markerLng) *
                Math.cos(0 * (3.1415926535 / 180)) -
            (this.state.arrCoordinates[i] - this.state.markerLat) *
                Math.sin(0 * (3.1415926535 / 180));

        var newLat =
            this.state.markerLat +
            (this.state.arrCoordinates[i + 1] - this.state.markerLng) *
                Math.sin(0 * (3.1415926535 / 180)) +
            (this.state.arrCoordinates[i] - this.state.markerLat) *
                Math.cos(0 * (3.1415926535 / 180));
        arrNewCoord.push(newLat, newLng);
    }

    this.setState({ arrNewCoordinates: [] });
    this.setState({ arrNewCoordinates: arrNewCoord });
    console.log(
        "Новый массив (координаты под углом): ",
        this.state.arrNewCoordinates
    );
};

Эти точки потом отрисовываются, каждая точка соединяется линией, получается область.


Ответы (0 шт):