Построение курса между двумя точками в плоскости xy - PullRequest
0 голосов
/ 28 июля 2011

Я пытаюсь реализовать небольшой радар, который строит цели на основе координат широты и долготы, аналогично радару в приложении Layar AR iPhone. У меня есть компас и LocationManager, работающий, чтобы получить широту / долготу, курс и расстояние между двумя точками. Однако у меня возникли проблемы с нанесением точек на плоскость x-y. Не могли бы вы указать мне правильное направление (так сказать)?

Это метод, который я использую для построения графика, но результаты неверны:

-(void) addTargetIndicatorWithHeading:(float)heading andDistance:(float)distance{
    //draw target indicators
    //need to convert radians and distance to cartesian coordinates
    float radius = 50;
    float x0 = 0.0; 
    float y0 = 0.0;

    //convert heading from radians to degrees
    float angle = heading * (180/M_PI);

    //x-y coordinates
    float x1 = (x0 + radius * sin(angle)); 
    float y1 = (y0 + radius * cos(angle)); 

    TargetIndicator *ti = [[TargetIndicator alloc] initWithFrame:CGRectMake(x1, y1, 5, 5)];
    [self addSubview:ti];
    [ti release];

}

Ответы [ 2 ]

0 голосов
/ 29 июля 2011

Я понял, что было не так, но я не знаю причины этого.Сначала я не должен был преобразовывать радианы в градусы.Это дает мне правильное положение, но оно повернуто на 180 градусов.Чтобы исправить это, я вычитаю радианы из PI.

Вот решение:

-(void) addTargetIndicatorWithHeading:(float)heading andDistance:(float)distance{
    //draw target indicators
    //need to convert radians and distance to cartesian coordinates
    float radius = 50;

    //origin offset
    float x0 = 50.0; 
    float y0 = 50.0;

    //convert heading from radians to degrees and rotate by 180 deg
    float angle = M_PI - heading; 

    float x1 = (x0 + radius * sin(angle));   
    float y1 = (y0 + radius * cos(angle)); 

    TargetIndicator *ti = [[TargetIndicator alloc] initWithFrame:CGRectMake(x1, y1, 5, 5)];
    [self addSubview:ti];
    [ti release];


}
0 голосов
/ 28 июля 2011

Полагаю, проблема заключается в том, что исходная координата текущего представления не добавляется к вашей координате.просто измените ваши x1 и y1, добавив origin.x и origin.y текущего представления, к которому вы добавляете ti как подпредставление.

...