0

これが私が欲しいものです:

http://postimage.org/image/9pq8m79hx/

O点とX点の座標を知っています。iOSの方法を使用してV角度(北向きからの角度)を見つける可能性はありますか?

4

2 に答える 2

2

うん。

#import <math.h>

float a = -1 * atan2(y1 - y0, x1 - x0);
if (a >= 0) {
    a += M_PI / 2;
} else if (a < 0 && a >= -M_PI / 2) {
    a += M_PI / 2;
} else {
    a += 2 * M_PI + M_PI / 2;
}
if (a > 2 * M_PI) a -= 2 * M_PI;

aこれで、間隔にラジアン単位の角度が含まれます0...2 PI

iOS固有のAPIも必要ありません。注意:iOSにはまだlibcのすべての機能があります。

于 2012-10-17T18:28:07.463 に答える
1

user529758の回答が、東を0度から北を0度に変更することについて読んだ質問に対応しているかどうかはわかりません。以下のコードは機能します-キーラインは東から北に0度変化する4番目のラインです

-(CGFloat) bearingFromNorthBetweenStartPoint: (CGPoint)startPoint andEndPoint:(CGPoint) endPoint {

// get origin point of the Vector
CGPoint origin = CGPointMake(endPoint.x - startPoint.x, endPoint.y - startPoint.y);

// get bearing in radians
CGFloat bearingInRadians = atan2f(origin.y, origin.x);

// convert to bearing in radians to degrees
CGFloat bearingInDegrees = bearingInRadians * (180.0 / M_PI);

// convert the bearing so that it takes from North as 0 / 360 degrees, rather than from East as 0 degrees
bearingInDegrees = 90 + bearingInDegrees;

// debug comments:
if (bearingInDegrees >= 0)
{
    NSLog(@"Bearing >=0 in Degrees %.1f degrees", bearingInDegrees );
}

else
{
    bearingInDegrees = 360 + bearingInDegrees;
    NSLog(@"Bearing in Degrees %.1f degrees", bearingInDegrees );
}

return bearingInDegrees;

}
于 2016-05-30T13:22:14.933 に答える