2011-07-28 8 views
0

私はLayar AR iPhoneアプリのレーダーに似た緯度と経度座標に基づいてターゲットをプロットする小さなレーダーを実装しようとしています。私はコンパスとlocationManagerが緯度/経度、2つのポイント間の見出しと距離を取得するように働いています。しかし、xy平面に点をプロットするのに問題があります。あなたは私を正しい方向に向けることができますか(そうそう)?xy平面内の2つの点の間に見出しをつける

これは私がプロットするために使用しています方法ですが、結果が正しくありません:

-(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

私は問題は座標ウルに追加されていない座標が存在ビューの原点内にあると思います。 tiをサブビューとして追加する現在のビューのorigin.xとorigin.yを追加して、x1とy1を変更するだけです。

+0

はいあなたが正しいです。私はx0とy0変数を使ってorigin.xとorigin.yを追加できます。 – user855723

関連する問題