objective-c – 查找点靠近直线和直线端点之间

前端之家收集整理的这篇文章主要介绍了objective-c – 查找点靠近直线和直线端点之间前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
要查找该点是否在包含两个点的指定行上,请执行以下检查:

-(Boolean)isOnLine:(Line*) line point:(CGPoint) point{
    //If between two dots:
    if (((line.first.x <= point.x && point.x <= line.last.x)||(line.first.x >= point.x && point.x >= line.last.x))&&((line.first.y<=point.y && point.y<= line.last.y)||(line.first.y>=point.y && point.y>=line.last.y)) ) {    
        //Calculate distance:
        double dist = (((double)point.y - line.first.y)) / (0.00001+((double)(point.x - line.first.x)))- ((double)(line.last.y - line.first.y)) / (0.00001+((double)(line.last.x - line.first.x)));
        NSLog(@"Dist to line: %f",fabs(dist));
        return fabs(dist) <0.5;
    }else
        return NO;  
    }
}

然而,不知何故,该功能不适用于垂直线.我的猜测是if子句在某种意义上是无效的.

解决方法

我没有仔细阅读你的代码,所以我不完全确定你在做什么,但是最简单的方法就是找到线的一端到点的距离,找到另一端的距离行到终点,然后添加这些距离并与行的长度进行比较.

就像是:

Boolean isOnLine(line,point) {
  var dist1 = dist(line.first,point)
  var dist2 = dist(line.last,point)
  return abs(line.length - (dist1 + dist2)) < .5
}

对于dist()函数,我猜测CoreGraphics提供了这个,但如果不是,它只是基本的三角函数.

猜你在找的Xcode相关文章