Итак, я все еще новичок в вопросах, связанных с переполнением стека, поэтому, пожалуйста, будьте милы :)Как определить, включен ли координатор 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.
Может ли кто-нибудь помочь?
Координаты GPS будут предположительно находиться в широте и долготе? И, предположительно, ваш эллиптический центр будет также в Локаторе и долготе? Следовательно, утверждение, что центр эллипса находится в [0,0], кажется мне странным. Кроме того, знание высоты и ширины эллипса недостаточно, так как вам также необходимо, чтобы его вращение относительно системы координат широты и долготы. Например, ширина может соответствовать широте, а высота может соответствовать долготе, но вы можете иметь эллипс, повернутый, например. 45 градусов от этого, поэтому вам нужно указать. – Stochastically
Да, центр эллипса находится в координате GPS (Lat/Lon), а также в координате тестовой точки. Моя презумпция центра (0,0) была связана с математикой. Я всегда видел единичные круги и т. Д., Основанные на (0,0) точке для простых вычислений, поэтому я написал это. В настоящее время я синхронизую Width с Lat и Height с Lon для других вычислений. Я не понимаю, что вы подразумеваете под относительной ротацией? – jhthorp
Я обновил свой вопрос, не могли бы вы взглянуть? – jhthorp