2009-11-18 9 views
0

Je suis assez nouveau sur Quartz 2D.Quartz 2D Rotation du chemin

Imaginez le scénario suivant:

Vous avez un mini vue sur la carte en forme de cercle. Je dessine un triangle (l'arc n'est pas important en ce moment) en haut de la carte. Cette forme représente la zone visible.

Je dois faire tourner la forme du triangle le long de la mini-carte lorsque l'utilisateur change d'orientation.

Actuellement ce ainsi que le chemin est en cours d'élaboration:

CGAffineTransform transform = CGAffineTransformMakeRotation(angleInRadians); 

CGPath visibleAreaPath = CGPathCreateMutable(); 

CGPathMoveToPoint(visibleAreaPath, &transform, miniMapCenter.x, miniMapCenter.y); 
CGPathAddLineToPoint(visibleAreaPath, &transform, 18.0, 8.0); 
CGPathAddLineToPoint(visibleAreaPath, &transform, 66.0, 8.0); 

CGPathCloseSubpath(visibleAreaPath); 

je puis dessiner le chemin en utilisant un CAShapeLayer comme ceci:

CALayer *rootLayer = [visibleAreaView layer]; 

visibleAreaShape = [CAShapeLayer layer]; 
[visibleAreaShape setFillColor:[UIColor colorWithHue:0.584 saturation:0.8 brightness:0.9 alpha:0.6].CGColor]; 
[visibleAreaShape setFillRule:kCAFillRuleNonZero]; 
[visibleAreaShape setAnchorPoint:CGPointMake(0.5, 0.5)]; 
[rootLayer addSublayer:visibleAreaShape]; 
[visibleAreaShape setPath:visibleAreaPath]; 

Le chemin est en rotation, mais pas fondée sur une donnée origine. Gardez à l'esprit que le réglage du point d'ancrage du calque ne m'aide pas puisque ce que je veux c'est faire tourner le chemin (finalement je n'aurais même pas besoin de l'afficher, puisque je vais l'utiliser pour déterminer quels points sont visibles sur le mini carte).

Des idées sur la façon d'accomplir cela? Merci.

+0

Voulez-vous dire que le chemin tourne toujours au même angle par rapport à la vue d'ensemble? En d'autres termes, les rotations ne sont pas cumulatives? – TechZen

Répondre

0

Je vous suggère de stocker les points sous forme polaire et de convertir en chemin si nécessaire. Il est très facile de faire une rotation en coordonnées polaires (il suffit de changer la valeur thêta).

Questions connexes