【问题标题】:How to find Intersection of curve and line?如何找到曲线和直线的交点?
【发布时间】:2014-01-08 00:12:44
【问题描述】:

我通过给出11个点来绘制曲线和直线。是否可以检测两条线(或)两条曲线(或)一条线和一条曲线的交点。

我正在画线使用

CGMutablePathRef path = CGPathCreateMutable();

for (int i = 0; i < [_points count]; i++)
{
    CGPoint pt = [[_points objectAtIndex:i] CGPointValue];
    if (i == 0)
    {
        CGPathMoveToPoint(path, NULL, pt.x+1, pt.y+1);
    }
    else
    {
        CGPathAddLineToPoint(path, NULL, pt.x+1, pt.y+1);
    }
}

CGContextSetLineWidth(context, 1.0f);
CGContextSetStrokeColorWithColor(context, curveColor.CGColor);
CGContextAddPath(context, path);
CGContextStrokePath(context);
CGPathRelease(path);

曲线绘制

CGMutablePathRef path = CGPathCreateMutable();

for (int i = 0; i < [_points count]; i++)
{
    CGPoint pt = [[_points objectAtIndex:i] CGPointValue];

    NSLog(@"%@",NSStringFromCGPoint(pt));

    if (i == 0)
    {
        CGPathMoveToPoint(path, NULL, pt.x, pt.y);
    }
    else
    {
        CGPoint curP = [[_points objectAtIndex:i-1] CGPointValue];
        float delta = 1.0f;
        for (float pointX = curP.x; fabs(pointX - pt.x) > 1e-5f; pointX += delta)
        {
            float pointY = func(i-1, pointX);
            CGPathAddLineToPoint(path, NULL, pointX, pointY);
        }
    }
CGContextSetLineWidth(context, 1.0f);
CGContextSetStrokeColorWithColor(context, curveColor.CGColor);
CGContextAddPath(context, path);
CGContextStrokePath(context);
CGPathRelease(path); 

通过这些代码如何找到交点。

【问题讨论】:

  • 我想你知道你必须在目标 c 中自己完成的数学运算,为它做一个函数并不重要

标签: ios objective-c cgcontext


【解决方案1】:
  • 要查找两条线的交点,请参阅this answer
  • 要使一条线和一条曲线相交 - 您的曲线只是一组线,因此如果该线与该组中的任何一条线相交,则该线与该组线相交。
  • 要使一条曲线与一条曲线相交 - 检查一条曲线中的每条线与另一条曲线中的每条线。

还有多种优化方法,例如首先碰撞曲线或直线的边界矩形。

【讨论】:

  • 您的第一个点链接给出真/假条件。为此,我有很多方法。但问题是我想要交点。
  • 第二次和第三次我不知道该怎么做。那就是我在这里发布的问题。谢谢
  • @Hack_123:好的,好吧,我做了更多的谷歌搜索,找到了一个objective-c的答案来给你交点。链接已更新。对于 2 和 3,您使用 for 循环。从字面上看,假设您的 X 线带有 A、B、C、D 和 E 线的曲线。您在 X 和 A 之间应用#1 中的算法。如果它很成功,那就是您的答案。如果不是,则将其应用于 X 和 B。如果成功,那就是您的答案。如果没有,请尝试 C 等。如果没有匹配,则没有交集。
  • 感谢您的重播...对于 Line-Line 交叉点它的工作...对于 Curve-Curve 和 Line-Curve 我会检查并让您知道..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-07
  • 1970-01-01
相关资源
最近更新 更多