gpt4 book ai didi

ios - 使用 quartz 绘制折线图?

转载 作者:行者123 更新时间:2023-11-29 11:01:27 25 4
gpt4 key购买 nike

我正在尝试为 ipad 制作一个简单的图表。我需要使用 QUARTZ 绘制 sin(x)、cos(x) 和 tan(x) 函数。我知道如何制作网格和线条,但不知道如何开始。感谢您的帮助。

请注意,我对核心情节和其他框架不感兴趣,因此请不要提供此作为答案。

最佳答案

简单:您决定所需的分辨率/精度,然后根据此将函数的域分成区间,计算每个区间中的函数值,然后用直线连接它们:

// Within a subclass of UIView
- (void)drawFunction:(double (*)(double))fn from:(double)x1 to:(double)x2
{
[super drawRect:rect];

CGContextRef ctx = UIGraphicsGetCurrentContext();

CGFloat comps[] = { 1.0, 0.0, 0.0, 1.0 };
CGContextSetStrokeColor(ctx, comps);
CGContextSetLineWidth(ctx, 2.0);

const double dx = 0.01; // precision
double scale_x = self.bounds.size.width / (x2 - x1);
double off_x = 0.0;
double scale_y = scale_x;
double off_y = self.bounds.size.height / 2;

CGContextMoveToPoint(ctx, x1 * scale_x - off_x, off_y - fn(x1) * scale_y);

for (double x = x1 + dx; x <= x2; x += dx) {
double y = fn(x);
CGFloat xp = x * scale_x - off_x;
CGFloat yp = off_y - y * scale_y;
CGContextAddLineToPoint(ctx, xp, yp);
}

CGContextStrokePath(ctx);
}

- drawRect: 中调用:

- (void)drawRect:(CGRect)rect
{
[super drawRect:rect];
[self drawFunction:sin from:0.0 to: 2 * M_PI];
}

关于ios - 使用 quartz 绘制折线图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15718950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com