2010-06-03 17 views
3

cela semble être un problème si simple mais j'ai été incapable de trouver une réponse (et je ne suis pas bon en maths). J'essaie de déplacer un UIView à une nouvelle distance de CGPoint X le long d'un certain cap. Quelle est la formule pour déterminer les nouvelles coordonnées?déplacer CGPoint une certaine distance le long d'une certaine rubrique ... iphone

(je ne pas veux que ce soit animé, juste un mouvement instantané)

quelque chose comme:

x = 100; (current x value) 
y = 150; (current y value) 
d = 25; (distance to move the point) 
h = 90; (west) 

\\\ insert formula to determine new x,y coords 

self.car.center = (CGPointMake ([newX],[newY]); 
+0

Que signifie "certain cap"? Est-ce une direction? Des hypothèses à ce sujet? Certains types de données et extraits de code pourraient aider. – Eiko

+0

désolé je n'ai même pas encore de code, im juste un peu de commencer à ce sujet. ce que je veux dire par rubrique est un cours le long d'une direction cardinale. J'ai un UIView sur une carte qui doit être déplacée comme si elle suivait un cap (360 degrés). – Brodie

Répondre

6

Si p est votre point, D est la distance, et θ est le la position angulaire de l'axe X,

p nouveau .x = p vieux .x + D * cos (θ)
p nouveau .y = p vieux .y + D * sin (θ)

Plutôt que de stocker distances et angles, cependant, cela est généralement fait en utilisant vectors (ce qui élimine le besoin de sin/cos)

+0

En outre, n'oubliez pas de convertir l'angle en radians. – Eiko