сделать контрольные точки кривой Безье в нужном месте на карте - PullRequest
0 голосов
/ 21 мая 2019

Я хочу нарисовать кривую Безье между двумя точками расположения.Я могу нарисовать некоторую кривую, следуя некоторым ответам на stackoverflow , но точка для контрольных точек Безье в некоторых случаях указывается неправильно, хотя я использую ту же самую простую формулу для кривой Безье.

enter image description here

То, что я делаю, чтобы поместить две контрольные точки Безье в правильную точку, - создать линию, которая всегда должна пересекать линейную линию между двумя точками ортогонально.- создать две контрольные точки Безье (+ и -), которые находятся посередине где-нибудь на ортогональной линии и в каждом из двух местоположений.

Но в некоторых случаях (два местоположения не расположены горизонтально или вертикально),линия не идет ортогонально, как показано ниже, так как контрольная точка не находится на ортогональной линии, и мне интересно, есть ли разница между масштабом latitudeDelta и масштабом longitudeDelta, который вызывает проблему, но не уверен.

enter image description here

и мои расчеты выглядят следующим образом.

    const slopeOfLinearLine = (destination.latitude - origin.latitude) / (destination.longitude - origin.longitude)
    const slopeOfOrthogonalLine = -1 / slopeOfLinearLine
    const x = some x value to move right or left.
    const y = slopeOfOrthogonalLine * x
    const topOfTriangle = { latitude: midLinearLine.latitude + y, longitude: midLinearLine.longitude + x }

Пожалуйста, дайте мне знать, что у кого-нибудь есть идеи по этому вопросу.Спасибо!

1 Ответ

1 голос
/ 24 мая 2019

Масштаб в км (милях) на градус отличается для широты и долготы, поэтому для обычно используемых масштабов проекций отличается в f=Cos(latitude), карта анизотропна.

Так что вы можете:

1) создание контрольных точек Кривая Безье в экранной системе координат (в пикселях)
или
2) построить правильный средний перпендикуляр в системе широта / долгота, используя формулы из этой страницы - найти среднюю точку на большой дуге окружности, найти подшипник в этой точке, найти перпендикулярный подшипник, построить точку на некоторое расстояние от середины в перпендикулярном направлении

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...