SORU
21 AĞUSTOS 2009, Cuma


Nasıl göster atan2() 0-360 derece için

atan2(y,x) -180°..0° saat yönünde gidiş için geçiş yapar, bu süreksizlik 180° de vardır.

Nasıl 0°..360° değerler göster?

işte benim kod:

CGSize deltaPoint = CGSizeMake(endPoint.x - startPoint.x, endPoint.y - startPoint.y);
float swipeBearing = atan2f(deltaPoint.height, deltaPoint.width);

StartPoint ve bitiş noktası verilen kaydırarak dokunma olayı yönünü hesaplıyorum, hem XY nokta yapılar. Kodu ama atan2f destekleyen herhangi bir dil iPhone için() olacaktır.

Senin için teşekkürler arkadaşlar, genel çözümü ve kod ile yardımcı olur.

Güncelleme: Bundan 6 ay idrak ediyorum uzun değişken adları ile güzel bir işlev erikkallen cevap verdim. Belki başka bir iPhone çaylak yardımcı olacaktır.

float PointPairToBearingDegrees(CGPoint startingPoint, CGPoint endingPoint)
{
    CGPoint originPoint = CGPointMake(endingPoint.x - startingPoint.x, endingPoint.y - startingPoint.y); // get origin point to origin by subtracting end from start
    float bearingRadians = atan2f(originPoint.y, originPoint.x); // get bearing in radians
    float bearingDegrees = bearingRadians * (180.0 / M_PI); // convert to degrees
    bearingDegrees = (bearingDegrees > 0.0 ? bearingDegrees : (360.0   bearingDegrees)); // correct discontinuity
    return bearingDegrees;
}

CEVAP
21 AĞUSTOS 2009, Cuma


(x > 0 ? x : (2*PI   x)) * 360 / (2*PI)

Düzenleme: Oops, yanlış işaret.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Call Me Howard

    Call Me Howa

    18 AĞUSTOS 2012
  • oHeymarvin

    oHeymarvin

    11 Temmuz 2013
  • TSE

    TSE

    12 Kasım 2012