2011-07-28 68 views
0

我正試圖實現一個小型雷達,它基於與Layar AR iPhone應用中的雷達類似的經度和緯度座標繪製目標。我有指南針和locationManager工作來獲取經緯度,兩點之間的方向和距離。然而,我很難將點繪製到x-y平面上。你能否指出我正確的方向(如此說話)?繪製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]; 

} 

回答

0

我想出了什麼是錯的,但我不知道背後的原因。首先,我不應該將弧度轉換爲度數。這給了我正確的定位,但它旋轉了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

我想這個問題就在於現在視圖中的原點座標內沒有被添加到UR協調。 只需通過添加將ti添加爲子視圖的當前視圖的origin.x和origin.y來修改您的x1和y1。

+0

是的,你是正確的。我可以使用x0和y0變量添加我的origin.x和origin.y。 – user855723