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

objective-c – 查找点靠近直线和直线端点之间,第1张

概述要查找该点是否在包含两个点的指定行上,请执行以下检查: -(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 && 要查找该点是否在包含两个点的指定行上,请执行以下检查:

-(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提供了这个,但如果不是,它只是基本的三角函数.

总结

以上是内存溢出为你收集整理的objective-c – 查找点靠近直线和直线端点之间全部内容,希望文章能够帮你解决objective-c – 查找点靠近直线和直线端点之间所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1014786.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存