2013-11-30 20 views
1

Здравствуйте, у меня небольшие проблемы с этим аспектом в моем коде, над которым я работаю. Он имеет дело с точками и возвращает true или нет, если он диагонален другим точкам в моем списке элементов списка. Здесь мой код до сих пор:Проверка наличия точек по диагонали

private List<Point> point; 

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

Вот подсказка: как бы вы сделали это на бумаге, если вы сравнивали две точки на плоскости X-Y? Вы проверили бы, если наклон равняется определенному значению. –

+0

Это хороший способ сделать это! Если бы вы написали это как ответ, я бы удалил мой. – Floris

+1

oh ok Я вижу, что вы сказали спасибо, позвольте мне написать код для этого и вернуться к вам через секунду –

ответ

3

Одно примечание: ваш график имеет ваш y вверх дном из того, как массив хранит его.

Вы можете рассматривать ваши индексы как точки на графике. Чтобы найти то, что попадает на диагональ, используйте форму перехвата наклона. 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) 
Смежные вопросы