-(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 – 查找点靠近直线和直线端点之间所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)