我有 iPhone 编程经验,但不是真正的图形编程经验。
我决定制作一个 2d 游戏并为此选择 Quartz 2D(我熟悉 Open GL,但 Quartz 似乎更容易用于 2d 游戏)。
有没有一种内置的方法可以在 Quartz 中绘制数学公式的图表?一开始它只是一条抛物线(y=ax^2+bx+c),但等式本身在未来会变得更加复杂。
如果我使用自己的算法(从单独的线或点)绘制抛物线,可能会很慢。
先感谢您。
我有 iPhone 编程经验,但不是真正的图形编程经验。
我决定制作一个 2d 游戏并为此选择 Quartz 2D(我熟悉 Open GL,但 Quartz 似乎更容易用于 2d 游戏)。
有没有一种内置的方法可以在 Quartz 中绘制数学公式的图表?一开始它只是一条抛物线(y=ax^2+bx+c),但等式本身在未来会变得更加复杂。
如果我使用自己的算法(从单独的线或点)绘制抛物线,可能会很慢。
先感谢您。
您可以计算要渲染的方程的一些离散样本。
根据您提供的样本数量,您的图表将看起来是平滑的还是多边形的。
这篇博文描述了如何为 Mac OS X 应用程序渲染波形。
由于作者使用的是 Quartz,您可能可以针对您的问题调整他的方法。
博客文章使用方便的 CGPathAddLines() 方法从点数组创建路径。
如果您想逐段构建路径,可以使用以下一些方法:
CGMutablePathRef path = CGPathCreateMutable();
CGPathMoveToPoint(path, ...);
CGPathAddLineToPoint(path, ...);
CGPathAddArc(path, ...);
CGPathCloseSubpath(path);
使用CorePlot框架之类的东西怎么样?
要绘制任意数学表达式,您可以使用 Graham Cox 的GCMathParser获取包含表达式的 NSString 并评估该表达式的各种值。然后,您可以使用Core Plot(如 Jasarien 建议的那样)创建这些值的图表。事实上,我有一个示例应用程序可以做到这一点,我将很快将其添加到项目中。
Quartz 使用贝塞尔曲线
Quartz 没有内置任何东西。您必须使用数学单独绘制每个点。