2013-03-30 4 views
1

Я пытаюсь сделать простой график для ipad. Мне нужно построить функции sin (x), cos (x) и tan (x) с использованием QUARTZ. Я знаю, как сделать сетку и линии, но не знаю, как начать с этого. Любая помощь приветствуется.График рисования линии с использованием кварца?

Обратите внимание, что меня не интересуют основной сюжет и другие рамки, поэтому, пожалуйста, не предлагайте это в качестве ответа.

+0

ядро ​​земля не рисует графики функций в любом случае. – 2013-03-30 13:16:43

ответ

2

Простая: вы решаете, какую резолюцию/точность вы хотите, затем вы разделяете область функций на интервалы в соответствии с этим, вы вычисляете значения функции в каждом интервале, и вы соединяете их с прямой:

// 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]; 
} 
+0

привет спасибо за ответ, но это ничего не рисует или я чего-то не хватает –

+0

@JamesDouglas (я был почти уверен, что вы вернетесь с «эй, это не работает !!!!!») Конечно. Обратите внимание на размеры, пределы, задайте цвет хода и ширину линии, возможно, в конце концов вызовите 'CGContextStrokePath()' и т. Д. Прочтите это в документации 'CGContexRef'. – 2013-03-30 13:59:14

+0

Хорошо будет играть с этим. Lol –

Смежные вопросы