检查点是否是对角线

时间:2013-11-30 22:14:34

标签: c# points

您好我在我正在处理的代码中遇到这方面的一点麻烦。它处理点并返回true或不返回它是否与我的arrayList of Points中的其他点对齐。到目前为止我的代码在这里:

private List<Point> point;

 public void check()
        {
            for (int i = 0; i < point.Count; i++)
            {
               validSpot(i);
            }
        }

1 个答案:

答案 0 :(得分:4)

请注意,您的图表与阵列存储的方式相反。

您可以将索引视为图表上的点。找到落在对角线上的是什么斜坡拦截形式。 y = m x + b。由于您只需要对角线,因此有效斜率限制为1和-1。然后你只需要定义通过兴趣点的直线,并测试所讨论的点是否满足m = -1 or m = 1的一个等式。由于斜率已知,因此您只需要一个点来定义直线。

public bool func(int[] knownPt,int xTest, int yTest)
{
      //knownPt is int[]{x,y}
      // y = m*x + (yi - xi)
      return yTest== xTest + knownPt[1] - KnownPt[0] || yTest == -xTest +knownPt[1] + KnownPt[0];

 }

这里的步骤是m = -1

 yi = -xi + b

 yi + xi  = b 

 since b = yi + xi

 y = -x + (yi + xi)