objective-c – 查找点靠近直线和直线端点之间
发布时间:2020-12-14 17:41:43 所属栏目:百科 来源:网络整理
导读:要查找该点是否在包含两个点的指定行上,请执行以下检查: -(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.
要查找该点是否在包含两个点的指定行上,请执行以下检查:
-(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提供了这个,但如果不是,它只是基本的三角函数. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |