2009-12-27 7 views
4

J'ai de l'expérience en programmation iPhone mais pas vraiment en programmation graphique.Dessiner une équation en Quartz

J'ai décidé de faire un jeu 2D et de choisir Quartz 2D dans ce but (je suis familier avec Open GL, mais le quartz semble être plus facile pour un jeu 2d).

Existe-t-il un moyen intégré pour dessiner un graphique d'une formule mathématique dans Quartz? Pour commencer, il ne s'agira que d'une parabole (y = ax^2 + bx + c) mais l'équation elle-même deviendra plus complexe à l'avenir.

Cela peut être assez lent si je dessine la parabole en utilisant mon propre algorithme (à partir de lignes ou de points séparés).

Merci d'avance.

Répondre

5

Vous pouvez calculer des échantillons discrets des équations que vous voulez rendre.
Votre graphique sera lisse ou polygonal en fonction du nombre d'échantillons que vous fournissez.

This blog post décrit comment restituer des formes d'onde pour une application Mac OS X.
Comme l'auteur utilise Quartz et vous pouvez probablement adapter son approche à votre problème.
La publication du blog utilise la méthode pratique CGPathAddLines() pour créer un chemin à partir d'un tableau de points.
Si vous souhaitez construire votre pièce de chemin par morceau, vous pouvez utiliser quelques-unes des méthodes suivantes:

CGMutablePathRef path = CGPathCreateMutable(); 
CGPathMoveToPoint(path, ...); 
CGPathAddLineToPoint(path, ...); 
CGPathAddArc(path, ...); 
CGPathCloseSubpath(path); 
0

Rien de prévu dans Quartz pour cela; vous devrez tracer chaque point individuellement en utilisant les mathématiques.

2

Pour tracer une expression mathématique arbitraire, vous pouvez utiliser le GCMathParser de Graham Cox pour prendre en compte une chaîne NSS contenant l'expression et évaluer cette expression pour différentes valeurs. Vous pouvez ensuite utiliser Core Plot (comme suggéré par Jasarien) pour créer un graphique de ces valeurs. En fait, j'ai un exemple d'application qui fait cela, que j'ajouterai bientôt au projet.

Questions connexes