C#判斷點是否在直線上


判斷點在直線上,實際上就是判斷點到直線上的垂直距離。點到直線垂直距離為0,則點在線上。當然也可以誤差設置誤差幾個像素。

參考資料並進行修改:http://blog.sina.com.cn/s/blog_5d5c80840101bnhw.html

 

 

//判斷點是否在直線上

public static bool GetPointIsInLine(PointF pf, PointF p1, PointF p2, double range)
{

//range 判斷的的誤差,不需要誤差則賦值0

 

//點在線段首尾兩端之外則return false

double cross = (p2.X - p1.X) * (pf.X - p1.X) + (p2.Y - p1.Y) * (pf.Y - p1.Y);
if (cross <= 0) return false;
double d2 = (p2.X - p1.X) * (p2.X - p1.X) + (p2.Y - p1.Y) * (p2.Y - p1.Y);
if (cross >= d2) return false;

 

 

double r = cross / d2;
double px = p1.X + (p2.X - p1.X) * r;
double py = p1.Y + (p2.Y - p1.Y) * r;

//判斷距離是否小於誤差
return Math.Sqrt((pf.X - px) * (pf.X - px) + (py - pf.Y) * (py - pf.Y)) <= range;
}

 

代碼源碼:http://download.csdn.net/detail/object360/9607980


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM