2017-03-16 3 views
0

Ich weiß nicht, ob das eine Grundrechenart oder eine Unerfahrenheit bei den Nick-, Roll- und Gierwerten ist. Im Moment habe ich ein Bildobjekt, das sich basierend auf meinen Beschleunigungsmesserwerten bewegt.3D-Position aus CMMotionManager() übertragen, um Winkel auf 2D-Koordinatensystem festzulegen

//Move the ball based on accelerator values 
     delta.x = CGFloat(acceleration.x * 10) 
     delta.y = CGFloat(acceleration.y * 10) 

     ball.center = CGPointMake(ball.center.x + delta.x, ball.center.y + delta.y) 

Ich kann die Neigung durch die Haltung berechnen und den Winkel erhalten. Ich möchte meinen "Ball" nur in der Mitte des Bildschirms ausrichten, wenn der Winkel des Telefons einen bestimmten Winkel hat, sagen wir 45 Grad. Wie kann ich meinen Ball so bewegen, dass er nach bestimmten Winkeln in der Mitte steht?

+0

Es scheint, dass Sie die setzen Geschwindigkeit des Balls basierend auf den Beschleunigungsmesserwerten. Mit dieser Vorgehensweise ist es nicht möglich, eine bestimmte Position zu erzwingen, wenn ein bestimmter Winkel angefahren wird. Sie könnten in diesem Fall nur die Geschwindigkeit Null machen. –

Antwort

1

Ihre Bildschirmhöhe beträgt Η Pixel. Ihre Bildschirmbreite beträgt W Pixel.

Die horizontale Mitte des Bildschirms ist x = W/2

ich aus Ihrer Frage gehe davon aus Sie den Ball Mitte zwischen dem oberen (x, 0) variieren wollen, wenn der Bildschirm flach und unten (x, H) ist, wenn der Bildschirm vertikal ist.

Wenn der Winkel des Telefons θ variiert zwischen 0 und π, dann y = θ/π * H

ball.center = CGPoint(x: W/2, y: θ/π * H) 

Alles, was Sie brauchen, ist die trig θ Basis zu arbeiten, an den Kreiseln Lesungen

+0

Könnte das richtige Konzept sein, aber warum multiplizieren Sie den Winkel mal Höhe? Dadurch liegt der y-Wert in den Tausenden. Das heißt, wenn Theta ein Winkel in Grad ist. – timedwalnut

+0

Danke Ich habe es damit zu arbeiten, aber wenn Sie y nicht mit zwei multiplizieren, dann geht es nicht zum Ende der Ansicht – timedwalnut

+0

Meine Annahme war, dass Sie in Radianten arbeiten, daher theta durch pi teilen –

Verwandte Themen