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

  • geraldnonadoez

    geraldnonado

    3 Temmuz 2013
  • PCDIY

    PCDIY

    16 AĞUSTOS 2013
  • UrAvgConsumer

    UrAvgConsume

    1 Ocak 2012