0

Итак, я все еще новичок в вопросах, связанных с переполнением стека, поэтому, пожалуйста, будьте милы :)Как определить, включен ли координатор GPS или в эллипсе?

У меня проблема, которую я пытался решить в течение месяца с неудачными результатами снова и снова. Я нашел несколько вопросов, несколько похожих на это, но ничто из того, что поразило меня как окончательный ответ.

Ближайшие, что я нашел до сих пор: Convert GPS coordinates to coordinate plane.

Короче говоря, мне нужно знать, является ли координата GPS либо внутри, либо внутри эллипса.

KNOWNS:

  • Ширина эллипса в метрах
  • Высота эллипса в метрах
  • GPS-координата центра эллипса (Предположительно [0,0] в системе координат)
  • GPS-координата контрольной точки
  • Угол точки для испытания
  • Расстояние до контрольной точки

Неизвестные/ПОТРЕБНОСТЬ:

  • GPS координаты точки по эллипсу с углом точки теста
  • Расстояния до точки на эллипс с углом точки теста

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


UPDATE: Чтобы добавить больше информации, значения все довольно малы в великой схеме вещей.

В качестве примера: Если пользователь хочет узнать, ввел ли другой пользователь какую-либо территорию/область геодезического поля или другую физическую область. Физическая область в этом случае выполнена в виде эллипса.

В дополнение, это написано в Objective-C. Ниже вы увидите случайные «+90» градусов, это есть механизмы, которые видят 0 градусов как Север (Навигация), когда я хочу, чтобы это был «Единичный круг» «Обычный».

Associated код с обсуждения:

- (BOOL)isLocation:(CLLocation *)location withinEllipse:(Ellipse *)ellipse 
{ 
    BOOL locationIsWithinEllipse = NO; 
    double ellipseWidth = ellipse.width; 
    double ellipseHeight = ellipse.height; 

    CLLocationDegrees locationAngleDegrees = 360 - ((int)([self headingBetweenCoordinate1:location.coordinate coordinate2:ellipse.locationCenter.coordinate] + 90) % 360);//Invert Direction 
    double xOffsetInMeters = (ellipseWidth/2) * COS(DEGREES_TO_RADIANS(locationAngleDegrees)); 
    double yOffsetInMeters = (ellipseHeight/2) * SIN(DEGREES_TO_RADIANS(locationAngleDegrees)); 



    // The logic below will currently grab the Top-Right point as if it were a box, not the point on the Ellipse, 
    // This is where things are broken. I need this to be the GPS Coordinate of the Point on the Ellipse with angle (locationAngleDegrees) 

    // Grab the Coordinate on the Ellipse in the heading of the Test Point 
    CLLocationDegrees pointLat = [ellipse.locationCenter addToLocationDistanceInMeters:yOffsetInMeters withBearingInDegrees:0].coordinate.latitude; 
    CLLocationDegrees pointLong = [ellipse.locationCenter addToLocationDistanceInMeters:xOffsetInMeters withBearingInDegrees:90].coordinate.longitude; 
    CLLocation * testPointOnEllipseLocation = [[CLLocation alloc] initWithLatitude:pointLat longitude:pointLong]; 




    // Just check if the Test Point is closer than the Distance of the Ellipse Point 
    if(ABS([location distanceFromLocation:ellipse.locationCenter]) <= ABS([testPointOnEllipseLocation distanceFromLocation:ellipse.locationCenter])) 
    { 
     locationIsWithinEllipse = YES; 
    } 

    return locationIsWithinEllipse; 
} 


UPDATE:

Я все еще пытаюсь получить эту математику правильно. Я понимаю, как это сделать с помощью «школьной математики», но как я могу применить это к моему коду в примере?Кроме того, я серьезно не понимаю весь этот материал поворота, поскольку я написал весь свой код как агностик любого вращения. Я полагаю, что все это связано с низкоуровневым местоположением Apple.

Может ли кто-нибудь помочь?

+0

Координаты GPS будут предположительно находиться в широте и долготе? И, предположительно, ваш эллиптический центр будет также в Локаторе и долготе? Следовательно, утверждение, что центр эллипса находится в [0,0], кажется мне странным. Кроме того, знание высоты и ширины эллипса недостаточно, так как вам также необходимо, чтобы его вращение относительно системы координат широты и долготы. Например, ширина может соответствовать широте, а высота может соответствовать долготе, но вы можете иметь эллипс, повернутый, например. 45 градусов от этого, поэтому вам нужно указать. – Stochastically

+0

Да, центр эллипса находится в координате GPS (Lat/Lon), а также в координате тестовой точки. Моя презумпция центра (0,0) была связана с математикой. Я всегда видел единичные круги и т. Д., Основанные на (0,0) точке для простых вычислений, поэтому я написал это. В настоящее время я синхронизую Width с Lat и Height с Lon для других вычислений. Я не понимаю, что вы подразумеваете под относительной ротацией? – jhthorp

+0

Я обновил свой вопрос, не могли бы вы взглянуть? – jhthorp

ответ

0

Я решил эту проблему с помощью некоторых математических вычислений от Google и руководства от (очень полезно) следующего вопроса: How to determine if a latitude & longitude is within an ellipse

Я также использовал эту ссылку для фокусов расчетов: http://www.mathopenref.com/ellipsefoci.html

процитировать, от Коди по ссылке, первичная логика: «Мой эллипс относительно невелик, поэтому я предположил, что это был истинный (плоский) эллипс. Я смог найти лат-лог фокусов эллипса, если сумма расстояний с точки интереса к каждому фокусу меньше 2а (радиус большой оси), то он находится внутри эллипса ».

Я ценю представленные предложения! Спасибо!

0

Один способ решения таких задач всегда работает:
1) преобразовать лат, lon в декартовую систему координат (4-5) на основе счетчика.
В вашем случае я бы использовал центр эллипса как «центр» в коде преобразования (например, цилиндрическая эквидистантная проекция нуждалась в центральной широте)

2) затем используйте математику школы, чтобы решить задачу: используйте уравнение эллипса.

Все это означает, что эллипс параллелен аэватору. Если не обновите свой вопрос.

+0

Я бы сказал, что вы правы в соответствии с моим текущим мышлением.Я просто борюсь за преобразование Lat/Lon в систему на основе Meter, чтобы выполнить математику школы. Я обновил свой вопрос, не могли бы вы взглянуть? – jhthorp

+0

Используйте cYlindrical эквидистантную проекцию для преобразования lat lon в x, y в метрах. сначала попробуйте без повернутых элипсов. – AlexWien

 Смежные вопросы

  • Нет связанных вопросов^_^