2009-12-20 5 views
0

J'essaie de créer un triangle rectangle avec une hypoténuse convexe.Dessin d'une forme convexe avec CoreGraphics

  1. Commencez par un carré
  2. Coupez la moitié en diagonale de telle sorte que ce qui reste est un triangle rectangle.
  3. Curve l'hypoténuse vers l'intérieur

Comment pourrais-je obtenir cela avec CoreGraphics? Dois-je inscrire une ellipse sur la moitié du rectangle?

+1

Une image indique plus de mille mots. –

Répondre

2

Je ne suis pas très bon en mathématiques, peut-être que quelqu'un peut élaborer sur les mathématiques tangentes.

Voici une fonction de dessin de sous-vue personnalisée pour dessiner ce que vous cherchez. Faites simplement quelques lignes, utilisez un arc pour l'hypoténuse.

- (void)drawRect:(CGRect)dirtyRect { 
CGContextRef ctx = UIGraphicsGetCurrentContext(); 
CGContextMoveToPoint(ctx, 0, 50); 
CGContextAddLineToPoint(ctx, 100, 50); 
CGContextAddLineToPoint(ctx, 100, 0); 

CGPoint tangent1 = CGPointMake(85, 25); 
CGPoint tangent2 = CGPointMake(10, 50); 
CGContextAddArcToPoint(ctx, tangent1.x, tangent1.y, tangent2.x, tangent2.y, 125); 

CGFloat redComponents[4] = { 1., 0., 0., 1. }; 
CGContextSetFillColor(ctx, redComponents); 
CGContextFillPath(ctx); 
} 
+0

Je remarque qu'il y a de la technologie en XCode pour créer des courbes de Bézier (appendBezier ...), ce qui devrait permettre de mieux contrôler la forme de l'hypoténuen. John Doner –

+0

Je crois que votre référence à NSBezierPath, cette API n'est pas disponible sur l'iPhone. –

+0

CGContextAddCurveToPoint() existe sur l'iPhone et vous permet de travailler avec des courbes de Bézier dans ce contexte. –