Как создать то, что принимает одну точку и список всех точек и возвращает список точек, которые достаточно близки к исходной точке или к достаточно близкой точке.C# - создание групп точек
Если вы до сих пор не может понять меня вот картина:
Я пробовал:
int range = 6;
public List<IntPoint> getClosePoints(ref Dictionary<IntPoint,bool> allPoints,IntPoint startingPoint) {
List<IntPoint> closePoints = new List<IntPoint>();
closePoints.Add(startingPoint);
bool gotBigger = true;
while (gotBigger) {
gotBigger = false;
foreach (IntPoint proven in closePoints.ToList()) {
foreach (IntPoint possible in allPoints.Keys.ToList()) {
if (isInRange(proven,possible,range) && !allPoints[possible]) {
gotBigger = true;
closePoints.Add(possible);
allPoints[possible] = true;
}
}
}
}
return closePoints;
}
public bool isInRange(IntPoint A, IntPoint B, int range){
if(A.DistanceTo(B) < range)
return true;
return false;
}
(IntPoint
является похож на Point
, это от AForge
, все очки имеют bool
значение false) Но это делает мою программу супер-лаги, учитывая, что она называется тысячей раз в цикле. :/(А также, кажется, не работать)
Показать * что-то * вы попробовали. –
@sbouaked Они просто должны быть в радиусе от 2 единиц. Неважно, насколько далеко они находятся в этом диапазоне. – Valli3
OMG ... мои глаза ...... –