Pergunta

Tenho experiência na programação do iPhone, mas não na programação gráfica.

Decidi fazer um jogo 2D e escolher o Quartz 2D para esse fim (estou familiarizado com o Open GL, mas o Quartz parece ser mais fácil para um jogo 2D).

Existe uma maneira interna de desenhar um gráfico de uma fórmula de matemática em quartzo? Para começar, será apenas uma parábola (y = ax^2+bx+c), mas a própria equação se tornará mais complexa no futuro.

Pode ser muito lento se desenhar a parábola usando meu próprio algoritmo (de linhas ou pontos separados).

Agradeço antecipadamente.

Foi útil?

Solução

Você pode calcular algumas amostras discretas das equações que deseja renderizar.
Seu gráfico ficará suave ou poligonal, dependendo de quantas amostras você fornece.

Esta postagem do blog descreve como renderizar formas de onda para um aplicativo Mac OS X.
Como o autor está usando o quartzo e você provavelmente pode adaptar sua abordagem para o seu problema.
A postagem do blog usa o método conveniente CGPathaddLines () para criar um caminho a partir de uma matriz de pontos.
Se você quiser construir seu caminho, peça por peça, poderá usar alguns dos seguintes métodos:

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

Outras dicas

Que tal usar algo como o CorePlot estrutura?

Para planejar uma expressão de matemática arbitrária, você pode usar Graham Cox's Gcmathparser Assumir uma NSString contendo a expressão e avaliar essa expressão para vários valores. Você pode então usar Gráfico do núcleo (conforme sugerido por Jasarien) para criar um gráfico desses valores. Na verdade, tenho um aplicativo de amostra que faz exatamente isso, que adicionarei ao projeto em breve.

Quartzo usa Curvas bezier

Não há nada incorporado ao quartzo para isso; Você terá que plotar cada ponto individualmente usando matemática.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top