给定一条由两点(A,B)定义的直线如何判断另一个点(C)是否在该线上,WPF是否具有内置函数,因为我使用路径来表示线或者我是必须写一个函数。如果后者是真的,任何帮助将不胜感激,谢谢。
答案 0 :(得分:2)
如果它们形成的角度为180度,则三个点是共线的。或者换句话说,线段AB,AC和BC的斜率都相等。
求解斜率:[AB].y/[AB].x = [AC].y/[AC].x
给出了以下很好的函数:
bool AreCollinear(Point A, Point B, Point C)
{
double slopesDelta = (A.y - B.y) * (A.x - C.x) - (A.y - C.y) * (A.x - B.x);
double tolerance = 1e-6; // substitute for your own tolerance
return tolerance > Math.Abs(slopesDelta);
}